나는 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로 전달하기 때문에이 경우를 처리해야합니다. –