防IAT检测方法:IAT在指定目标文件的PE结构里面指定了的,我们把自己内存里面做了修改,没有修改目标文件,只要不让目标文件被其他文件映射,读取PE结构和我们内存中修改过的比较,保证能反一切IAT检测。
用法:
代码:
Ho (hMod,TRUE,IMAGE_DIRECTORY_ENTRY_IMPORT,&Size);
////改写内存保护,以便转换大小写
VirtualQuery(pImport,&mbi,sizeof(MEMORY_BASIC_INFORMATION));
VirtualProtect(,,PAGE_READWRITE,&);
while(pImport->Name)
{
char *pszModName=(char*)((PBYTE)hMod+pImport->Name);
if(_stricmp(pszModName,szDLL)==0)
{
break;
}
pImport++;
}
VirtualProtect(,,,&protect);
////改写内存保护结束,改回原来的保护
DWORD RealAddr=(DWORD)GetProcAddress(LoadLibrary(szDLL),szName);
if(pImport==NULL)
{
return FALSE;
}
IMAGE_THUNK_DATA32 *Pthunk=(IMAGE_THUNK_DATA32*)((DWORD)hMod+pImport->FirstThunk);
////改写内存保护,以便写入函数地址
VirtualQuery(Pthunk,&mbi,sizeof(MEMORY_BASIC_INFORMATION));
VirtualProtect(,,PAGE_READWRITE,&);
while(Pthunk->)
{
if(RealAddr==Pthunk->)
{
Pthunk->=Newfunc;
break;
}
Pthunk++;
}
VirtualProtect(,,,&protect);
////改写内存保护,改回原来的保护
return TRUE;
}
/**************************************
IAT随便HOOK反检测方法 来自淘豆网www.taodocs.com转载请标明出处.