![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Общая задача: написать что-то вроде FileMon'а, который перехватывает все обращения к любым файлам. Перехватываю api функции сплайсингом. Сначала пробовал с FindFirst, FindNext, но ничего путного не вышло, все-таки они не всегда используются при обращении к файлам. Стал пробовать перехватывать ZwQueryDirectoryFile, но возникла такая куча проблем... У меня есть функции
которая представляет собой "настоящую" функцию. Есть
которая является "подменной" функцией. Какая-то из них не работает, т.е. вызов api перехватывается, но его подмена не происходит, и процесс, который вызвал ZwQueryDirectoryFile вылетает. В чем дело? P.S. есть предположения, что надо записывать какую-то инфу в параметры FileInformation и IoStatusBlock, но какую -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
DoZENT, Во первых, как ты устанавливаешь перехват? Какие функции для этого используешь и.т.д
Во вторых, если ты хочешь перехватывать именно ВСЕ обращения то тебе придется писать драйвер В третьих, покажи код DLL которую ты внедряешь в процеесс |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Если процесс вылетает значит ошибка в функциях перехвата, т.е. происходит недопустимая операция и исключение. Смотри адрес по которому вылетает, грузи программу в отладчик и изучай, что творится по этому адресу и к какой функции она принадлежит.
Ты внимательно прочёл статью MsRem по перехвату? На первый взгляд только вот это глаз режет:
Вызывай NewZwQueryDirectoryFile. И покажи как перехват ставишь. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Наверное ты не понял механизма перехвата. В функции TrueZwQueryDirectoryFile я сначала устанавливаю оригинальный адрес входа в функцию ZwQueryDirectoryFile, потом вызываю ZwQueryDirectoryFile, потом устанавливаю "мой" адрес точки входа, чтобы при вызове этой ф-и вызывалась NewZwQueryDirectoryFile Перехват делаю так:
Нужно перехватывать обращения, которых хватит для того, чтобы при надобности скрыть файл. Я думаю ZwQueryDirectoryFile будет достаточно Это сообщение отредактировал(а) DoZENT - 6.1.2007, 19:12 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||||
|
|||||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Этот механизм я уже выучил наизусть -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Все-таки хотелось бы найти путь попроще. есть предположения, что надо записывать какую-то инфу в параметры FileInformation и IoStatusBlock, но какую
Я заметил ;) Длл сначала не выгружалась из памяти, MsRem забыл, что для создания хука он создает отдельный поток, поэтому обрабатывать надо не только DLL_PROCESS_DETACH, но и DLL_THREAD_DETACH. Это сообщение отредактировал(а) DoZENT - 7.1.2007, 11:43 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
DLL_THREAD_DETACH обрабатывать не надо. Где написано что он создает отдельный поток для перехвата? DoZENT, я использовал его модули для перехвата и работали они безупречно Я перехватывал FindFirst, FindNext и все тоже работало безупречно. Почитай статьи на wasm.ru по перехвату, если что то не понятно, милости просим |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Нет тут пути попроще, нужно отлаживать.
Зачем туда что-то класть твоей функции перехватчику? Если без перехвата программа не падает, а с перехватом падает, то эти параметры тут совсем не причём. К слову, о каких модулях речь? Если advApiHook, то там сплайсинг реализован иначе, чем в примерах к статьям. Кстати, гораздо более удачно. И ещё о каких статьях ты говоришь? По перехвату по-моему лучшими статьями на васме являются как раз статьи MsRem, ну можно ещё у Рихера неплохую информацию найти. Статьи 90211 уже достаточно устерели, да и в них нет того, чего бы не было в статьях Рема. Это сообщение отредактировал(а) W4FhLF - 7.1.2007, 15:33 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
А это что?
Если его не обрабатывать, то dll не выгружается из памяти. Так было у меня. Даже Delphi при следующей компиляции писала, что не может перезаписать dll, т.к. она используется. Добавлено @ 15:50
Вообще-то я этот модуль не юзал, но надо будет попробовать -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||||||
|
|||||||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
Я про него и говорю О 3х статьях MsRem'a которые на wasm.ru Его не надо обрабатывать, надо обрабатывать DLL_PROCESS_DETACH Вот пример простого перехвата с использованием AdvApiHook
Это сообщение отредактировал(а) bartram - 7.1.2007, 16:10 |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Блин. Еще раз. Если обрабатывать ТОЛЬКО его, то dll из памяти У МЕНЯ не выгружается. Я обрабатываю и его и DLL_THREAD_DETACH
Дык я то же самое делаю, но без этой библиотеки. Попробую ночью ее поюзать, отпишусь. -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
||||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
FreeLibrary ест-но Это сообщение отредактировал(а) DoZENT - 7.1.2007, 21:30 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Перехватывать я умею и без библиотек. Что делать в "новой" функции -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
вот:
смекаешь? |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |