私はAPIフック、インライン、EATフックを検出しようとしています。APIフックを検出するにはどうすればよいですか?
今のところ、EATフックを検出する方法については何も見つかりませんでした。
私がこれまで持っているもののインラインリング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をチェックし、機能のプロローグを変更/フックするために使用することができますいくつかのオペコードがあるということです私はPUSH RET、MOV、RETNなどのフックタイプをたくさん見てきました。
APIでこれらのフック(迂回路)や修正を検出する方法が分かっているのでしょうか。 EATフックを検出する方法もあります。
ありがとうございます。
誰かがプログラムをフックした場合、フック検出器をフックできます。 –
エクスポートアドレステーブルがフックされているかどうかを確認する明白な方法は、テーブル内のいずれかのアドレスが、EATが属するDLLの外のどこかを指しているかどうかを確認することです。しかし、いくつかの標準DLLはいくつかの関数をEATを介して他のDLLに転送すると考えています。だから、この場合は処理する必要があります。 –