![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
С ExitProcess и его одним параметром какнить сам разобрался бы. Кто-нибудь может привести ПРИМЕР перехвата ZwQueryDirectoryFile Это сообщение отредактировал(а) DoZENT - 8.1.2007, 19:16 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
DoZENT, я тебе пример дал, сделай по примеру. Структура описанная тем более у тебя есть. Если что то не получается спрашивай, по коду будет проще понять что у тебя не получается и что ты хочешь сделать
|
|||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
ОК, вот весь код:
Кое-что подправил, теперь процесс, вызывающий функцию не завершается, но не может найти ни одного файла (например total commander выдает только список дисков, но зайти в них не может). -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Сори за возможный оффтоп.
DoZENT, а у тебя OutPost случаем не стоит? (из последних версий 4) А то у меня проблемы с перехватом возникли после очередного обновления. При включенном файрволе при попытке перехвата целевое приложение вылетало с ошибкой. После отключения бока исчезали. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Блин, да сколько можно говорить, чтобы ты попробовал отладить процесс? Чё гадать и как дурак тыкать пальцем в небо? Посмотри как и что происходит, локализуй ошибку и исправь её.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Нет, KIS Forever
Каким образом отлаживать? Если ты имеешь в виду установку прерывания, то на ZwQueryDirectoryFile брейкпойнт на ставится, т.к. это недокументированная ф-я. Это сообщение отредактировал(а) DoZENT - 9.1.2007, 17:32 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
ZwQueryDirectoryFile является переходником к ядерной функции и экспортируется из ntdll.dll, именно это тебе позволяет перехватывать её таким методом, и именно это позволит отладить этот процесс. Берёшь любой отладчик, я обычно использую OllyDBG, загружаешь в неё приложение в которое будет проинжектирована твоя dll и в "Опции > Опции отладки > Events" ставишь галку на "Break on new module (DLL)", далее инжектируешь dll в процесс и прерываешься на процедуре DLLEntryPoint, трейсишь установку хуков, смотришь всё ли в порядке, далее ставишь бряк на ZwQueryDirectoryFile(bp ZwQueryDirectoryFile) и пускаешь программу дальше. Когда программа вызовет эту функцию ты прервёшься на её начале, где будет стоять прыжок(push @ZwQueryDirectoryFile / retn) на процедуру NewZwQueryDirectoryFile. Заходишь в эту процедуру, трейсишь и смотришь правильно ли всё происходит, тем самым ты сможешь проконтролировать весь процесс установки перехвата и его срабатывания. Это сообщение отредактировал(а) W4FhLF - 9.1.2007, 20:18 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Я использую сплайсинг, поэтому dll не будет проинжектированна в процесс. Или я что-то неправильно понимаю? Это сообщение отредактировал(а) DoZENT - 9.1.2007, 20:56 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
как думаешь, зачем у тебя SetWindowsHookEx используется? - как раз для подгрузки dll во все процессы. а подгрузившись, ты уже устанавливаешь хук на ZwQueryDirectoryFile(изменения, вносимые WriteProcessMemory локальны для каждого процесса). |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Почитал MSDN, понял, спасибо
? -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Протрассировал процесс, не нашел ничего подозрительного. Хуки расставляются правильно, происходит вызов ZwQueryDirectoryFile, функцией возвращается какое-то числовое значение, и происходит вызов GetLastError... Ладно, буду копаться дальше
-------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Это инжектирование DLL в один отдельно взятый процесс. Ну а что делает код и так должно быть понятно. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
||||
|
||||
| MetalFan |
|
||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
ммм... не нравится этот момент. а что, если другое приложение так-же поставила глоб.хук на GetMessage? в MSDN вот что сказано по этому поводу:
может это и не то... но все-таки -------------------- There are always someone smarter than you... |
||||
|
|||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
||||
|
||||
![]()
|
| Правила форума "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. |