Kak гарантированно поставить хук к примеру на WSASendTo?
От: zozan  
Дата: 12.02.04 11:28
Оценка:
Добрый день


Встала проблема гарантированного или почти гарантированного перехвата какйлибо API функции.Для примера взял вышеназванную ( так как перехват MessageBox просто лепет какойто) функцию и пытаюсь подхватить её в IEXPLORE.exe.


ТАк вот. Напрямую эта функция не входит в импорты IEXPLORE.exe.
Но один из модулей загружает ее. Проблема в том как мне обойти все модули когда они уже загружены и подправить таблицу импортов у каждого модуля? Неужели единственным способ являеться постановка хука на LoadLibrary? И можно (нужно) ли при этоп ставить хук на GetProcAddress?

На текущий момент едиственный гарантированный работающий способ это переписывать начало процедуры джампом в свой обработчик но у этого метода существенные недостатки.!.Он не универсален.2.Он не позволяет следить за моментом выхода из пропатченной функции.

Буду очень рад обсудить идеи особенно от авторов столь замечательных статей по АПИ хукингу которие я нашёл на этом сайте.


Просьба не переносить эту тему в соекеты и т.п. так как она больше относиться к этому форуму чем к сокетам.

12.02.04 15:03: Перенесено модератором из 'C/C++' — OE
Re: Kak гарантированно поставить хук к примеру на WSASendTo
От: Гарбузенко Алексей Украина http://bast.kiev.ua
Дата: 12.02.04 11:46
Оценка: 1 (1)
Здравствуйте, zozan, Вы писали:

....


посмотри здесь.

с помощью информации и програм, которые там есть, у меня получилось создать собственные версии библиотек kernel32.dll, user32.dll, advapi32.dll, gdi32.dll, каждая функция которых протоколировала свой вызов в лог.

Кстати, если твоя функция вызывается, когда все модули программы уже загружены, достаточно просто можно получить их (модулей) список и, пробежавшись по IAT'ам, установить свой хук.. тогда и не надо мучать LoadLibrary..
"..ты только посмотри на это деградирующее новое поколение, — даже "Момент", который они нюхают придумали до них!" (с) ZerG
Re[2]: Kak гарантированно поставить хук к примеру на WSASen
От: zozan  
Дата: 12.02.04 14:48
Оценка:
Здравствуйте, Гарбузенко Алексей, Вы писали:

ГА>Здравствуйте, zozan, Вы писали:


ГА>....



ГА>посмотри здесь.


ГА>с помощью информации и програм, которые там есть, у меня получилось создать собственные версии библиотек kernel32.dll, user32.dll, advapi32.dll, gdi32.dll, каждая функция которых протоколировала свой вызов в лог.


ГА>Кстати, если твоя функция вызывается, когда все модули программы уже загружены, достаточно просто можно получить их (модулей) список и, пробежавшись по IAT'ам, установить свой хук.. тогда и не надо мучать LoadLibrary..


Вот и вопрос как пробежаться по всем IAT?...Рекусивно ака MakePtr(LPSTR, hModule, (PIMAGE_IMPORT_DESCRIPTOR)pImpDesc->Name) или ещё как?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.