首页
社区
课程
招聘
答fxbzn:DUMP出来的程序如何优化 之 一些建议
发表于: 2005-3-10 23:04 7438

答fxbzn:DUMP出来的程序如何优化 之 一些建议

2005-3-10 23:04
7438

PE脱壳后,文件长度一般会增大,原因有以下几点:

1、脱壳后,壳的尸体依然存在;
2、脱壳后,重新建立了新的Import节、Reloc节等;
3、有些加壳程序,将原程序的某些节跟外壳增加的某些节合并后,搬移到了其他位置。
4、脱壳时候,因为采用的是dump内存,所以,在内存中对齐的PE镜象一般也会大于原始的PE文件,各个节的dump实际尺寸也会较原始PE文件的实际尺寸大。

解决方案:
    (1) 脱壳后,将各个有效的节分别转存到临时文件中。如:将“.text节,单独转存到一个text_tem.bin中”,其它节也是同样暂存到各个文件中,没有用的节(如壳尸体),抛弃掉。
    (2) 首先将text_tmp.bin等节中没有用的多余部分去掉,一般是最后对齐的内存镜象的多余部分。可以通过2进制编辑器,查看最后部分,一般是全00的部分。
    (3) 对应有多少个有效section,重新构造PE头,尽量做到最小。
    (4) 重新构造PE:将新的PE头、.text、.Import、.Export、.Data、..reloc等一次连接起来到一个新的PE文件。如果为了尽量缩小PE尺寸,连接前还可以考虑将某些节合并成一个节(如:将.Data,.Import,.Export,.Reloc等合并到一个节中)。
    (5) 按照PE格式,调整新的PE文件。这个过程比较复杂,包括:
        1、按照新的PE头中节的队齐要求对齐各个节的起始RVA
        2、对于各个节中RVA相关的地方,根据新的PE头重新计算并调整。如
           资源节中的各个RVA,Reloc中对应的重定位项,import和export中
           的某些地址指针等。
        3、按照文件对齐要求对齐新的PE文件。
    (6) 测试新的PE,如果有错误,通过跟踪调试,重新执行第(5)步骤,直到正常运行。

    对于(5)中调整相关的RVA,可以通过写一个工具完成,如计算调整资源节、Reloc节等,如果调整的比较好,新的PE一般跟原来的几乎一样,甚至会更小。我曾经作过一些调整工具,可以将:资源节、Reloc节等自动调整,并可以搬移到新的PE的任何可用的节空余部分,这些工具写起来很简单,可以根据需要自行编写,同时通过编写这些工具,可以大大增加对PE格式的认识。需要说明的是:大部分表(节)的起始地址一般要求双字边界的地址(即起始地址为4的整数倍,如0x634b4有效,0x634b1-0x634b3无效),如资源表、Reloc表等。其他没有什么可注意的,只要细心就完全可以做到。

                                              Spring.W
                                              2005.3.10


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (7)
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
2
学习了,强啊
2005-3-10 23:16
0
雪    币: 257
活跃值: (369)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
3
的确是高手啊!
2005-3-11 00:42
0
雪    币: 690
活跃值: (1826)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
老大要是举个例子,就更好啦。
2005-3-11 10:50
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
5
学习!
2005-3-11 11:53
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
学习!
2005-3-11 12:45
0
雪    币: 303
活跃值: (466)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
还没有到刻意追求体积的境界
2005-3-11 18:14
0
雪    币: 250
活跃值: (103)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
这篇文章太好了,希望有更好的同类文章出现,让我等菜鸟赏眼!
2005-3-11 20:52
0
游客
登录 | 注册 方可回帖
返回
//