首先,想说明的是这个壳在我的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.html

1.载入PEID

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

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

004AC000 >                pushad                            ; //入口点
004AC001 4E dec esi
004AC002 D3D6 rcl esi,cl
004AC004 4E dec esi
004AC005 :D3E8 shr ax,cl
004AC008 4E dec esi
004AC009 8BC3 mov eax,ebx
 

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

0012FF24   004BAAF0  SE处理程序     //堆栈窗口SE句柄

004BAAF0  0424448B      //数据窗口跟随

004BAB23                  nop                               ; //最后一次异常法落脚点
004BAB24 ::8F06 pop dword ptr fs:[]
004BAB2A 83C4 add esp,0x4
004BAB2D pushad
004BAB2E E8 call NetClean.004BAB33
004BAB33 5E pop esi
004BAB34 83EE sub esi,0x6
004BAB37 B9 5B000000 mov ecx,0x5B

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

004BAAF0    8B4424        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 sub eax,0x80000003
004BAB05 jnz short NetClean.004BAB19
004BAB07 nop
 

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

004BAB4E    8B048E          mov eax,dword ptr ds:[esi+ecx*]  ; //落脚点
004BAB51 8B5C8E mov ebx,dword ptr ds:[esi+ecx*+>
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运行到指定位置。

004BAB62    89048E          mov dword ptr ds:[esi+ecx*],eax  ; //落脚点
004BAB65 dec ecx
004BAB66 ^ EB E1 jmp short NetClean.004BAB49
004BAB68 popad
004BAB69 popad
004BAB6A C3 retn ; //F4
004BAB6B add byte ptr ds:[eax],al
 

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

0012FFC0        //数据窗口第一行
 

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

004C9B31                    push ebp                               ; //被偷取代码1
004C9B32 8BEC mov ebp,esp ; //被偷取代码2
004C9B34 6A FF push - ; //被偷取代码3
004C9B36 nop
004C9B37 pushad 8B EC 6A FF //二进制复制一共5个字节

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

004431F9     D8B24400     push NetClean.0044B2D8            ; //假的OEP
004431FE B4334400 push NetClean.004433B4
:A1 mov eax,dword ptr fs:[]
push eax
0044320A : >mov dword ptr fs:[],esp
83EC sub esp,0x68
 

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

004431F4      8C              db 8C                                  ;  //第1个字节
004431F5 . C3 retn ; //第2个字节
004431F6 db ; //第3个字节
004431F7 2E db 2E ; //第4个字节
004431F8 db ; //第5个字节
004431F9 . D8B24400 push NetClean.0044B2D8 ; //假的OEP
004431FE . B4334400 push NetClean.004433B4 SE 处理程序安装
. :A1 mov eax,dword ptr fs:[]
. push eax
0044320A . : >mov dword ptr fs:[],esp
. 83EC sub esp,
 

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

004431F4                  push ebp                          ;  //此处新建EIP
004431F5 8BEC mov ebp,esp
004431F7 6A FF push -0x1
004431F9 . D8B24400 push NetClean.0044B2D8 ; //假的OEP
004431FE . B4334400 push NetClean.004433B4 处理程序安装
. :A1 >mov eax,dword ptr fs:[]
. push eax
0044320A . : >mov dword ptr fs:[],esp
. 83EC sub esp,0x68
 

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

  • 修改前:
004AC000 > $              pushad                            ;  //入口点
004AC001 . 4E dec esi
004AC002 . D3D6 rcl esi,cl
004AC004 . 4E dec esi
004AC005 . :D3E8 shr ax,cl
004AC008 . 4E dec esi
004AC009 . 8BC3 mov eax,ebx

  • 修改后
004AC000 >                push ebp                          ;  //入口点
004AC001 8BEC mov ebp,esp
004AC003 6A FF push -0x1
004AC005 - E9 EA71F9FF jmp NetClean.004431F4 ;//无条件跳转
004AC00A C3 retn
004AC00B . dec eax

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

14.运行查壳

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

手脱ACProtect v1.35(无Stolen Code)之二的更多相关文章

  1. 手脱ACProtect v1.35(无Stolen Code)

    1.载入PEID ACProtect v1.35 -> risco software Inc. & Anticrack Soft 2.载入OD,需要注意的是,异常选项除了[内存访问异常] ...

  2. 手脱ACProtect v1.35(有Stolen Code)

    1.载入PEID ACProtect v1.35 -> risco software Inc. & Anticrack Soft 2.载入OD,需要注意的是,异常选项除了[内存访问异常] ...

  3. 手脱ACProtect V1.4X(有Stolen Code)之补区段

    首先需要说的是,这个壳是ximo大神视频教程里的 0041F000 > pushad ; //程序入口点 0041F001 E8 call NgaMy.0041F007 0041F006 E8 ...

  4. 手脱ACProtect V1.4X(有Stolen Code)

    1.载入PEID ACProtect V1.4X -> risco 首先需要说明的是,这个壳被偷取的代码非常多,如果去找的话会比较麻烦,所以我们换一种另类的方法,不脱壳也可以使用资源修改器对程序 ...

  5. 手脱ACProtect V2.0(无Stolen Code)

    1.载入PEID ACProtect V2.0 -> risco 2.载入OD > 00A04000 push ACP_Feed.0040A000 ; //入口点 0B104000 pus ...

  6. 手脱ASProtect v1.2(无Stolen Code)

    1.载入PEID ASProtect v1.2 2.载入OD > 01C04200 push 跑跑赛道.0042C001 ; //入口处 C3 retn AA stos byte ptr es: ...

  7. 手脱ASProtect v1.23 RC1(无Stolen Code)

    1.载入PEID ASProtect v1.23 RC1 2.载入OD,不勾选内存访问异常,其他异常全部勾选 > 01C04200 push 跑跑排行.0042C001 ; //入口处 E8 c ...

  8. 手脱ASProtect v1.23 RC1(有Stolen Code)之以壳解壳

    1.载入PEID ASProtect v1.23 RC1 2.载入OD,不勾选内存访问异常,其他异常全部勾选 > 01C06D00 push SoWorker.006DC001 ; //入口点 ...

  9. 手脱ASProtect v1.23 RC1(有Stolen Code)

    1.载入PEID ASProtect v1.23 RC1 常见ASprotect版本壳: ASProtect 1.23 RC4 按shift+f9键26次后来到典型异常 ASProtect 1.31 ...

随机推荐

  1. 剑指 Offer——和为 S 的两个数字

    1. 题目 2. 解答 由于数组是已经排好序的,我们可以定义两个指针,第一个指针指向第一个元素,第二个指针指向最后一个元素,然后求出这两个元素的和,与目标和进行比较.若小于目标和,第一个指针向前移动: ...

  2. node.js常用方法

    1.获取真实地址 function getClientIp(req) { return req.headers['x-forwarded-for'] || req.connection.remoteA ...

  3. ORM(object relational Maping)

    ORM即对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中.本质上 ...

  4. SpringMVC相关的面试题

    1.什么是springMVC springmvc是spirng框架的一个模块,是一个基于MVC框架的web框架 2.springmvc的流程 a.客户端发送请求 b.前端控制器DispatcherSe ...

  5. 常用IDE插件

    Visual Studio 常用 Refactoring Essentials:代码重构分析 Roslynator:代码重构 CodeMaid:代码格式化 Github Extension for V ...

  6. iOS- 指压即达,如何集成iOS9里的3D Touch

    1.前言   随着6S的到来,3DTouch被各大热门APP迅速普及,博主亲自体验后,发现使用便捷性大幅提高,随后自己照着文档,写了个Demo出来,分享给大家,希望能对有需要的朋友提供有一些帮助. 2 ...

  7. Swift-switch使用注意点

    1.swift后面的()可以省略 2.case后面的额break可以省略 3.如果想产生case穿透使用fallthrough 4.case后面可以判断多个条件","分割 5.sw ...

  8. css3 关于文字,字体属性(转载)

    1.text-overflow属性(实现省略号效果) text-overflow用来设置是否使用一个省略标记(…)标示对象内文本的溢出. [语法] ❤text-overflow只是用来说明文字溢出时用 ...

  9. 自签证书 doesn't match any of the subject alternative names

    出现这个的原因是https中的域名或者IP,与证书中登记的不一致. 如果是自签证书的话,可以根据具体需要重新生成证书. 还有一种解决方案是在java中跳过这个检查. 绕过检查分两类,一个是绕过证书在C ...

  10. html超链接返回上一页面

    超链实现返回刚刚访问的网页: <a href="#" onclick="javascript:history.back(-1);"></a&g ...