第一步:从节表中删除 先纪录这几个节的起始位置,几个节的Raw是从0000D000到0009E000-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打开该文件,选择偏移0000D000到0009E000-1,全部删除! 保存,656K --> 76K,比起原先52K虽然还大了一点,但已经比较满意了。 “减肥两大法则” 1、 Contains(包含) 有标记的区段一般不能删除,没有标记的可优先考虑 2、 用OD载入需要减肥的文件,忽略所有异常,打开内存镜像,分别在各个区段上F2下断,F9运行!如果程序能够跑起来的话,那么这个区段一般就可以删除掉了(无用/垃圾区段)! “心中有数” 熟悉5中常见的语言特征以及特征区段! 附录 Contains .text 代码段,我们反编译程序经常看到。 .data 数据快,程序初始化用。 .idata 输入表 .rsrc 全部资源,如图标,菜单,位图。 .reloc 保存基地址重定位
转载于:https://www.cnblogs.com/cracksa/archive/2012/08/30/debug_qdjf_7.html