脱壳后的PE文件的优化

资源的重建

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

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

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

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

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

这是重建资源之前。

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

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

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

                                                                     

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

上面的全部做完之后,还需要修正一下PE头。同样还是使用LordPE的PE编辑器。

  • ExtryPoint:脱壳时的OEP,一般我们在用Import REC修复输入表的时候会自动修正这个值。
  • BaseOfCode:代码段的其实RVA,这个我们可以在OD的虚拟内存映射窗口那里查看,代码段通常是.text段,本例中也是。在OD窗口中如下图:。可以看到RVA是1000h。
  • BaseOfData:数据段的起始RVA,一般是指代码以外部分开始的RVA,本例就是.rdata区块的RVA:5000h。

所以,PE文件头的信息应该按下图填写:

保存后就大功告成了。

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值