二、Magic Jump,避开IAT加密
取消以前断点,下断:BP GetModuleHandleA+5
77E59F93 837C24 04 00 cmp dword ptr ss:[esp+4],0
77E59F98 0F84 23060000 je kernel32.77E5A5C1//断在这,注意看堆栈
77E59F9E FF7424 04 push dword ptr ss:[esp+4]
77E59FA2 E8 55080000 call kernel32.77E5A7FC
77E59FA7 85C0 test eax,eax
77E59FA9 74 08 je short kernel32.77E59FB3
77E59FAB FF70 04 push dword ptr ds:[eax+4]
77E59FAE E8 B0060000 call kernel32.GetModuleHandleW
77E59FB3 C2 0400 retn 4
在这里中断十几次,然后Alt+F9返回程序。其实很好判断返回程序的时机。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
注意看BP GetModuleHandleA+5 时的堆栈变化:
0012D3AC 00C86622 返回到 00C86622 来自 kernel32.GetModuleHandleA
0012D3B0 0012D4E8 ASCII "kernel32.dll"
0012D3AC 00C86622 返回到 00C86622 来自 kernel32.GetModuleHandleA
0012D3B0 0012D4E8 ASCII "user32.dll"
0012D3AC 00C86622 返回到 00C86622 来自 kernel32.GetModuleHandleA
0012D3B0 0012D4E8 ASCII "MSVBVM60.DLL"
0012D3AC 00C86622 返回到 00C86622 来自 kernel32.GetModuleHandleA
0012D3B0 0012D4E8 ASCII "advapi32.dll"
0012D638 00C9C236 返回到 00C9C236 来自 kernel32.GetModuleHandleA ★OK
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
当堆栈如上变化后,就可以Alt+F9返回程序代码了。
上面是摘自你的《壹次脱壳法――Armadillo 双进程标准壳 快速脱壳》文章
我想问的是怎样才能知道是返回的好时机,因为我有个加这样壳的软件,我想脱了他,但找了很多个关于这个壳的文章还是脱不了,按照你的文章前面是令到软件单线程运行了,但后面那个就不知道如何做才能突破,请指教,可以的话请加我QQ68378246指教一下,谢谢~~~
[课程]FART 脱壳王!加量不加价!FART作者讲授!