EAT与IAT比较类似,我相信会IAT的肯定很多,起初我想写在C#上面 不过与
C# 遍历DLL导出函数 的方法很相似,只是两者在内存中的映射方式不同而已
Heh,首先我们需要把DLL映射到地址内存空间去 否则没有办法去置换函数,
当然EAT有一些缺点,它必须在软件调用GetProcAddress函数之前替换DLL中
的函数,所以则出现了对GetProcAddress函数的一个Hook,否则只可改变
GetProcAddress返回的内容、是不是感到很惆怅
EAT全称为“Export address table”其核心则是利用PE与DLL的一些相关特性
实现的一个技术 首先我们通过LoadLibraryA函数把一个有效的DLL映射到内
存中,PE文件中第一个字节是MS-DOS信息头即IMAGE_DOS_HEADER
IMAGE_NT_HEADER = (pDosHearder + pDosHearder->e_lfanew);
// IMAGE_NT_HEADER::OptionalHeader
pOptionalHeader = (pDosHearder + pDosHearder->e_lfanew + 24);
上面是x86的一个OptionalHeader的对称,这里是不想再多做一次转换直接
跳过去会很快捷、所以加上24但恰