您的位置:首页 > 职场人生

IAT HOOK的检测

2010-12-13 23:56 330 查看
IAT HOOK的检测

IAT HOOK的检测

在EXE加载前,IAT表中的结构和INT表中的结构内容一致,如果所示,OriginalFirstThunk指向INT中第一个IMAGE_THUNK_DATA,FirstThunk指向IAT中的第一个IMAGE_THUNK_DATA

IMAGE_THUNK_DATA中放着指向IMAGE_IMPORT_BY_NAME的指针



在程序装载完成之后,IAT中的数据进行了修改,内容改为相应的API函数地址,如图



进行检测时只需要读取IAT表中的数据,便可得到目标进程所调用的API地址
原始的地址,LoadLibrary GetProcAddress 经过换算可以得到





贴上相关的结构体
typedef struct _IMAGE_IMPORT_DESCRIPTOR {

union {

DWORD Characteristics; // 0 for terminating null import descriptor

DWORD OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA)

};

DWORD TimeDateStamp; // 0 if not bound,

// -1 if bound, and real date\time stamp

// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)

// O.W. date/time stamp of DLL bound to (Old BIND)

DWORD ForwarderChain; // -1 if no forwarders

DWORD Name;

DWORD FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)

} IMAGE_IMPORT_DESCRIPTOR;

typedef struct _IMAGE_THUNK_DATA32 {

union {

PBYTE ForwarderString;

PDWORD Function;

DWORD Ordinal;

PIMAGE_IMPORT_BY_NAME AddressOfData;

} u1;

} IMAGE_THUNK_DATA32;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 IAT HOOK