1.载入PEID

ASProtect v1.23 RC1

2.载入OD,不勾选内存访问异常,其他异常全部勾选

 >   01C06D00     push SoWorker.006DC001                   ; //入口点
E8 call SoWorker.0040100B
0040100A C3 retn
0040100B C3 retn
0040100C je short SoWorker.
0040100E C039 sar byte ptr ds:[ecx],
0FD19CA4 0599E0>psrlw mm3,qword ptr ss:[esp+CFE09905]
AA stos byte ptr es:[edi]
 

3.最后一次异常法运行到最后一次,应该是第26次,第27次跑飞

00C339EC                xor dword ptr ds:[eax],eax               ; //最后一次异常法落脚点
00C339EE :8F05 >pop dword ptr fs:[]
00C339F5 pop eax
00C339F6 833D B07EC300 >cmp dword ptr ds:[C37EB0],
00C339FD je short 00C33A13
00C339FF 6A 0C push 0C
00C33A01 B9 B07EC300 mov ecx,0C37EB0
00C33A06 8D45 F8 lea eax,dword ptr ss:[ebp-]
00C33A09 BA mov edx,
00C33A0E E8 2DD1FFFF call 00C30B40
00C33A13 FF75 FC push dword ptr ss:[ebp-]
00C33A16 FF75 F8 push dword ptr ss:[ebp-]
00C33A19 8B45 F4 mov eax,dword ptr ss:[ebp-C]
00C33A1C cmp dword ptr ds:[eax],
00C33A1F je short 00C33A23
00C33A21 FF30 push dword ptr ds:[eax]
00C33A23 FF75 F0 push dword ptr ss:[ebp-]
00C33A26 FF75 EC push dword ptr ss:[ebp-]
00C33A29 C3 retn ; //运行到最近的retn
00C33A2A 5F pop edi
 

4.先记录假的OEP,运行到最近的retn处(不能使用F4,用F2,SHIFT+F9,F2)后打开内存窗口在00401000处下断然后shift+F9运行一次来到假的OEP

004F27CF    FF15 9CC25200   call dword ptr ds:[52C29C]               ; //假的OEP
004F27D5 33D2 xor edx,edx
004F27D7 8AD4 mov dl,ah
004F27D9 mov dword ptr ds:[],edx
004F27DF 8BC8 mov ecx,eax
004F27E1 81E1 FF000000 and ecx,0FF
004F27E7 890D mov dword ptr ds:[],ecx
004F27ED C1E1 shl ecx,
004F27F0 03CA add ecx,edx
004F27F2 890D 2C306900 mov dword ptr ds:[69302C],ecx
 

5.重新载入程序,运行步骤1-3,让程序落在最近的retn处,此时查看堆栈窗口,在命令行下硬件断点,地址填堆栈窗口第四行(程序名下的第二行)的地址或者是值都可以,上一个教程是使用的值,这个教程使用下地址,下硬件断点”hr 0012ff68”,然后shift+F9运行一次

0012FF5C   00C45340
0012FF60 SoWorker.
0012FF64 E3DE7228
0012FF68 0012FFA4
0012FF6C 00C20000
 

6.落脚点在这个位置,然后删除硬件断点单步跟两步

00C454BB   /EB            jmp short 00C45501                       ; //落脚点
00C454BD |EB jmp short 00C454C0
00C454BF |9A 51579CFC BF0>call far 00BF:FC9C5751
00C454C6 | add byte ptr ds:[eax],al
00C454C8 |00B9 add byte ptr ds:[ecx],bh
00C454CE |F3:AA rep stos byte ptr es:[edi]
00C454D0 |9D popfd
00C454D1 |5F pop edi
00C454D2 | pop ecx
 

7.单步两步之后程序应该是运行到了注释的地方,按照ximo大神视频中的讲解,这里应该是最佳以壳脱壳的位置。

00C46519    03C3            add eax,ebx
00C4651B BB A2000000 mov ebx,0A2 ; //以壳脱壳最佳位置
00C46520 0BDB or ebx,ebx
00C46522 jnz short 00C4652B
00C46524 1C mov dword ptr ss:[esp+1C],eax
00C46528 popad

8.到了这里之后,我们就可以使用loadPE先完整转存下来,然后查看程序现在运行到位置的地址,是00C4651B,我们使用loadPE部分转存,区段就选择包含了这个地址的区段。也就是00C40000这个区段,把这个区段给转存下来先,这里需要注意的是不同的PC或者是系统可能显示的地址是不同的,所以不要太过于死板。一定要按照视频教程走,其实你仔细看会发现我的教程里的地址跟ximo大神视频教程里的地址是不一样的。不过这并不影响。

9.完整转存和区域转存都执行完毕之后我们使用loadPE载入完整转存的文件,也就是点[PE编辑器]按钮,选中完整转存的那个文件;然后点击[区段]按钮,在最后一个区段右键—从磁盘载入—选中我们不分转存的那个区段。载入后我们右键选中我们载入的这个区段,然后点[编辑区段],名称我们可以随意填,虚拟地址选项输入添加区段的起始地址-基质,也就是00C40000-00400000=00840000。填完之后点确定然后保存

10.执行完上面的步骤之后我们使用需要给添加好区段的程序重建PE,使用loadPE即可。这里要说明一下,重建选项只勾选[使PE有效]这一个选项即可,其他选项都不勾选。

11.重建PE完成后我们就可以使用ImportREC进行脱壳了。脱壳地址就填假的OEP地址-基质也就是F27CF,然后进行修复,修复的时候还是使用等级1+插件进行修复。修复完毕之后先不要转存,我们需要把ImportREC上OEP地址改为最佳脱壳位置OEP-基质也就是0084651B后再进行转存。至此我们的以壳脱壳算是搞完了

12.运行查壳

运行OK,查壳:Unknown

需要说明的是我个人认为用这种方法壳应该是没有脱掉的。不过这样操作之后我们就可以使用资源编辑器对资源进行编辑修改,这样也就达到了我们的破解目的。所以壳是不是真的脱掉了我们也就不要太在意了。毕竟我们学习脱壳只是为了破解嘛。

手脱ASProtect v1.23 RC1(有Stolen Code)之以壳解壳的更多相关文章

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

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

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

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

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

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

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

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

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

    首先,想说明的是这个壳在我的PC上是可以用上一个帖子中的方法来到假的OEP的:http://www.52pojie.cn/forum.php?mod=viewthread&tid=433462 ...

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

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

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

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

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

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

  9. 手脱FSG v1.33

    1.载入PEID FSG v1.33 (Eng) -> dulek/xt 2.载入OD,先F8跟一会 004103E3 > BE A4014000 mov esi,fsg1_33.0040 ...

随机推荐

  1. 深入理解 Vuejs 组件

    本文主要归纳在 Vuejs 学习过程中对于 Vuejs 组件的各个相关要点.由于本人水平有限,如文中出现错误请多多包涵并指正,感谢.如果需要看更清晰的代码高亮,请跳转至我的个人站点的 深入理解 Vue ...

  2. nginx web服务器的安装使用

    nginx是一个web服务器(高性能web服务器),类似于apache服务器和iis服务器,由于nginx服务器具有轻量级高并发的特点,目前nginx的使用已经超越了apache. nginx介绍:n ...

  3. nodejs笔记--基础篇(一)

    Sublime Node.js开发环境配置 下载并安装Node.js安装包后再开始配置 1.先安装好Sublime Text 2 2.运行Sublime,菜单上找到Tools ---> Buil ...

  4. Thunder团队第六周 - Scrum会议3

    Scrum会议3 小组名称:Thunder 项目名称:i阅app Scrum Master:李传康 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传 ...

  5. TCP系列13—重传—3、协议中RTO计算和RTO定时器维护

    从上一篇示例中我们可以看到在TCP中有一个重要的过程就是决定何时进行超时重传,也就是RTO的计算更新.由于网络状况可能会受到路由变化.网络负载等因素的影响,因此RTO也必须跟随网络状况动态更新.如果T ...

  6. 在64位的环境下利用Jet来操作Access,Excel和TXT

    For example, you have a 32-bit application that uses the Microsoft OLE DB Provider for Jet. If you m ...

  7. node中的path.resolve

    path.resolve([arg1,arg2,...])根据参数的不同,返回值存在两种情况. 以下为参数的两种情况: 1.每个参数都不带'/',比如path.resolve(),或者path.res ...

  8. C# Find()和First()与FirstOrDefault(

    1. Find方法只能在List<T>上使用,而后者能更广泛应用在IEnemerable<T>上. Find最终是建立在Array的查找之上,而在IEnemerable上的Fi ...

  9. cacti设置redis监控端口

    1.在Console->Data Templates中选择Redis的模版 在custom Data中勾选中Port2并保存 2.在Console->Data Input Methods中 ...

  10. Linux和Windows文件路径

    linux系统下的文件夹路径和window下的不一样,windows下就需要写成“\\photos"因为java会把第一个"\"当成转义字符给“吃了”.但在linux下就 ...