Я пытался обнаружить крюк API, встроенный и EAT-крючок.Как обнаружить API-крючок?
На данный момент я не нашел ничего о том, как обнаружить крючок EAT.
Для Инлайн Ring 3 крючка, что я до сих пор:
FARPROC Address = GetProcAddress(GetModuleHandle("kernel32.dll"),"ExitProcess");
if (*(BYTE*)Address == 0xE9 || *(BYTE*)Address == 0x90 || *(BYTE*)Address == 0xC3)
{
printf("Api hooked\n");
}
Проблема заключается в том, что существует несколько опкодов, которые могут быть использованы для подключения/изменить вводные функции, проверка JMP/NOP/RET тривиально, я видел много типов HOOK, таких как PUSH RET, MOV, RETN и т. д.
Интересно, знает ли кто-нибудь, как обнаружить эти крючки (обходные пути) или модификации API. А также способ обнаружения крюка EAT.
спасибо.
Если кто-то подключил вашу программу, то они могут подключить ваш детектор крюка. –
Ну, очевидный способ проверить, была ли загружена таблица экспортных адресов, состоит в том, чтобы увидеть, находится ли какой-либо из адресов в таблице где-то вне библиотеки DLL, к которой принадлежит EAT. Хотя, я считаю, что некоторые стандартные DLL пересылают некоторые функции в другие DLL через EAT, поэтому вам придется обрабатывать этот случай. –