前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >脱壳第二讲,手动脱壳PECompact 2.x

脱壳第二讲,手动脱壳PECompact 2.x

作者头像
IBinary
发布2018-01-08 14:12:28
1.6K0
发布2018-01-08 14:12:28
举报
文章被收录于专栏:逆向技术逆向技术

              脱壳第二讲,手动脱壳PECompact 2.x

PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式

首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具

但是他有壳,先查壳.

发现是这个壳

利用Esp定律,脱掉这个壳.

首先,inc2l.exe是32位的,所以要放到虚拟机中.

一丶OD打开分析

1.OD分析 

发现,首先给eax赋值,然后压栈eax,那么eax肯定会访问,那么我们F8到push eax的下面,也就是4022EA的位置

2.查看栈数据

查看栈数据.

那么在栈位置12FFC0的位置,肯定会有访问,我们数据窗口 定位到ESP的位置,也就是0012FFC0

3.在数据窗口定位栈顶位置.

CTRL + G命令定位.

由于方便一起截图,事先已经定位过来了.

 4.针对栈内容下硬件访问断点(4个字节)

选中栈中地址的值,也就是 push 的eax的值,下硬件访问断点

5.F9运行起来,直到跟到我们的模块分析

第一次F9 

依次类推,下方肯定会跳转到我们的程序里面.

一直找到一个跳转到eax的位置

此时EAX的值是 004022E4

而JMP的位置是0040AC1E

由此可以判断出,入口点的位置是4022E4

为什么?

因为壳一般加密之后,如果跳转到入口点,那么它是一个远跳

此时看JMP的地址,和跳的位置就是一个远跳.

6.F7跟入JMP eax

此时如果F7跟进来了,那么就是下面的样子

真正的入口点

8.使用OD插件,Dump内存,脱壳.

此时我们可以使用OD插件的dump内存的插件,在入口点位置脱壳了.

弹出界面:

点击脱壳,选择位置,存储你脱壳后的文件.

此时OD不要关闭.

9.使用导入表修复工具,修复脱壳后的IAT表

(关于IAT表请熟悉PE格式后看)

 此时OD调试的进程不要关闭,也就是带壳的inc2l程序,如果关闭了,那么重新进行上面几步,只需到定位到入口点即可.

现在脱壳完毕,IAT表肯定让壳给抹掉了,而OD的dump工具修复的IAT表也不全,所以使用一个IAT表格修复工具修复.

我用的工具是 ImportREC1.7  具体下载可以去下载看雪大礼包.

(当然我会上传,但是此工具比较老,会有Bug,一会修复完之后手工修复即可.)

9.1打开工具.并选择我们OD挂起的未脱壳的inc2l的程序.

 9.2 OEP位置给我们的OPE的偏移

OEP位置给我们的OEP的偏移,或者让它自动查找.

然后点击Get Imports

9.3 点击 Fix Dump 给我们脱壳的程序修复

现在导入表已经有了,那么点击Fix Dump给我们刚才脱壳后的程序修复一下.

9.4运行我们的脱壳程序查看是否可以运行.

提示错误,Winhex打开,查看PE格式.

首先,我们发现我们的导入表,被我们的导入表修复工具加了一个新的节, 也就是mackt的节

那么我们此时我们首先定位 sizeofHead (DOS头+ NT头 + 节表的总大小)我们看下是多少.

有没有自动给我们增加.

并没有增加,大小还是200,那么是错的,因为加了一个分页

也就是mackt的位置的大小并没有加上,也不是说没有加上,而是正好在200的位置处,也就是文件中1F0的位置.

那么这个程序出BUG了,此时我们改为1000 或者你自己看下多大.

保存文件,重新打开我们的壳程序试一下还会崩溃吗.

为了方便,拷贝到住电脑上,然后命令行打开查看.

成功运行,因为这个程序点开会一闪而过,所以截图不了,所以命令行打开,出来这个界面就成功了.

课堂代码资料:  链接:http://pan.baidu.com/s/1kVL1f6Z 密码:2ltj

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •               脱壳第二讲,手动脱壳PECompact 2.x
    • 一丶OD打开分析
      • 1.OD分析 
      • 2.查看栈数据
      • 3.在数据窗口定位栈顶位置.
      •  4.针对栈内容下硬件访问断点(4个字节)
      • 5.F9运行起来,直到跟到我们的模块分析
      • 6.F7跟入JMP eax
      • 8.使用OD插件,Dump内存,脱壳.
      • 9.使用导入表修复工具,修复脱壳后的IAT表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档