声明:
1.只为纪录自己成长历程,高手勿喷
2.您的热心是新手持续发帖的动力
首先说明一下,之前发过一篇同样的帖子,是图文的,但是今天回顾下来发现之前的帖子不是很明朗,一些操作说的不叫模糊,http://www.52pojie.cn/thread-419145-1-1.html,如果可以希望版主可以把之前那个帖子删掉,个人有点小强迫症,做事比较追求完美。
1.载入PEID
ACProtect V2.0 -> risco
2.载入OD
[Asm] 纯文本查看 复制代码 00401000 > 68 00A04000 push ACP_Feed.0040A000 ; //入口点
00401005 68 0B104000 push ACP_Feed.0040100B
0040100A C3 retn
0040100B C3 retn
0040100C 858A 1D04802F test dword ptr ds:[edx+2F80041D],ecx
00401012 - 77 82 ja short ACP_Feed.00400F96
00401014 EE out dx,al
3.命令行输入:"bp GetCurrentProcessId",然后shift+F9运行,落脚点在这个位置
[Asm] 纯文本查看 复制代码 7C8099B0 > 64:A1 18000000 mov eax,dword ptr fs:[18] ; //落脚点
7C8099B6 8B40 20 mov eax,dword ptr ds:[eax+20]
7C8099B9 C3 retn
7C8099BA 90 nop
7C8099BB 90 nop
4.先取消刚刚下的断点(Bp就是下断的意思),然后打开LoadPE,查看OD载入的这个程序的进程号也就是PId。我这里是"00000254",可能不同的机器或者系统打开后显示的不同。
5.然后把步骤三中的代码进行修改,修改落脚点代码,把"mov eax,"后面的那个值改为步骤四中的Pid的值,然后把把原先落脚点下一行的mov代码整个给nop掉。修改完成后的代码变为下图这样:
[Asm] 纯文本查看 复制代码 7C8099B0 > B8 54020000 mov eax,254 ; //落脚点
7C8099B5 90 nop
7C8099B6 90 nop
7C8099B7 90 nop
7C8099B8 90 nop
7C8099B9 C3 retn
7C8099BA 90 nop
7C8099BB 90 nop
6.步骤五执行完之后下第二个断点"BP GetModuleHandleA",然后shift+F9,落脚点应该是这个位置
[Asm] 纯文本查看 复制代码 7C80B731 > 8BFF mov edi,edi ; //落脚点
7C80B733 55 push ebp
7C80B734 8BEC mov ebp,esp
7C80B736 837D 08 00 cmp dword ptr ss:[ebp+8],0
7C80B73A 74 18 je short kernel32.7C80B754
7C80B73C FF75 08 push dword ptr ss:[ebp+8]
7.取消断点,打开内存界面,在401000的位置下断点然后shift+F9运行,此时会弹出ACProtect的提示框,点一下确定就可以
[Asm] 纯文本查看 复制代码 Memory map, 项目 22
地址=00401000
大小=00002000 (8192.)
属主=ACP_Feed 00400000
区段=CODE
包含=SFX,代码
类型=映像 01001002
访问=R
初始访问=RWE
8.点完确定后就直接来到OEP了,然后使用LoadPE+ImportREC脱壳即可
[Asm] 纯文本查看 复制代码 00402150 55 push ebp ; //OEP
00402151 8BEC mov ebp,esp
00402153 83C4 F0 add esp,-10
00402156 53 push ebx
00402157 B8 10214000 mov eax,ACP_Feed.00402110
0040215C E8 4FFCFFFF call ACP_Feed.00401DB0
00402161 68 C4214000 push ACP_Feed.004021C4 ; ASCII "ACProtect Feedback Form"
00402166 6A 00 push 0
00402168 6A 00 push 0
9.运行查壳
运行OK,查壳:Borland Delphi v3.0
|