ASProtect 1.23RC4  是ASProtect发展的一个重要里程碑,而且是经常偷代码的其中一个壳,现在对他进行脱壳,补充OEP头。
菜鸟第一贴,请各大虾把不对的地方指出,本人水平有限,表达能力有限,望谅解。好,现在开现:
1、首先在选项设置一下,隐藏一下OD,采用最后一次异常法去脱

2、SHIFT+F9运行
(第17次跑飞,第16次为最后一次异常,重裁)
其实对这个壳不数次数也可以,当出现如下特征码,即证明为最后一次异常
je 
。。。。
。。。。
CALL
。。。。
。。。。
je
。。。。
。。。。
retn     

3、在RETN外F2下断,SHIFT+F9运行到此,F2取消断点

4、此时观察堆栈窗口,用数值为00400000下面的第二个地址下硬件断点
HR 0012FF30

5、下好断点后,SHIFT+F9运行,断在下面地方,之后F8单步走

6、来到papad后跟一个jmp时,改用F7单步进去

7、跳到下面地址,此时开始追踪被偷代码

F7继续单步走

来到此处发现第一外被偷代码
第一处被偷代码找到
021068DD    896C24 00            mov dword ptr ss:[esp],ebp
021068E1    8BEC                 mov ebp,esp
021068E3    6A FF                push -1
021068E5    68 E0984000          push 4098E0
021068EA    68 AC664000          push 4066AC                        ; jmp 到
021068EF    64:A1 00000000       mov eax,dword ptr fs:[0]
记录下来,继续F7走

第二处被偷代码找到
0210691D    894424 00            mov dword ptr ss:[esp],eax
02106921    64:8925 00000000     mov dword ptr fs:[0],esp
02106928    83EC 68              sub esp,68
记录下来,继续F7走

第三处被偷代码找到
02106953    895C24 00            mov dword ptr ss:[esp],ebx
记录下来,继续F7走

第四处被偷代码找到
0210697F    897424 00            mov dword ptr ss:[esp],esi
记录下来,继续F7走

第五处被偷代码找到
021069AB    897C24 00            mov dword ptr ss:[esp],edi
021069AF    8965 E8              mov dword ptr ss:[ebp-18],esp
021069B2    33DB                 xor ebx,ebx
021069B4    895D FC              mov dword ptr ss:[ebp-4],ebx
021069B7    6A 02                push 2
记录下来,继续F7走

此时被偷代码全部找到,F8走

此处跳去OEP

到达OEP

7、开始补回OEP头
记录下来的被偷代码如下:
第一处被偷代码
021068DD    896C24 00            mov dword ptr ss:[esp],ebp
021068E1    8BEC                 mov ebp,esp
021068E3    6A FF                push -1
021068E5    68 E0984000          push 4098E0
021068EA    68 AC664000          push 4066AC                        ; jmp 到
021068EF    64:A1 00000000       mov eax,dword ptr fs:[0]
第二处被偷代码
0210691D    894424 00            mov dword ptr ss:[esp],eax
02106921    64:8925 00000000     mov dword ptr fs:[0],esp
02106928    83EC 68              sub esp,68
第三处被偷代码
02106953    895C24 00            mov dword ptr ss:[esp],ebx
第四处被偷代码
0210697F    897424 00            mov dword ptr ss:[esp],esi
第五处被偷代码
021069AB    897C24 00            mov dword ptr ss:[esp],edi
021069AF    8965 E8              mov dword ptr ss:[ebp-18],esp
021069B2    33DB                 xor ebx,ebx
021069B4    895D FC              mov dword ptr ss:[ebp-4],ebx
021069B7    6A 02                push 2
对代码处理一下:
每一处第一个代码命令改为PUSH,修改后为:
Push ebp
mov ebp,esp
push -1
push 4098E0
push 4066AC
mov eax,dword ptr fs:[0]
Push eax
mov dword ptr fs:[0],esp
sub esp,68
Push ebx
Push esi
Push edi
mov dword ptr ss:[ebp-18],esp
xor ebx,ebx
mov dword ptr ss:[ebp-4],ebx
push 2
此时开始修复OEP

选定上面一段JMP以下的空代码NOP掉


回补刚才记录下来的代码

回补完成后在PUSH ebp处新建EIP

此时OEP完全修复完成,脱壳。脱壳就不说了。

附上原程序:
Mp3Cutter.rar