您的位置:首页 > 其它

手脱ACProtect v1.35(无Stolen Code)之二

2015-11-15 22:21 197 查看
首先,想说明的是这个壳在我的PC上是可以用上一个帖子中的方法来到假的OEP的:http://www.52pojie.cn/forum.php?mod=viewthread&tid=433462&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline,可能跟系统版本有关。如果大家使用这个连接中的帖子无法来到假的OEP那么可以参考下下面的方法,对于比较难的壳,我们首先先掌握方法,脱得多了,自然而然也就会了。当然,对于抽取OEP代码的壳,我们首先要知道不同语言写出来的程序的入口点代码特征,大家可以参考:http://www.52pojie.cn/thread-421969-1-1.html1.载入PEID
ACProtectv1.35->riscosoftwareInc.&AnticrackSoftw
2.载入OD,异常选项不勾选INT3选项,隐藏OD,吾爱官方现在的OD隐藏OD在strongOD里面,还是使用最后一次异常法shift+F9一次,第二次就会跑飞了
004AC000>60pushad;//入口点
004AC0014Edecesi
004AC002D3D6rclesi,cl
004AC0044Edecesi
004AC00566:D3E8shrax,cl
004AC0084Edecesi
004AC0098BC3moveax,ebx
3.落脚点,落脚后在堆栈闯窗口右键单机SE句柄,然后选择[数据窗口跟随],然后右键选中数据窗口跟随的地方下内存访问断点,然后shift+F9一次
0012FF24004BAAF0SE处理程序//堆栈窗口SE句柄004BAAF00424448B//数据窗口跟随004BAB2390nop;//最后一次异常法落脚点004BAB2464:67:8F060000popdwordptrfs:[0]004BAB2A83C404addesp,0x4004BAB2D60pushad004BAB2EE800000000callNetClean.004BAB33004BAB335Epopesi004BAB3483EE06subesi,0x6004BAB37B95B000000movecx,0x5B
4.落脚点,在落脚点的位置下断点F2,然后shift+F9一次
004BAAF08B442404moveax,dwordptrss:[esp+0x4];//落脚点004BAAF48B4C240Cmovecx,dwordptrss:[esp+0xC]004BAAF8FF81B8000000incdwordptrds:[ecx+0xB8]004BAAFE8B00moveax,dwordptrds:[eax]004BAB002D03000080subeax,0x80000003004BAB057512jnzshortNetClean.004BAB19004BAB0790nop
5.落脚点,在落脚点的位置同样下断点F2然后shift+F9一次
004BAB4E8B048Emoveax,dwordptrds:[esi+ecx*4];//落脚点004BAB518B5C8E04movebx,dwordptrds:[esi+ecx*4+0>004BAB5503C3addeax,ebx004BAB57C1C80Eroreax,0xE004BAB5A2BC2subeax,edx004BAB5C81EAD41CF55Csubedx,0x5CF51CD4
6.落脚点,落脚后先清除两个F2断点,一个内存访问断点,然后找到下面最近的retn,F4运行到指定位置。
004BAB6289048Emovdwordptrds:[esi+ecx*4],eax;//落脚点004BAB6549dececx004BAB66^EBE1jmpshortNetClean.004BAB49004BAB6861popad004BAB6961popad004BAB6AC3retn;//F4004BAB6B0000addbyteptrds:[eax],al
7.到这里后就是脱壳的最佳时机了(如果想要看看假的OEP位置可以按照上一篇的脱壳法到内存界面401000下断点shift+F9运行过去看下).我们在命令行输入”d12ffc0”,据ximo大神讲,这是ACProtect壳的死穴,记着就好。输入完命令后回车,在数据窗口第一行下硬件断点,然后shift+F9运行一次(我在我的PC上下硬件断点程序会跑飞,我的是win7–32,悲催。还是老老实实用XP吧)
0012FFC000000000//数据窗口第一行
8.落脚点的位置就是被偷取代码的第一行,一共被偷取了三行代码,使用二进制把它复制出来
004C9B3155pushebp;//被偷取代码1004C9B328BECmovebp,esp;//被偷取代码2004C9B346AFFpush-1;//被偷取代码3004C9B3690nop004C9B3760pushad558BEC6AFF//二进制复制一共5个字节
9.点击来到内存窗口在401000位置下断点F2然后shift+F9一次来到假的OEP,向上找5个字节(如果向上拉的时候代码乱掉了就右键分析一下代码再向上拉)
004431F968D8B24400pushNetClean.0044B2D8;//假的OEP004431FE68B4334400pushNetClean.004433B40044320364:A100000000moveax,dwordptrfs:[0]0044320950pusheax0044320A64:89250000000>movdwordptrfs:[0],esp0044321183EC68subesp,0x68
10.如下,找到5个字节后选中并右键使用二进制粘贴
004431F48Cdb8C;//第1个字节004431F5.C3retn;//第2个字节004431F649db49;//第3个字节004431F72Edb2E;//第4个字节004431F879db79;//第5个字节004431F9.68D8B24400pushNetClean.0044B2D8;//假的OEP004431FE.68B4334400pushNetClean.004433B4SE处理程序安装00443203.64:A100000000moveax,dwordptrfs:[0]00443209.50pusheax0044320A.64:89250000000>movdwordptrfs:[0],esp00443211.83EC68subesp,68
11.在新的OEP位置右键新建EIP,然后可以先进行一下脱壳,当然脱壳后的程序是不能运行的。
004431F455pushebp;//此处新建EIP004431F58BECmovebp,esp004431F76AFFpush-0x1004431F9.68D8B24400pushNetClean.0044B2D8;//假的OEP004431FE.68B4334400pushNetClean.004433B4处理程序安装00443203.64:A10000000>moveax,dwordptrfs:[0]00443209.50pusheax0044320A.64:892500000>movdwordptrfs:[0],esp00443211.83EC68subesp,0x68
12.OD载入已脱壳的程序,先去到原脱壳程序的入口点(可以使用PEID查看一下未脱壳程序的入口点然后在OD中跟随一下),然后把被抽取的三行代码改到入口点的三行代码中,第四行改为一个无条件跳转”jmp00ff31f4”,跳转到我们新建EIP的那个地址如下图(可能是系统不同,所以改好后显示的代码跟XP下不一样,还是要用XP脱壳才行):修改前:
004AC000>$60pushad;//入口点004AC001.4Edecesi004AC002.D3D6rclesi,cl004AC004.4Edecesi004AC005.66:D3E8shrax,cl004AC008.4Edecesi004AC009.8BC3moveax,ebx
修改后
004AC000>55pushebp;//入口点004AC0018BECmovebp,esp004AC0036AFFpush-0x1004AC005-E9EA71F9FFjmpNetClean.004431F4;//无条件跳转004AC00AC3retn004AC00B.48deceax
13.修改完成后选中修改的几行代码,然后右键–复制到可执行文件–选择,在新出现的窗口再右键–保存文件,保存到一个路径下。然后使用loadPE把保存好的文件的入口点改为和未脱壳程序一样的入口点。就可以正常运行了。14.运行查壳
运行OK,查壳:UnKnow查壳虽然好像还是有壳的样子,但是其实已经脱掉了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: