IAT的加密的手动查找
2009-06-05 16:55:22 来源:WEB开发网0101CEDC 85C0 test eax,eax
0101CEDE 75 0A jnz short UnpackMe.0101CEEA
0101CEE0 B9 0B0000EF mov ecx,EF00000B
0101CEE5 E8 482B0000 call UnpackMe.0101FA32
0101CEEA 8B4D 08 mov ecx,dword ptr ss:[ebp+8]
0101CEED 8B55 F8 mov edx,dword ptr ss:[ebp-8]
0101CEF0 8B02 mov eax,dword ptr ds:[edx]
0101CEF2 8901 mov dword ptr ds:[ecx],eax==========*****注意此时的提示窗口
0101CEF4 8D4D F4 lea ecx,dword ptr ss:[ebp-C]
0101CEF7 51 push ecx
0101CEF8 8B55 F0 mov edx,dword ptr ss:[ebp-10]
0101CEFB 52 push edx
0101CEFC 6A 04 push 4
0101CEFE 8B45 08 mov eax,dword ptr ss:[ebp+8]
0101CF01 50 push eax
0101CF02 FF15 2C870201 call dword ptr ds:[102872C] ; kernel32.VirtualProtect
0101CF08 C745 FC 01000000 mov dword ptr ss:[ebp-4],1
0101CF0F 8B45 FC mov eax,dword ptr ss:[ebp-4]
0101CF12 8BE5 mov esp,ebp
0101CF14 5D pop ebp
0101CF15 C3 retn
单步到此时:
0101CEF2 8901 mov dword ptr ds:[ecx],eax==========*****注意此时的提示窗口
//eax=01021D46 (UnpackMe.01021D46)
//ds:[010010B0]=7C810C6D (kernel32.GetFileInformationByHandle)
将正确的IAT地址用01021D46替换了,我们NOP掉,修改后如下图:
然后我们取消所有的断点,Ctrl+G来到OEP:0100739D,F2下断后,F9运行到OEP后,取消断点,再用ImportREC看一下:
获取IAT表后,有一无效的指针,那就是:GetProcAddress
手工修复一下,DUMP出程序,然后修复、运行,OK!
更多精彩
赞助商链接