Перехват IAT / EAT "gethostbyname" - PullRequest
       27

Перехват IAT / EAT "gethostbyname"

2 голосов
/ 11 ноября 2010

Я написал этот код для перехвата функций API путем изменения адреса в IAT и EAT: http://pastebin.com/7d9N1J2c

Это прекрасно работает, когда я хочу подключить "recv" или "connect". Однако по какой-то неизвестной причине при попытке перехватить «gethostbyname» моя функция перехвата никогда не вызывается.

Я попытался найти «gethostbyname» в отладчике, взяв базовый адрес модуля wsock32.dll + 0x375e, что и показывает порядковый номер 52 моего wsock32.dll в качестве смещения. Но это просто заставляет меня оказаться в некотором случайном ассемблерном коде, а не в начале функции. Однако тот же метод отлично работает при попытке найти точку входа «recv».

Кто-нибудь видит, что я могу делать неправильно?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Я рекомендую этот инструмент: http://www.moduleanalyzer.com/

Они делают то же самое и показывают URL, который был связан с этим API. Проблема в том, что существует более одного API для преобразования URL-адреса в адрес. Приложение, которое вы подключаете, может использовать другую версию API, которую вы не перехватываете.

1 голос
/ 11 ноября 2010

Запустите некоторый дизассемблер, такой как IDA, и присоедините его к своему процессу после того, как вы перехватите эти функции, ida получит изменения при подключении и процессе воспроизведения и проверит, что не так.

Другими словами, у вас есть много библиотек для ловли на батутах, таких как Microsoft Detours, NCodeHook и т. Д.

...