区段减肥,去除垃圾区段,重建PE。

区段减肥,去除垃圾区段,重建PE。

这个需要一点PE知识,没有也不要紧,跟着一起学,积累经验。

备份好脱壳程序,区段减肥有时过量会导致程序无法运行。

这次区段减肥只是例子,大家要学会举一反三。

-----------------------------------------------------------

目标程序是用Armadillo CopyMem-ll +Debug-Blocker加壳的98记事本,原程序52K --> 436K,脱壳后文件大小达到了656K,比脱壳前多出了10几倍.

 

加壳前文件的区段

----------------------------------------------------------

节区名称  节区大小  虚拟地址  Raw_尺寸  Raw_偏移  节区属性

----------------------------------------------------------

.text     00003FD4  00001000  00004000  00001000  60000020

.data     0000084C  00005000  00001000  00005000  C0000040

.idata    00000E02  00006000  00001000  00006000  40000040

.rsrc     00004FB8  00007000  00005000  00007000  40000040

.reloc    00000AC6  0000C000  00001000  0000C000  42000040

 

加壳后文件的区段

----------------------------------------------------------

节区名称  节区大小  虚拟地址  Raw_尺寸  Raw_偏移  节区属性

----------------------------------------------------------

.text     00004022  00001000  00000000  00000000  60000020

.data     0000083C  00006000  00000000  00000000  C0000040

.idata    00005E3C  00007000  00000000  00000000  40000040

.reloc    00000ADE  0000D000  00000000  00000000  42000040

.text1    00030000  0000E000  00014000  00001000  E0000020

.adata    00010000  0003E000  00005000  00015000  E0000020

.data1    00010000  0004E000  00006000  0001A000  C0000040

.reloc1   00010000  0005E000  00002000  00020000  42000040

.pdata    00030000  0006E000  0002A000  00022000  C0000040

.rsrc     00005000  0009E000  00005000  0004C000  40000040

 

脱壳后文件节表:

----------------------------------------------------------

节区名称  节区大小  虚拟地址  Raw_尺寸  Raw_偏移  节区属性

----------------------------------------------------------

.text     00004022  00001000  00003FD4  00001000  60000020

.data     0000083C  00006000  0000084C  00005000  C0000040

.idata    00005E3C  00007000  00005E02  00006000  C0000040

.reloc    00000ADE  0000D000  00000AC6  0000C000  42000040 *********

.text1    00030000  0000E000  00020000  0000D000  E0000020 *********

.adata    00010000  0003E000  00010000  0002D000  E0000020 *********

.data1    00010000  0004E000  00010000  0003D000  C0000040 *********

.reloc1   00010000  0005E000  00010000  0004D000  42000040 *********

.pdata    00030000  0006E000  00030000  0005D000  C0000040 *********

.rsrc     00005000  0009E000  00005000  0008D000  40000040

.mackt    00001000  000A3000  00001000  00092000  E0000060

其中.rsrc是文件资源节,.mackt节是imprec修复输入表时候新加的节。

 

容易发现有用的节只有

----------------------------------------------------------

节区名称  节区大小  虚拟地址  Raw_尺寸  Raw_偏移  节区属性

----------------------------------------------------------

.text     00004022  00001000  00004022  00001000  60000020

.data     0000083C  00006000  0000083C  00005000  C0000040

.idata    00005E3C  00007000  00005E3C  00006000  C0000040 

.rsrc     00005000  00009E00  00005000  0008D000  40000040

.mackt    00001000  000A3000  00001000  00092000  E0000060

其他节都是脱壳后留下的无用的垃圾,所以只要将它们删掉就可以了达到我们减肥的效果了。当然对具体的壳也要删除的节也不同,具体问题具体分析吧:)。

 

进入正题

 

第一步:从节表中删除

先纪录这几个节的起始位置,几个节的Raw是从0000D0000009E000-1

LordPE中PE编辑器中在这几个节点右键选“清除区段”。

 

第二步:调整节表属性

只是删除了节表项目和文件中内容还不行,还要设置好节属性。 可以通过编程实现资源节的RVA调整,使RVA偏移等于文件偏移,较麻烦,且.mackt存有输入表信息很多RVA值不好改动。 我们用简单的办法,不动它的RVA地址,只改变它的文件偏移。

 

用PE编辑器中,打开区段,选择.rsrc节,编辑,因为删除的节首的ROffset为0000D000,所以现在.rsrc节的节首ROffset为0000D000,更改!

.rsrc下面的节.mackt的Raw_偏移 = .rsrc节的Raw_偏移 + .rsrc节的Raw_尺寸 = 0000D000 + 00005000 =00012000,故更改.mackt 节的Raw_偏移为 00012000 

 

还要调整一下.rsrc节上面的节.idata的节区大小,保证相邻节的VA地址是连续的

 

(.rsrc节的虚拟地址0009E000) - (.idata节的虚拟地址00007000) = 00097000 所以设置.idata的节区大小为97000

 

第三步:从文件中删除

HexWorkshop打开该文件,选择偏移0000D0000009E000-1全部删除!

 

保存,656K --> 76K,比起原先52K虽然还大了一点,但已经比较满意了。

 

减肥两大法则

1、          Contains(包含)有标记的区段一般不能删除,没有标记的可优先考虑

2、          OD载入需要减肥的文件,忽略所有异常,打开内存镜像,分别在各个区段上F2下断,F9运行!如果程序能够跑起来的话,那么这个区段一般就可以删除掉了(无用/垃圾区段)!

心中有数

熟悉5中常见的语言特征以及特征区段!

 

附录

Contains

.text     代码段,我们反编译程序经常看到。

.data     数据快,程序初始化用。

.idata    输入表

.rsrc     全部资源,如图标,菜单,位图。

.reloc    保存基地址重定位。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值