首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
安全知识 :: 脚本攻防

脱壳后软件减肥大法


http://www.gipsky.com/
最近练习脱壳,将用98的记事本用Armadillo 3.10加壳作试验,52K 324K脱壳后文件大小达到了588K,比脱壳前竟然大了10倍多,于是想将之减肥,查看雪精华,没找到这方面的内容。正在学习PE文件结构,于是自己动手试验一下。





先看看加壳前文件的sections



建议装入地址: 0x00400000

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

节区名称 节区大小 虚拟地址 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



加壳后:

建议装入地址: 0x00400000

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

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

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

.text 00003FD4 00001000 00000000 00000000 60000020

.data 0000084C 00005000 00000000 00000000 C0000040

.idata 00005E02 00006000 00000000 00000000 40000040

.reloc 00000AC6 0000C000 00000000 00000000 42000040

.text1 00020000 0000D000 00014000 00001000 E0000020

.adata 00010000 0002D000 00005000 00015000 E0000020

.data1 00010000 0003D000 00006000 0001A000 C0000040

.reloc1 00010000 0004D000 00002000 00020000 42000040

.pdata 00030000 0005D000 0002A000 00022000 C0000040

.rsrc 00005000 0008D000 00005000 0004C000 40000040



脱壳后文件节表:

建议装入地址: 0x00400000

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

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

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

.text 00003FD4 00001000 00003FD4 00001000 60000020

.data 0000084C 00005000 0000084C 00005000 C0000040

.idata 00005E02 00006000 00005E02 00006000 C0000040

.reloc 00000AC6 0000C000 00000AC6 0000C000 42000040

.text1 00020000 0000D000 00020000 0000D000 E0000020

.adata 00010000 0002D000 00010000 0002D000 E0000020

.data1 00010000 0003D000 00010000 0003D000 C0000040

.reloc1 00010000 0004D000 00010000 0004D000 42000040

.pdata 00030000 0005D000 00030000 0005D000 C0000040

.rsrc 00005000 0008D000 00005000 0008D000 40000040

.mackt 00001000 00092000 00001000 00092000 E0000060



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



容易发现有用的节只有

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

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

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

.text 00003FD4 00001000 00003FD4 00001000 60000020

.data 0000084C 00005000 0000084C 00005000 C0000040

.idata 00005E02 00006000 00005E02 00006000 C0000040

.rsrc 00005000 0008D000 00005000 0008D000 40000040

.mackt 00001000 00092000 00001000 00092000 E0000060

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



Let’s go!



第一步:从节表中删除

先几下这几个节的起始位置,几个节的Raw是从0000C000到0008D000-1

LordPE中PE Edit中在这几个节点右键选"wipe section header",将这几个节从节表中删除.





第二步:从文件中删除

HexWorkshop打开该文件,选择偏移0000C000到0008D000-1,然后按del删除。





第三步:调整节表属性

只是删除了节表项目和文件中内容还不行,还要设置好节属性。



可以通过编程实现资源节的RVA调整,使RVA偏移等于文件偏移,较麻烦,且.mackt存有输入表信息很多RVA值不好改动。

我们用简单的办法,不动它的RVA地址,只改变它的文件偏移。

PE Edit中 先点击sections,然后选择.rsrc节,右键edit section header

因为删除的节首的Raw offset为0000C000,所以现在.rsrc节的节首Raw Offset为0000C000,更改后。



.rsrc下面的节.mackt的Raw_偏移 = .rsrc节的Raw_偏移 .rsrc节的Raw_尺寸 = 0000C000 00005000 =



00011000

故更改.mackt 节的Raw_偏移为 00011000



还没完,如果呢现在试验一下,就会报告不是有效的win32程序

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

(.rsrc节的虚拟地址0008D000) - (.idata节的虚拟地址00006000) = 00087000

所以设置.idata的节区大小为00087000





第四步:调整数据目录表属性

由于我们把.reloc节给删除了,所以还要在数据目录表中将Relocation Table清0,当然这一步不是必要,

因为exe文件基本上不会用到这一节的。





保存,试验一下,是不是OK了呢,588K 72K,比起原先52K虽然还大了一点,但已经比较满意了。
<< 病毒加壳技术与脱壳杀毒方法解析 用Armadillo标准加壳的程序的脱壳和引入表修复方案 >>
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备14013333号-8