Dxpack V0.86主程序脱壳手记
=============================================
【目标软件】Dxpack V0.86主程序
【脱文作者】KuNgBiM[D.4s][CZG][DFCG]
【软件简介】国产的一个壳
【加壳方式】DxPack 1.0x -〉dxpack (我的PEiD查出来的结果)
【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6F
1.前言
为了练习脱壳,前一段时间从网上下了一个Dxpack V0.86,然后看了看加壳程序的主程序,当然本人初学破解,参考了很多大虾们的文章,然后自己模仿脱壳,可是当我使用401000段“第2内存断点大法”想到达那个盼望已久的OEP的时候,意外出现了:F9后,程序中断,F8/F7/F4全部都是来回打转!是我做法错误?还是???然后我又实验了N遍,依然如此,为什么?随后又在看雪论坛不停的搜索着,想找一些有关的知识,终于找到了,fly兄的,但是。。我任笨,还是使用我的偷懒方法吧。。。。呵呵。。。这点还要向fly兄请赐教,我是“黑防迷”经常看你的文章,嘿嘿~~~~废话就不多说了。。GO!!!
=============================================
2.脱壳过程(分以下几步进行)
(1)查找OEP(偷懒办法!)
用PEiD载入目标程序Dxpack.exe,再使用PEiD的插件“Generic OEP Finder”寻找OEP!
结果:OEP=00406B10
=============================================
(2)dump文件
运行OD,设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。
知道了OEP就好办了,在命令栏下和he 00406B10,F9运行,断下!
00406B10 55 DB 55 ; CHAR 'U'
00406B11 8B DB 8B
00406B12 EC DB EC
00406B13 6A DB 6A ; CHAR 'j'
00406B14 FF DB FF
00406B15 68 DB 68 ; CHAR 'h'
00406B16 E8 DB E8
00406B17 F0 DB F0
00406B18 41 DB 41 ; CHAR 'A'
00406B19 00 DB 00
00406B1A 68 DB 68 ; CHAR 'h'
00406B1B E0 DB E0
00406B1C B0 DB B0
.........
2种Dump方法:
1.用OD的插件“OllyDump”dump出来!我另存为unpacked.exe (大小为:209KB)
2.用LordPE找到Dxpack.exe的进程,完整Dump!我另存为dumped.exe (大小为:204KB)
OD请勿关闭以下要用!
=============================================
(3)修复输入表
因为Dxpack的加壳,使得ImportREC的“IAT AutoSearch(自动搜索IAT)”失效,所以必须重新确定IAT的RAV以及大小。
记得我们最初找到的那个OEP值吗?用ESP定律!
真正OEP=00406B10-00400000=00006B10
在ImportREC同样找到Dxpack.exe的进程,然后再“IAT需要的信息”内填以下内容:
OEP=00006B10
“IAT AutoSearch(自动搜索IAT)”得到以下信息:
RAV=0001D000 SIZE=00000494
=============================================
填写完后就重新“获取输入表”,然后“抓取修复文件”。。。。Fix Dump!!完成。
试运行2个被我们Dump+修复的文件:
unpacked_.exe(大小为:2162KB)
dumped_.exe(大小为:208KB)
OK!成功!!!程序由 Microsoft Visual C++ 6.0 编译!
=============================================
文章写得不好,请大虾们不要见笑!
KuNgBiM[D.4s][CZG][DFCG] 2005.01.10
下载:
附件:UnDxpack086.rar
[课程]Linux pwn 探索篇!