Добрый день
Встала проблема гарантированного или почти гарантированного перехвата какйлибо API функции.Для примера взял вышеназванную ( так как перехват MessageBox просто лепет какойто) функцию и пытаюсь подхватить её в IEXPLORE.exe.
ТАк вот. Напрямую эта функция не входит в импорты IEXPLORE.exe.
Но один из модулей загружает ее. Проблема в том как мне обойти все модули когда они уже загружены и подправить таблицу импортов у каждого модуля? Неужели единственным способ являеться постановка хука на LoadLibrary? И можно (нужно) ли при этоп ставить хук на GetProcAddress?
На текущий момент едиственный гарантированный работающий способ это переписывать начало процедуры джампом в свой обработчик но у этого метода существенные недостатки.!.Он не универсален.2.Он не позволяет следить за моментом выхода из пропатченной функции.
Буду очень рад обсудить идеи особенно от авторов столь замечательных статей по АПИ хукингу которие я нашёл на этом сайте.
Просьба не переносить эту тему в соекеты и т.п. так как она больше относиться к этому форуму чем к сокетам.
12.02.04 15:03: Перенесено модератором из 'C/C++' — OE
Здравствуйте, zozan, Вы писали:
....
посмотри
здесь.
с помощью информации и програм, которые там есть, у меня получилось создать собственные версии библиотек kernel32.dll, user32.dll, advapi32.dll, gdi32.dll, каждая функция которых протоколировала свой вызов в лог.
Кстати, если твоя функция вызывается, когда все модули программы уже загружены, достаточно просто можно получить их (модулей) список и, пробежавшись по IAT'ам, установить свой хук.. тогда и не надо мучать LoadLibrary..
"..ты только посмотри на это деградирующее новое поколение, — даже "Момент", который они нюхают придумали до них!" (с) ZerG
Здравствуйте, Гарбузенко Алексей, Вы писали:
ГА>Здравствуйте, zozan, Вы писали:
ГА>....
ГА>посмотри здесь.
ГА>с помощью информации и програм, которые там есть, у меня получилось создать собственные версии библиотек kernel32.dll, user32.dll, advapi32.dll, gdi32.dll, каждая функция которых протоколировала свой вызов в лог.
ГА>Кстати, если твоя функция вызывается, когда все модули программы уже загружены, достаточно просто можно получить их (модулей) список и, пробежавшись по IAT'ам, установить свой хук.. тогда и не надо мучать LoadLibrary..
Вот и вопрос как пробежаться по всем IAT?...Рекусивно ака MakePtr(LPSTR, hModule, (PIMAGE_IMPORT_DESCRIPTOR)pImpDesc->Name) или ещё как?