使用LordPE和Import REC脱壳

本博客用到的资源链接放在博客末尾。

LordPE是一款能够抓取内存映像的用来脱壳的软件,它能够把一个进程的内存数据给Dump下来,然后保存为文件。

光了解一个软件的用处用起来如果出问题还是会比较头疼,所以这里简单说一下LordPE软件的原理。

该软件其实也是调用了系统的API。它首先调用CreateToolhelp32Snapshot函数来获取一个系统中的进程的快照。然后再用Module32Next函数来循环获取每个进程的信息,进程的信息会被填到一个MODULEENTRY32结构里面,信息包括了该进程的映像基址,进程的映像大小,进程的句柄,进程的完整路径。当然还有一些其他的信息,不过这些我们不用管。

得到了进程的句柄,以及映像基址和大小之后,软件就可以对它进行操作了。软件会根据这个数据读取出进程的内存数据,然后将数据保存到磁盘文件。

那么它为什么能脱壳呢?其实用它进行脱壳的过程,一般是我们先用其他软件将加壳程序调试到OEP处停止,这个时候程序在内存中已经被壳给解压缩或者解密了,这个时候的进程的内存数据就是没加壳时候的数据。然后我们将这些数据Dump下来保存为文件。得到的就是没加壳的原程序文件了。其实就是先让壳对程序自行解压或解密,然后我们将解压或解密后的程序数据Dump下来保存为文件。

 这个是程序的界面,打开程序时要注意用管理员权限打开,不然可能用OD调试的进程在这里可能看不到。点击选项,然后调整设置成下面这样:

里面有个选项:从磁盘粘贴文件头。意思是Dump下来的数据里面的PE文件头是直接从磁盘原始文件中复制的。

当我们要Dump一个进程的内存数据的时候,右键目标进程,然后选择完整转存就可以了。

 但是,既然有这种Dump技术,那就肯定还有反Dump技术,因为LordPE软件是通过MODULEENTRY32结构里面的数据来获取进程的信息的。所以,一些程序的壳会修改里面的modBaseSizemodBaseAddr字段,往里面填入错误的值。而因为如果修改modBaseAddr的值,会让系统出现问题,所以一般修改的都是modBaseSize字段。这样我们Dump下来的就是不完整的数据。

出现这种问题其实解决方法很简单,可以让软件直接到PE文件头里面的SizeOfImage字段读取映像的真正大小。做法就是右键目标几进程,然后选择修正镜像大小。然后再Dump就可以了。

加壳程序还可能用一种技术来防止用户Dump进程数据,就是在程序中使用VirtualProtect函数来设置PE文件头为不可读,这样我们用软件Dump进程的时候就会出现访问错误。在软件界面右键目标进程,然后点击区域转存,就出现了下图:

这里只是举个例子,这个程序还没有进行脱壳调式。可以看到有些区域显示的是NOACCESS。如果加壳程序做了我们上面所说的处理的话,PE头也会出现这种情况。

这个时候我们可以打开OD,按下“Alt+M”或者点击蓝色小框框里面的M打开内存映像,然后在PE文件头那里右键,选择设置访问->所有访问。

下面就试一下用LordPE进行脱壳,用到的加壳程序是书本《加密与解密》里面的例子:RebPE。

首先我们用OD打开目标程序:

 很明显是被加壳了。然后我们单步执行一下之后,在ESP寄存器中的内存地址上设置内存访问断点,然后运行程序,跟踪到OEP的地方:

这个时候进程在内存中已经脱壳完成了,现在我们就要用LordPE来Dump数据了。用管理员权限打开软件,然后右键目标进程,先选择修正镜像大小:

软件成功修正了镜像的大小。所以说这个程序也修改了MODULEENTRY32结构里面的值。

然后我们再选择完整转存,保存到磁盘文件。

最后我们点击运行一下:

居然出现了一个错误。这就很崩溃了。

但是办法总比困难多,一番查询就会知道,加壳程序会对程序的IAT做手脚,破坏原程序的输入表是加密外壳必须具备的功能。所以上面这个程序虽然我们把它的外壳去掉了,但是它的IAT已经被破坏了,所以无法调用系统API。

一些外壳会改变原程序IAT里面的内容,加壳的时候,由于壳会自建一个输入表,并且让原来的PE文件的数据目录里面输入表指针指向自建的输入表。这样PE文件装载器会对自建的输入表进行填写。而原来的输入表被外壳变形后储存。程序运行的时候外壳将变形后的输入表进行扫描,然后重新填写所有函数的地址。

要注意:因为IAT填写完之后,输入表的其他部分就不重要了,程序依靠IAT里面的函数地址就能正常运行,并且壳只是填了IAT里面的内容,对于输入表其他部分,可以说是已经破坏了,也就是说,加壳程序运行的时候,原程序的输入表已经不在了,内存里面就只有一个IAT。

所以像我们上面那样Dump数据后,文件里面的没有输入表的,自然程序运行不了。所以我们要重建输入表。

还有一些外壳,填写到IAT里面的并不是真正的API地址。它填的可能是外壳的HOOK API地址,这样程序每次调用API就会跳转到外壳中运行,这样外壳又可以获得控制权。

这个时候我们就要用到Import REC(全称:Import REConstructor) 这个软件了。

这个软件可以帮助我们重建程序的输入表,并且用起来很简单。

运行这个软件前我们要确保几个事情:

  • 目标文件已经被像我们上面那样给Dump下来了。
  • 目标文件正在运行
  • 我们事先得知道目标程序的真正OEP或者IAT的偏移量和大小。

所以如果完成了上面的Dump的步骤之后,我们再将原来的没有Dump的程序用OD打开,然后跟踪到OEP处:

得到真正的OEP(箭头所指)。

然后我们打开软件,在下拉栏里面找到目标进程:

然后在OEP框框那里填入正确的OEP的RVA,然后再点击IAT自动搜索,让软件自动搜索IAT的偏移量和大小:

如果OEP发挥作用,那么软件会弹出一个窗口:

 如果说我们没有正确的OEP,或者说软件没有找到IAT的偏移量,那么我们需要手动填入IAT的RVA和SIZE:

 完成上面步骤之后,我们点击获取导入表:

日志框:

这样就是API都读取成功了。

如果有读取不成功的,就会在下面这个框中显示 有效:否。

这里我们的API都能够识别,如果有不能识别的,右键这个框的空白处,然后选择跟踪级别1,然后点击“显示无效的”,如果还是有无效的,那么再右键空白处,选择跟踪级别2。

最后就到了修复程序的时候了,在下面这个地方的复选框中选中添加新节区:

这样软件会把新的输入表放在这个新的节区里面,这样会不可避免导致程序变大,我们也可以将输入表建在程序空白处,这样我们就得自己填写RVA了。

最后点击修正转储,选择我们之前Dump下来的文件进行转储,软件会生成一个新的文件,OEP也会被自动修正,这个文件就是最后修正了输入表的文件,点击运行:

完全没有问题。至此就脱壳完成了。

加壳程序: https://download.csdn.net/download/weixin_43575859/12337598

LordPE和Import REC在吾爱破解的爱盘里面都能找到。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LordPE是一款用于Windows操作系统的工具,用于可执行文件的解析和修改。它是一款功能强大的反汇编软件,常用于静态分析和动态调试。 LordPE主要用于逆向工程和软件安全方面。它可以对可执行文件进行解析,包括导出函数、导入函数、节表、资源等。它还可以查看和编辑文件的二进制代码,如修改函数地址、修改寄存器值等。 除了基本的解析和修改功能之外,LordPE还提供了其他实用工具。例如,它可以扫描文件中的恶意代码,帮助用户检测和清除病毒。此外,它还支持反汇编和调试操作,用于分析和跟踪程序的执行过程。 在使用LordPE时,用户需要具备一定的计算机知识和经验。因为操作不当可能会导致系统故障或安全问题。因此,使用者应该谨慎操作,并在了解其原理和功能的基础上使用该工具。 总结来说,LordPE是一款功能强大的反汇编软件,用于Windows操作系统。它具有解析和修改可执行文件的能力,并提供了其他实用工具,用于逆向工程、软件安全和程序分析等。但是,使用者需要注意安全和操作规范,确保正确使用该工具。 ### 回答2: LordPE是Windows操作系统上的一个辅助工具,用于分析和修改PE(可执行和可链接)文件。 而Win10是Windows 10操作系统的简称,它是微软公司推出的最新一代Windows操作系统。Win10相对于之前的版本来说,有很多改进和创新,包括界面风格的变化、新功能的添加以及性能的优化等。 LordPE在Win10下仍然可以成功运行,并且能够与Win10的系统文件兼容。用户可以使用LordPE工具来查看和修改Win10下的PE文件,以便满足特定的需求。例如,用户可以通过LordPE来检查PE文件的结构、分析其导入和导出函数等信息,或者修改PE文件的某些参数以实现特定的功能。 使用LordPE工具需要一定的技术知识和经验,因为涉及到对PE文件的解析和修改。用户在使用时需要小心操作,以免对文件造成不可恢复的损坏。 总之,无论是在Win10还是其他版本的Windows操作系统上,LordPE都是一个强大的辅助工具,用于分析和修改PE文件。使用者可以根据自己的需求,结合LordPE工具来实现对Win10 PE文件的定制化操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值