1.载入PEID
ACProtect v1.35 -> risco software Inc. & Anticrack Soft
2.载入OD,需要注意的是,异常选项除了[内存访问异常]外其他全部勾选上,然后shift+F9运行至最后一次异常,是1次之后。第二次程序就跑飞了
00436000 > 60 pushad ; //入口 00436001 7C 03 jl short QQ个性签.00436006 00436003 7D 01 jge short QQ个性签.00436006 00436005 71 0B jno short QQ个性签.00436012 00436007 C2 66C1 retn 0xC166 0043600A D29E FC4566D3 rcr byte ptr ds:[esi-0x2C99BA04],> 00436010 D27403 75 sal byte ptr ds:[ebx+eax+0x75],cl 00436014 0177 66 add dword ptr ds:[edi+0x66],esi
3.落脚点,落脚后右键点堆栈窗口SE句柄—数据窗口跟随—数据窗口第一行下内存访问断点然后shift+F9
00447B1F CD 01 int 0x1 ; //落脚点 00447B21 40 inc eax 00447B22 40 inc eax 00447B23 0BC0 or eax,eax 00447B25 75 05 jnz short QQ个性签.00447B2C 00447B27 90 nop 00447B28 90 nop 0012FF44 00447B03 SE处理程序 //堆栈窗口 00447B03 0C245C8B //数据窗口第一行
4.落脚点,在落脚点下F2断点,然后shift+F9
00447B03 8B5C24 0C mov ebx,dword ptr ss:[esp+0xC] ; //落脚点 00447B07 8383 B8000000 0>add dword ptr ds:[ebx+0xB8],0x2 00447B0E 33C0 xor eax,eax 00447B10 C3 retn 00447B11 64:67:FF36 0000 push dword ptr fs:[0] 00447B17 64:67:8926 0000 mov dword ptr fs:[0],esp
5.落脚点,继续在这里下F2断点,然后shift+F9运行
00447B53 8B048E mov eax,dword ptr ds:[esi+ecx*4] ; //落脚点 00447B56 8B5C8E 04 mov ebx,dword ptr ds:[esi+ecx*4+0> 00447B5A 2BC3 sub eax,ebx 00447B5C C1C0 07 rol eax,0x7 00447B5F 33C2 xor eax,edx 00447B61 81C2 4B3DF129 add edx,0x29F13D4B
6.落脚点,先清除刚刚下的2个F2断点和1个内存访问断点,然后在最近的retn处F4
00447B67 89048E mov dword ptr ds:[esi+ecx*4],eax ; //落脚点 00447B6A 49 dec ecx 00447B6B ^ EB E1 jmp short QQ个性签.00447B4E 00447B6D 61 popad 00447B6E 61 popad 00447B6F C3 retn ; //F4 00447B70 0000 add byte ptr ds:[eax],al
7.接下来到显示内存窗口,在00401000处下F2断点然后shift+F9运行,这个时候加壳程序就跑起来了,弹出那个ACProtect的提示窗,不用管,直接点确定
Memory map, 条目 14 地址=00401000 大小=0002B000 (176128.) 属主=QQ个性签 00400000 区段=.text 包含=代码 类型=Imag 01001002 访问=R 初始访问=RWE
8.直接来到OEP,可以脱壳了,使用LoadPE+ImportREC脱壳即可
004012D4 68 54474000 push QQ个性签.00404754 ; //OEP 004012D9 E8 F0FFFFFF call QQ个性签.004012CE ; jmp 到 msvbvm60.ThunRTMain 004012DE 0000 add byte ptr ds:[eax],al 004012E0 0000 add byte ptr ds:[eax],al 004012E2 0000 add byte ptr ds:[eax],al 004012E4 3000 xor byte ptr ds:[eax],al 004012E6 0000 add byte ptr ds:[eax],al 004012E8 48 dec eax ; kernel32.BaseThreadInitThunk 004012E9 0000 add byte ptr ds:[eax],al
9.运行查壳
运行OK,查壳:Microsoft Visual Basic v5.0/v6.0