首页
社区
课程
招聘
利用LordPE给脱壳后的文件减肥
2004-12-13 08:54 10801

利用LordPE给脱壳后的文件减肥

2004-12-13 08:54
10801
脱壳后的文件一般都要比原来肥了不少,给文件减肥其实就是把壳和一些垃圾数据切除掉。在yesky1的《脱壳后软件减肥大法》启发下,得出减肥的一般步骤:
1.找出多余的区块
2.利用PE工具,如Peditor,删除多余区块
3.利用Hex编辑器,如Hex Workshop,删除多余区块在文件所对应的部分
4.修正区块表属性和数据目录表
   a.修正区块表属性原则:要保持各个区块虚地址和文件偏移与上一个区段虚地址和文件偏移首尾相连,否则会弹出非法PE文件的警告。
   b.数据目录表的修正要看需要而定,比如,我们把重定向区块删除了,就要相应把数据目录的重定向数据清零。

上面的都是个人对yesky1方法的总结,具体原理请看原文。在这里我要介绍的方法是利用LordPE的split/unsplit功能给文件减肥。

废话少说,马上进入主题。在这里我们拿win2000下面的notepad.exe开刀,首先用Armadillo v3.75给它加个标准壳,然后把它脱掉(Armadillo标准壳脱文随处可找,熟手的话一两分钟就搞定)。这是原文件的区块表:


这是脱壳后的区块表:


前后比较一下可以看到文件肥了差不多13倍!其中.text1 .adata .data1 .pdata 都是多余区块(.mackt是ImportREC修复IAT产生的)。在这里我们有原文作比较当然一目了然就知道那些区块是多余的,但是往往我们搞crack哪可能有原文件(废话,有了还要脱壳干嘛~~)。

其实要判断某个区块是否多余很简单:用OllyDbg加载脱壳文件后对该区块下访问中断(在“内存”窗口选上该区块,然后按F2)


然后按F9运行,如果程序没有中断,并运行正常,就说明该区块是多余的。

找到了所有多余区块后,就可以开刀切了。我们用LordPE的PE Editor打开脱壳文件,进入区块表窗口,右键点split:


这样LordPE就把文件按区块切成一个个单独文件:


其中0header.LPE是文件头,1_text.LPE是区块.text,2_data.LPE是区块.data ...
接下来我们把之前找到的多余区块所对应的.LPE文件清零,结果如下:


清除了多余数据后我们需要做的只是把这些切割的文件组装回PE文件:同样的用LordPE打开脱壳文件,进入区块表窗口,这回我们右键点unsplit,选择上面split.ini文件,这时生成的文件就是减肥后的文件,看看:


只有68k,与原来的49.7k相比已经比较接近了。
这是减肥后的区块表:


当然如果我们不想看到那些Rsize == 0的区块.text1 .adata .data1 .pdata,大可以把它们删掉,然后按首尾相连的原则修复区块表。
在这里我们不但可以把split后多余区块文件清零,还可把一些区块尾部的空隙给切掉,进一步减少文件大小。注意,只能是切掉尾部的空隙,对于文件头部和中间空隙的切除需要调整整个程序的参考地址,工作量大,需要专门设计的程序来完成。

后记:该方法没什么技术含量,原理是yesky1的《脱壳后软件减肥大法》,只是操作起来比较方便简单而已。这些东西在各大侠眼里也许是不值一提的东西,所以没有写成教程的必要,小弟捡漏把它成文,希望对入门的人有点用处。


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

收藏
点赞1
打赏
分享
最新回复 (16)
雪    币: 220
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
XCyber 2 2004-12-13 08:57
2
0
unsplitted.exe
dumped_.exe
利用LordPE给脱壳后的文件减肥.doc

文件打包:
附件:paper.rar
雪    币: 890
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 85 2004-12-13 08:59
3
0
你可以直接用LordPE删除多余的壳区段
然后设置一定的选项重建PE就行了
雪    币: 220
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
XCyber 2 2004-12-13 09:16
4
0
试了一下fly的方法,原来这么简单的:D
真的是 ,哈哈

雪    币: 890
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 85 2004-12-13 09:27
5
0
写了很多
你也辛苦了

thank  :D
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
prince 16 2004-12-13 09:53
6
0
支持两位,知其然和通晓捷径对我们来说都是收获。谢谢。
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
pendan2001 4 2004-12-13 11:03
7
0
又是一个学习的机会啊:D
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
netxboy 2004-12-13 11:40
8
0
谢谢楼主。。不过能否详细说说如何重建PE

我现在就是遇到修改后说非法EXE的问题。j

我不知道怎么才能首尾连接,从哪里开始算。

还有如何用LoadPE验证~~。

谢谢,如果您有时间。。。。
雪    币: 159
活跃值: (339)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
Lenus 3 2004-12-13 12:52
9
0
很好~支持你哦~
不过觉得:用OllyDbg加载脱壳文件后对该区块下访问中断。
这个办法不是很稳妥。:D :D :D
雪    币: 220
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
XCyber 2 2004-12-13 17:36
10
0
楼上有什么好办法啊?共享一下吧:)
对区块下访问断点如果把程序所有功能都跑一遍应该就比较可靠了吧。

to netxboy:你看看yesky1的《脱壳后软件减肥大法》就明白的了

谢谢支持。如果不写出来,也不会知道原来有这么简单方法的:D
雪    币: 159
活跃值: (339)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
Lenus 3 2004-12-13 18:09
11
0
哪有什么好办法,只是凭感觉在胡言乱语,楼主不必在意。:D
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
netxboy 2004-12-13 23:48
12
0
yesky1的那篇文章不在这个板块么? 怎么我搜索作者名字也没找到他的这个文章.
雪    币: 223
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
systembug 2004-12-14 12:39
13
0
学习
再学习
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
学习中 2004-12-14 15:24
14
0
yesky1的那篇文章在哪啊,根本找不到
雪    币: 770
活跃值: (290)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
rainbow 1 2004-12-14 15:25
15
0
楼主的贴了看得舒服
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
学习中 2004-12-14 17:46
16
0
yesky1的那篇文章不在这个板块么? 怎么我搜索作者名字也没找到他的这个文章.
雪    币: 890
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 85 2004-12-14 18:01
17
0
在以前的论坛空间
等精华6出来会收录的
游客
登录 | 注册 方可回帖
返回