脱壳后的PE文件的优化

资源的重建

有些软件脱壳后的资源不可查看,不能编辑或编辑后保存不了,这是因为在脱壳后资源没有完全释放。例如,ICON图标、Group icon(组图标)等在程序没有被执行时仍然会被系统读取,但他们一般是不能压缩的,因此被存放在外壳本身的代码空间中。正常脱壳后,资源段的其他数据都已恢复,但是图标等资源还留在外壳。所谓资源重建,就是把这些资源移回.rsrc区块。

首先将实例程序RebPE.exe进行脱壳(该实例程序链接放在文章末尾)。脱壳后我们用Resfixer(该软件以及下面要用的软件的链接都放在文章末尾)打开dumped_.exe文件(就是脱壳后的文件),打开后的样子如下图:

脱壳后的PE文件的优化

红色背景的就是在外壳中的资源。可以看到很多图标都在外壳里面,现在我们要把这些资源都整合到一起。 重建资源我们使用另一个软件:DT_FixRes。

打开DT_FixRes,选择我们脱壳后的文件,然后点击Fix->Fix Resources。做完这两步后就会如下图所示:

脱壳后的PE文件的优化

显示 Resource was fixed successfully。然后你会发现,原来的脱壳后的文件由104KB变成了144KB,但我们明明是要优化PE文件,怎么现在还变得更大了。不要急,我们还没做完。刚刚那一步,就是把所有段里面的资源信息全部整合到一个段里面去了,我们可以用LordPE的PE编辑器打开文件看看。

脱壳后的PE文件的优化

这是重建资源之前。

脱壳后的PE文件的优化

这是重建资源之后。能看到多出了一个区段,这个区段就是软件将资源全部整合到一起之后的区段。但是这样的话,PE文件比之前要大了许多,并且里面有些段已经不需要了,比如之前的资源段(因为我们已经有了一个包含完整资源的新的区段),RVA为  9000,还有外壳所在的段,RVA为13000。

在LordPE里面右键选择移除区段可以删掉这些去区段,但是只是删除了节表,并没有删除节区。所以要删除节区可以用到另一个软件:CFF Exploer。

打开CFF Exploer,打开整合资源后的脱壳PE文件,然后点击Section Headers,然后在你要删除的节区上右键,按下图所示操作:

脱壳后的PE文件的优化                                                                      

 删除后保存,文件就只有76KB大小了,比一开始的104KB小了不少。到此就完美结束了。

实例程序链接:https://download.****.net/download/weixin_43575859/12337598

所用到的软件网址:https://tools.pediy.com

该网址可能会提示有毒,不过我试过了没什么事,并且这是看雪提供的,应该没有问题。