手动脱壳之PECompact
来源:互联网 发布:铝合金窗 知乎 编辑:程序博客网 时间:2024/06/10 16:06
手动脱壳之PECompact
这个星期开始学脱壳,就从简单的压缩壳开始吧。
0x0 前期准备
自己先瞎写了一个控制台程序:
然后用下面的工具加壳:
加完壳之后用EXEInfoPE和PEiD分别查壳:
加壳成功了。
0x1 找到OEP
(方便起见,我先将aslr给关了)
用OD打开,发现起始点是0x411055,然后F8跟进了几步,到0x41106B程序就跑起来了?没有什么pushad和popad,也没有任何jmp,奇怪:
ALT+M看一下内存窗口,没有.data和.rdata,但是有.rsrc,可以用二次断点法找OEP:
F9之后,来到了0x41FAC0:
这里如果直接在.text下断点然后F9的话还是会跳到0x41FAC0附近,所以干脆在retn的时候再在.text下断点,然后F9就会跳到:
然后再跳到0x41FAE3,这时往下翻一翻,很快就找到一个很大的跳跃:
可见这个就是OEP了。
0x2 DUMP
我直接用OD的插件OllyDump将程序Dump出来了,这里注意要先跟到jmp eax的下一步再dump,不然的话程序一开始执行了jmp eax,而eax一开始的值很明显不是我们想要的值:
在这里dump。
0x3 修复IAT
用PEiD看了一下,没毛病:
以为能美滋滋地跑起来,结果程序出错了:
对,忘了修复IAT。紧接着刚才的OEP点,这时打开ImportREC,选中在OD里跑着的进程,点了一下AutoSearch,然后Get Imports,找到了有效的1输入表:
然后Fix Dump,接着运行起来:
咦,还是出错呢?还是得在OD里定位到真正的输入表的位置。这里我刚学,不知道有什么好方法,我就在这个Use2DumpCh_.exe里找一下哪里出错:
发现第一个出错的地方在这里,里面跟进去是几个跳转,最后跳到了一个空地址。那么就是因为ImportREC在找输入表的RVA时没找对。
现在重新dump一次,在到达OEP时,根据上图搜索0x4110A0处的指令:
再搜索0x414BA4处的指令:
这就是IAT的真实地址了,在数据窗口查找0x41B0AC,然后往上翻到没有发现函数为止,这里是0x41B000:
在ImportREC里的RVA框填上1B000,然后Get Imports,可以看到有一些yes,有一些no,先不管,fix dump之后:
可以成功运行了。
0x4 总结
1.找到OEP的方式有很多,压缩壳相对比较容易找到;
2.不要过分相信ImportREC的AutoSearch,我就是这里被坑了;
3.至于上面的一些no的IAT,我推测是IAT与IAT之间有空隙,但是我直接从第一个IAT的RVA开始Get Imports,没有将这些IAT分开Get Imports;
4.ImportREC要以管理员身份运行,不然就只能看到少部分进程在运行;
5.请大神指导。
- 手动脱壳之PECompact
- 手动脱壳----PECompact 2.x -> Jeremy Collake
- PECompact 2.5脱壳
- 脱壳-PECompact v1.66
- 脱壳-PeCompact(2.20)
- 手动脱壳
- 手动脱壳之-胡乱一脱
- 手动脱PeCompact 2.20壳实战
- 对PECompact加壳的DLL脱壳的一点分析
- 壳学习一:PECompact 2.x 加壳脱壳
- 如何脱壳:PECompact 1.68 - 1.84 -> Jeremy Collake [Overlay]
- 手动脱壳入门破文锦集
- 常用手动脱壳方法
- ASProtect 1.23 手动脱壳
- 手动脱壳VMP
- 手动脱壳技巧总结
- 手动脱壳nSPack 3.7
- 记一次手动脱壳
- Oracle表分区
- git ssh连接(填坑)
- Struts2 拦截是否登录过
- 使用jQuery POST提交数据返回的JSON是字符串不能解析为JSON对象
- 动画中级
- 手动脱壳之PECompact
- mysql中的mysql.user表
- webview长按自由复制文字
- bootstrapTable 修改栏位值
- 如何判断网站是不是wordpress做的及WP主题是什么?
- 解决Session 'appname': Error Launching activity
- EventBus全解析
- 基于IMX6Q的XFM10621六麦驱动实现说明
- android 防快速点击的一种实现方式