下面的过程是按脱服务端的过程写的.
已知:
1.这个是2次加密的,不会用SDK.
2.VC编译的
step0.抹掉TLS表
用lord-PE把数据目录(Directories)中TLS一项全部置0,然后save.
注意:不能把TLS CALLBACK ADDRESS 和TLS CALLBACK INDEX置0 !!!!(why?I Don’t Know)
BTW:这个"秘密"是forgot广播的.
step1.
经过step0后,就不用设置让OD停在系统断点了(设置停在EP).而且TLS中的"飞刀"也不用管了.但是还需要一个"核武器"----advencedolly插件.加上这个插件,EXEC的anti可以全过.
但是,本次脱壳用hideOD就可以了,因为我们没有KEY,无法跑到后面,也不需要跑到后面.所以很多anti是没有用的.
step2.
步骤其实很简单,经过上面的准备后.用OD载入,忽略所有异常:
0BB8CE4E > E8 F7FEFFFF call 0BB8CD4A
0BB8CE53 05 07480000 add eax, 4807
0BB8CE58 FFE0 jmp eax
0BB8CE5A E8 EBFEFFFF call 0BB8CD4A
0BB8CE5F 05 9F6A0000 add eax, 6A9F
0BB8CE64 FFE0 jmp eax
0BB8CE66 E8 04000000 call 0BB8CE6F
0BB8CE6B FFFF ??? ; 未知命令
0BB8CE6D FFFF ??? ; 未知命令
0BB8CE6F 5E pop esi
0BB8CE70 C3 retn
然后
1.HE GetProcAddress
2.F9
3.HD GetProcAddress
4.alt+f9
现在我们到了填充IAT的地方了:
0BB8CBE7 55 push ebp
0BB8CBE8 8BEC mov ebp, esp
0BB8CBEA 83C4 F4 add esp, -0C
0BB8CBED 56 push esi
0BB8CBEE 57 push edi
0BB8CBEF 53 push ebx
0BB8CBF0 BE 00F0AD0A mov esi, 0AADF000
0BB8CBF5 B8 00004000 mov eax, 00400000
0BB8CBFA 8945 FC mov dword ptr ss:[ebp-4], eax
0BB8CBFD 89C2 mov edx, eax
0BB8CBFF 8B46 0C mov eax, dword ptr ds:[esi+C]
0BB8CC02 09C0 or eax, eax
0BB8CC04 0F84 8E000000 je 0BB8CC98
0BB8CC0A 01D0 add eax, edx
0BB8CC0C 89C3 mov ebx, eax
0BB8CC0