本笔记是针对ximo早期发的脱壳基础视频教程。整理的笔记。本笔记用到的工具下载地址:

http://download.csdn.net/detail/obuyiseng/9466056

简单介绍:

FSG壳是一款压缩壳。

我们这里使用9种方式来进行脱壳

工具:ExeinfoPE或PEid、OD、LordPE、ImportREConstructor

脱壳文件:05.手脱PECompact2.X壳.rar

1 单步

    我们发现有两处call会跑飞。那么我们须要在跑飞处进入,然后在跟就可以。

       第一个跑飞的call,我们此时不应该单步而是进入






       第二个跑飞的call,我们此时不应该单步而是进入


    OEP

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

2 ESP定律

   单步到在此处。并在数据窗体中尾随,下断点,单步跟踪就可以。可參考前面的笔记内容。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

3 使用BP VirtualFree断点

首先下 bp VirtualFree断点
         

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

然后 SHIFT+F9执行,接着按F2取消断点

         





接着ALT+F9运行到用户代码

         





ctrl+f 进行查找 push 8000(特征码)

      
    

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">





F2设置断点 , shift+f9执行到这,然后取消断点

    

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">




接着单步跟就可以。就会到达OEP
    

4   相同设置BP VirtualFree

首先设置断点


      



然后。两次SHIFT+F9。 
     

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



然后,取消断点。Alt+F9 并运行到用户代码

      

 

然后单步走。就会到达OEP



    

5.

1、载入程序后,会发现首行有个地址

0040A86D >  B8 74DE4500     mov eax,qqspirit.0045DE74

     

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



2、在该地址处下断点    bp 0045de74

      

3、然后shift+f9执行,并取消断点
    

4、我们在该处的retn 下一行 设置断点,然后shift+f9执行,并取消断点
   

045DE74    B8 F9CB45F0     mov eax,F045CBF9

0045DE79    8D88 9E120010   lea ecx,dword ptr ds:[eax+1000129E]

0045DE7F    8941 01         mov dword ptr ds:[ecx+1],eax

0045DE82    8B5424 04       mov edx,dword ptr ss:[esp+4]

0045DE86    8B52 0C         mov edx,dword ptr ds:[edx+C]

0045DE89    C602 E9         mov byte ptr ds:[edx],0E9

0045DE8C    83C2 05         add edx,5

0045DE8F    2BCA            sub ecx,edx

0045DE91    894A FC         mov dword ptr ds:[edx-4],ecx

0045DE94    33C0            xor eax,eax

0045DE96    C3              retn

0045DE97    B8 78563412     mov eax,12345678                      //下断点




5、接着单步跟就可以。就会到达OEP

6

1、设置bp VirtualAlloc 断点。然后shift+f9 执行,并取消断点
     
   
    

2、alt+f9 执行到用户代码    向下拉。看到JMP。

执行到这



     

3、然后接着单步就可以。

7.最后一次异常法。

1、选项---》调试设置---》异常------取消全部异常。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">





2、然后将程序又一次加载


3、按shift+f9 ,发现2次shift+f9 就会让程序跑起来了。
(之所以叫最后一次异常法,我们利用的就是利用最后一次异常,也就是说,
我们有执行shift+f9有M次,就让程序跑起来了。那么我们又一次加载程序后,
仅仅须要按 M-1次shift+f9就可以)
 

4、因为2次跑飞,我们按1次shift+f9,然后在堆栈窗体中  找SE句柄
      


     

        

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



5、然后 我们转到 0045de74处, 并在retn下一行下断 (和第5种类似)
      

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

   
      

     





045DE74    B8 F9CB45F0     mov eax,F045CBF9

0045DE79    8D88 9E120010   lea ecx,dword ptr ds:[eax+1000129E]

0045DE7F    8941 01         mov dword ptr ds:[ecx+1],eax

0045DE82    8B5424 04       mov edx,dword ptr ss:[esp+4]

0045DE86    8B52 0C         mov edx,dword ptr ds:[edx+C]

0045DE89    C602 E9         mov byte ptr ds:[edx],0E9

0045DE8C    83C2 05         add edx,5

0045DE8F    2BCA            sub ecx,edx

0045DE91    894A FC         mov dword ptr ds:[edx-4],ecx

0045DE94    33C0            xor eax,eax

0045DE96    C3              retn

0045DE97    B8 78563412     mov eax,12345678//下断


6、shift+f9执行到该位置,取消断点后 ,接着单步跟就可以







注意:


假设不能用最后一次异常法脱强壳。一用 shift+f9 就直接跑飞,解决例如以下

在OD插件--StrongOD--Options--Skip Some Exceptions选项取消,重新启动OD再试试。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">




使用完毕后,我们要将异常-Skip Some Exceptions选项  恢复

8 两次内存

1、在内存窗体中,找到第一个.rsrc, 然后F2下断点,并执行







2、再次在内存窗体中找到
    

3、然后单步跟就可以,当遇到 retn的时候,要在retn下一行设置断点,然后单步就可以。

9 at GetVersion

1、因为该程序是c++编写,所以能够设置 at GetVersion断点。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

2、向下 在retn处设置断点。并执行

3、然后取消断点,单步,向上拖就会看到OEP了

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

简单脱壳教程笔记(7)---手脱PECompact2.X壳的更多相关文章

  1. 简单脱壳教程笔记(2)---手脱UPX壳(1)

    本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...

  2. 简单脱壳教程笔记(8)---手脱EZIP壳

    本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 EZIP壳 : ...

  3. 手脱Aspack变形壳1

    1.载入PEID Aspack v2.12 -> www.aspack.com 2.载入OD,不管是看查壳信息还是看入口特征都跟我上一次发的一个手脱Aspack v2.12的帖子相同http:/ ...

  4. 手脱UPX3.91壳(练习)

    0x01 准备 OD UPX加壳程序 可以加壳的软件 0x02 给软件加壳 我找了半天发现winhex不错,而且是没壳的可以直接加壳 1.复制一份可执行文件 将赋值好的文件用UPX3.91加壳 0x0 ...

  5. 手脱ASPack2.12壳(练习)

    俗话说柿子挑软的捏,练习脱壳还得用加密壳脱 0x01 准备 1.OD 2.ASPack加壳软件 0x02 脱壳实战 查一下壳 OD载入 第一个call,F7进去 第二个call也是F7进去 之后往下单 ...

  6. 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳

    [个人笔记]ximo早期发的脱壳教程--手脱UPX壳   壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳.   手脱UPX壳: 工具:ExeinfoPE.OD 对象:rmvbfix 方法1:单 ...

  7. [转] 菜鸟手脱VMP,附上脱壳过程和自己写的脚本,可跨平台

    转载:http://www.52pojie.cn/thread-467703-1-1.html 工作需要要脱一个VMP壳,我是一个从来没接触过脱壳的人.瞬间那种心情遇到的人应该都知道!没办法硬着头皮找 ...

  8. jQuery官方基础教程笔记(转载)

    本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计 ...

  9. Docker 入坑教程笔记

    Docker 入坑教程笔记 视频网址B站:点这里 查询命令 man docker 简单启动和退出 docker run --name [容器名] -i -t ubuntu /bin/bash 交互启动 ...

随机推荐

  1. react-native 手势操作和 react-naviagation 组件的手势返回功能的冲突解决

    上篇我们说到过在react-native触摸及手势事件 那么我在项目中遇到的问题是在react-navigation中的子页面,希望保留在ios中的效果:从左侧往右侧滑动为退出该页面. 但是希望我在滑 ...

  2. HDU 4747 Mex【线段树上二分+扫描线】

    [题意概述] 一个区间的Mex为这个区间没有出现过的最小自然数,现在给你一个序列,要求求出所有区间的Mex的和. [题解] 扫描线+线段树. 我们在线段树上维护从当前左端点开始的前缀Mex,显然从左到 ...

  3. SQlServer中的MD5加密

    SELECT sys.fn_varbintohexstr(HASHBYTES('MD5', '我'));

  4. linux中的命令

    1,ln-链接 功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是: ln -s 源文件 目标文件  // -s 是 symbolic(符号,象征)的意思. l ...

  5. get方法和set方法

    定义一个类,该类有一个私有成员变量,通过构造方法将其进行赋初值,并提供该成员的getXXX()和setXXX()方法 提示:假设有private String name;则有 public void  ...

  6. 怎样在WINDOWS下面编译OpenSSL

    编译OPENSSL的步骤: 第一步:下载ActivePerl(http://www.activestate.com/, ),安装ActivePerl,默认安装路径在C:\Perl64.打开命令提示符, ...

  7. Installing Zabbix 3.2 in Centos 6.8 Clean Install Dependencies Errors

    ZABBIX Forums > Zabbix Discussions and Feedback > Zabbix Troubleshooting and Problems > Ins ...

  8. [luoguP1972] [SDOI2009]HH的项链(莫队 || 树状数组 || 主席树)

    传送门 莫队基础题,适合我这种初学者. 莫队是离线算法,通常不带修改,时间复杂度为 O(n√n) 我们要先保证通过 [ l , r ] 求得 [ l , r + 1 ] , [ l , r - 1 ] ...

  9. [K3Cloud] QueryService使用注意事项

    QueryServlice是目前查询数据非常好用的服务,但目前在使用过程中由于使用不当产生不少问题,下面将一一解答: 1.在查询一些实体关键字段如实体主键.分录序号时,条件中的别名怎么会变来变去?   ...

  10. 断路器监控(Hystrix Dashboard)

    继上一篇http://www.cnblogs.com/EasonJim/p/7613595.html介绍了断路器之后,其实它还提供了一个管理页面来监控这些应用的调用数据. 首先,我是基于上一个例子Zo ...