![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Flyhigh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Думал решить проблему доступа к файлам которые уже открыты другим процессом перехватом вызова CreateFileA, CreateFileW и поставить FILE_SHARED_READ. Не получилось
Когда эксперементировал с MS Word'ом понял, что после открытия могут быть вызваны LockFile, LockFileEx сделал перехват и этих функций, убрал блокирование вообще - не помогло. Также убедился, что при открытии файла не используется SECURITY_INFORMATION. Если кто занимался таким, то может подскажет что надо сделать еще что-б получить этот треклятый доступ? |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 3 Всего: 112 |
Где-то арсенале Delphi я накатал небольшую функцию, которая позволяет читать/писать файлы, открытые монопольно (эксклюзивно), но работает она только под NT'шные системы + нужны административные права... Суть в том, что она обращается не к файлу, а к диску... В принципе, это не очень хороший способ...
Всё-таки, правильнее делать через перехват функций... -------------------- С уважением, г-н Посол. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 3 Всего: 112 |
Также имеет смысл попробовать перехватывать NtCreateFile, NtOpenFile, NtLockFile...
Добавлено @ 14:52
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
А можно поинтересоваться для чего так извращаться ?
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| falcon785 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 11.8.2005 Где: Керчь Репутация: нет Всего: нет |
А ты уверен, что ядро ОС вообще даст такой доступ просто через WinAPI, если твой процесс пользовательского уровня, а управление разделяемыми ресурсами, в частности файлами, осуществляется на уровне ядра?
|
|||
|
||||
| Гость_man |
|
|||
|
Unregistered |
способы в порядке нарастания сложности (читай: "увеличения массы топора для заточки карандашей"):
1. DuplicateHandle (MapViewOfFile в случае мап-файлов) 2. Внедрение в процесс и чтение из файла (типа "я свой, дайте с файликом повозиться") 3. Чтение секторов с диска 4. Использования драйвера для первых двух случаев у меня есть утилита готовая (проверял на Outlook.pst и mssql\master.dbf) вопрос модератору: можно как-нить восстановить мой аккаунт старый man2002ua? или хоть грохнуть его, я пересоздам. |
|||
|
||||
| Flyhigh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Расскажи плиз поподробней об этом случае. Ты имеешь ввиду запустить свой поток в процессе и потом унаследовать handle файла? |
|||
|
||||
| Гость_man |
|
|||
|
Unregistered |
авжешь.
Основная проблема - как найти дескриптор файла, захваченного приложением ( NtQuerysystemInformation ). Потом внедренный поток может сделать дубликат дескриптора или использовать оригинальный дескриптор (последнее очень стремно, т.к. процесс может в это же время задумать поиграться с этим файлом тоже) |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |