吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3655|回复: 2
收起左侧

[分享] 手脱ACProtect v1.35(无Stolen Code)之二

[复制链接]
Jian丶ylt 发表于 2015-11-15 22:15
声明:

       1.只为纪录自己成长历程,高手勿喷
       2.您的热心是新手持续发帖的动力

首先,想说明的是这个壳在我的PC上是可以用上一个帖子中的方法来到假的OEP的:http://www.52pojie.cn/forum.php? ... 6orderby%3Ddateline,可能跟系统版本有关。如果大家使用这个连接中的帖子无法来到假的OEP那么可以参考下下面的方法,对于比较难的壳,我们首先先掌握方法,脱得多了,自然而然也就会了。当然,对于抽取OEP代码的壳,我们首先要知道不同语言写出来的程序的入口点代码特征,大家可以参考:http://www.52pojie.cn/thread-421969-1-1.html

1.载入PEID

    ACProtect v1.35 -> risco software Inc. & Anticrack Softw

2.载入OD,异常选项不勾选INT3选项,隐藏OD,吾爱官方现在的OD隐藏OD在strongOD里面,还是使用最后一次异常法shift+F9一次,第二次就会跑飞了

[Asm] 纯文本查看 复制代码
004AC000 >  60              pushad                            ; //入口点
004AC001    4E              dec esi
004AC002    D3D6            rcl esi,cl
004AC004    4E              dec esi
004AC005    66:D3E8         shr ax,cl
004AC008    4E              dec esi
004AC009    8BC3            mov eax,ebx


3.落脚点,落脚后在堆栈闯窗口右键单机SE句柄,然后选择[数据窗口跟随],然后右键选中数据窗口跟随的地方下内存访问断点,然后shift+F9一次

[Asm] 纯文本查看 复制代码
0012FF24   004BAAF0  SE处理程序        //堆栈窗口SE句柄


[Asm] 纯文本查看 复制代码
004BAAF0  0424448B        //数据窗口跟随


[Asm] 纯文本查看 复制代码
004BAB23    90              nop                               ; //最后一次异常法落脚点
004BAB24    64:67:8F06 0000 pop dword ptr fs:[0]              
004BAB2A    83C4 04         add esp,0x4
004BAB2D    60              pushad
004BAB2E    E8 00000000     call NetClean.004BAB33
004BAB33    5E              pop esi                           
004BAB34    83EE 06         sub esi,0x6
004BAB37    B9 5B000000     mov ecx,0x5B


4.落脚点,在落脚点的位置下断点F2,然后shift+F9一次

[Asm] 纯文本查看 复制代码
004BAAF0    8B4424 04       mov eax,dword ptr ss:[esp+0x4]    ; //落脚点
004BAAF4    8B4C24 0C       mov ecx,dword ptr ss:[esp+0xC]
004BAAF8    FF81 B8000000   inc dword ptr ds:[ecx+0xB8]
004BAAFE    8B00            mov eax,dword ptr ds:[eax]
004BAB00    2D 03000080     sub eax,0x80000003
004BAB05    75 12           jnz short NetClean.004BAB19
004BAB07    90              nop

5.落脚点,在落脚点的位置同样下断点F2然后shift+F9一次

[Asm] 纯文本查看 复制代码
004BAB4E    8B048E          mov eax,dword ptr ds:[esi+ecx*4]  ; //落脚点
004BAB51    8B5C8E 04       mov ebx,dword ptr ds:[esi+ecx*4+0>
004BAB55    03C3            add eax,ebx
004BAB57    C1C8 0E         ror eax,0xE
004BAB5A    2BC2            sub eax,edx
004BAB5C    81EA D41CF55C   sub edx,0x5CF51CD4

6.落脚点,落脚后先清除两个F2断点,一个内存访问断点,然后找到下面最近的retn,F4运行到指定位置。
[Asm] 纯文本查看 复制代码
004BAB62    89048E          mov dword ptr ds:[esi+ecx*4],eax  ; //落脚点
004BAB65    49              dec ecx
004BAB66  ^ EB E1           jmp short NetClean.004BAB49
004BAB68    61              popad
004BAB69    61              popad
004BAB6A    C3              retn                              ; //F4
004BAB6B    0000            add byte ptr ds:[eax],al


7.到这里后就是脱壳的最佳时机了(如果想要看看假的OEP位置可以按照上一篇的脱壳法到内存界面401000下断点shift+F9运行过去看下).我们在命令行输入"d 12ffc0",据ximo大神讲,这是ACProtect壳的死穴,记着就好。输入完命令后回车,在数据窗口第一行下硬件断点,然后shift+F9运行一次(我在我的PC上下硬件断点程序会跑飞,我的是win7--32,悲催。还是老老实实用XP吧)

[Asm] 纯文本查看 复制代码
0012FFC0  00000000        //数据窗口第一行


8.落脚点的位置就是被偷取代码的第一行,一共被偷取了三行代码,使用二进制把它复制出来

[Asm] 纯文本查看 复制代码
004C9B31    55                push ebp                               ; //被偷取代码1
004C9B32    8BEC              mov ebp,esp                            ; //被偷取代码2
004C9B34    6A FF             push -1                                ; //被偷取代码3
004C9B36    90                nop
004C9B37    60                pushad


[Asm] 纯文本查看 复制代码
55 8B EC 6A FF    //二进制复制一共5个字节


9.点击来到内存窗口在401000位置下断点F2然后shift+F9一次来到假的OEP,向上找5个字节(如果向上拉的时候代码乱掉了就右键分析一下代码再向上拉)

[Asm] 纯文本查看 复制代码
004431F9    68 D8B24400     push NetClean.0044B2D8            ; //假的OEP
004431FE    68 B4334400     push NetClean.004433B4
00443203    64:A1 00000000  mov eax,dword ptr fs:[0]
00443209    50              push eax                          
0044320A    64:8925 0000000>mov dword ptr fs:[0],esp
00443211    83EC 68         sub esp,0x68


10.如下,找到5个字节后选中并右键使用二进制粘贴

[Asm] 纯文本查看 复制代码
004431F4      8C              db 8C                                  ;  //第1个字节
004431F5   .  C3              retn                                   ;  //第2个字节
004431F6      49              db 49                                  ;  //第3个字节
004431F7      2E              db 2E                                  ;  //第4个字节
004431F8      79              db 79                                  ;  //第5个字节
004431F9   .  68 D8B24400     push NetClean.0044B2D8                 ;  //假的OEP
004431FE   .  68 B4334400     push NetClean.004433B4                  SE 处理程序安装
00443203   .  64:A1 00000000  mov eax,dword ptr fs:[0]
00443209   .  50              push eax
0044320A   .  64:8925 0000000>mov dword ptr fs:[0],esp
00443211   .  83EC 68         sub esp,68


11.在新的OEP位置右键新建EIP,然后可以先进行一下脱壳,当然脱壳后的程序是不能运行的。

[Asm] 纯文本查看 复制代码
004431F4      55            push ebp                          ;  //此处新建EIP
004431F5      8BEC          mov ebp,esp
004431F7      6A FF         push -0x1
004431F9   .  68 D8B24400   push NetClean.0044B2D8            ;  //假的OEP
004431FE   .  68 B4334400   push NetClean.004433B4            处理程序安装
00443203   .  64:A1 0000000>mov eax,dword ptr fs:[0]
00443209   .  50            push eax                          
0044320A   .  64:8925 00000>mov dword ptr fs:[0],esp
00443211   .  83EC 68       sub esp,0x68


12.OD载入已脱壳的程序,先去到原脱壳程序的入口点(可以使用PEID查看一下未脱壳程序的入口点然后在OD中跟随一下),然后把被抽取的三行代码改到入口点的三行代码中,第四行改为一个无条件跳转"jmp 00ff31f4",跳转到我们新建EIP的那个地址如下图(可能是系统不同,所以改好后显示的代码跟XP下不一样,还是要用XP脱壳才行):

修改前:

[Asm] 纯文本查看 复制代码
004AC000 > $  60            pushad                            ;  //入口点
004AC001   .  4E            dec esi
004AC002   .  D3D6          rcl esi,cl
004AC004   .  4E            dec esi
004AC005   .  66:D3E8       shr ax,cl
004AC008   .  4E            dec esi
004AC009   .  8BC3          mov eax,ebx


修改后

[Asm] 纯文本查看 复制代码
004AC000 >    55            push ebp                          ;  //入口点
004AC001      8BEC          mov ebp,esp
004AC003      6A FF         push -0x1
004AC005    - E9 EA71F9FF   jmp NetClean.004431F4            ;//无条件跳转
004AC00A      C3            retn
004AC00B   .  48            dec eax    
                       

13.修改完成后选中修改的几行代码,然后右键--复制到可执行文件--选择,在新出现的窗口再右键--保存文件,保存到一个路径下。然后使用loadPE把保存好的文件的入口点改为和未脱壳程序一样的入口点。就可以正常运行了。

14.运行查壳

    运行OK,查壳:UnKnow    查壳虽然好像还是有壳的样子,但是其实已经脱掉了。












免费评分

参与人数 2热心值 +2 收起 理由
Sound + 1 鼓励转贴优秀软件安全工具和文档!
枫MapleLCG + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

枫MapleLCG 发表于 2015-11-15 22:19
楼主,我又来顶贴了
 楼主| Jian丶ylt 发表于 2015-11-15 22:20
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 16:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表