潇潇 发表于 2011-1-16 15:35:33

Mole Box 2.6.1 - 2.9.5脱壳及输入表修复(ESP定律法)

使用工具:Exeinfo PE (查壳)、OD(脱壳)、ImportREC(修复输入表)。
一、查壳。使用Exeinfo PE 工具查壳后壳为Mole Box 2.6.1 - 2.9.5by Teggo.,如图所示:

二、脱壳。
1、加载目标程序。OD忽略所有异常并加载主程序demo.exe,出现如下图所示的提示并选择“否”,来到程序入口。

2、目标程序脱壳。在OD命令栏中输入 hr esp 并回车,如图所示:

F9运行后在00580710处断下如图所示:

接着F8单步来到00580713,如图所示:

到00580713后F7进入,直到OEP,如图所示:

此时在这里鼠标右键选择“Ollydump脱壳调试进程”,此时弹出“Ollydump”窗口,按默认设置后单击“脱壳”按钮生成一个名为1.exe的程序,如图所示:

一般情况下,再用工具Exeinfo PE查壳后表现已经脱壳,如果运行1.exe,能正常启动则脱壳完成,但实际上此壳还得修复输入表。
三、输入表修复。
1、修复输入表。运行ImportREC,并打开目标进程demo.exe,在OEP处输入000BB620(004BB620-00400000)后,点击“自动查找IAT”后弹出“发现一些信息”窗口RVA=000BE000,大小=0000602F,如图所示:

确定并单击“获取输入表”后,在“找到的输入表函数”及“记录”框中都显示相关信息,如果输入表函数中所有都有效,此时直接修复转存文件(1.exe)可新生成个1_.exe的文件便可完成脱壳。但此时发现有无效函数,所以需要修复函数指针,如图所示:

无效函数如图所示:


2、修复无效指针(或修复无效函数)
重新运行一个OD,并加载demo.exe主程序来到程序入口点。在命令栏中输入 dd 004BE0AC(rva:000BE0AC+PE:00400000),来004BE0AC,并在此下“内存访问断点”,到如图所示:

F9运行8次后在00587CE6处断下,很明显004BE0AC这里所指向的原函数就是kernel32.dll模块的ReadFile函数,如图所示:

此时返回ImportREC选中rva:000BE0AC并双击进入“输入表编辑器”,在模块中选kernel32.dll,并在名称中写入ReadFile,确定便修复了rva:000BE0AC里无效函数,如图所示:

返回第二个OD界面在00587CE6处F2切换断点,并去掉内存返问断点,如图所示:

接着F9运行断下便可看到rva:000BE0B0处原函数指针,如图所示:


用上面的方法分别把无效函数修复完成后,点击“修复转存文件”得1_.exe,运行无误,脱壳完成。

晕了终于写完了。
demo下载:
**** Hidden Message *****

zhangmoney 发表于 2011-1-17 19:08:26

眼花缭乱 一头雾水

sd051236 发表于 2011-1-22 23:15:53

我一定好好的学习学习
页: [1]
查看完整版本: Mole Box 2.6.1 - 2.9.5脱壳及输入表修复(ESP定律法)