首页
社区
课程
招聘
[原创]檔案脫殼後的優化
发表于: 2011-4-14 20:25 4973

[原创]檔案脫殼後的優化

2011-4-14 20:25
4973
今天小弟来发一个手动恢复档案区段的笔记

目标档案xPELister
壳层:PECompact

利用VirtualProtect脱壳之后,档案的区段被PEcompact压缩修改

开始来恢复,首先,我们先找区段的位置

档案室delphi写的,所以区段应该会长得像这样


我们开始手动找区段

这个程序的OEP是4835b0,按照delphi的特色,他的OEP都是在整个code段的最后面,所以我们可以找到code后面的第一个区段

由于区段都是1000h的倍数,所以下面会有很多00h的数据,看到这个就是到了一个区段的末端了


我们找到的第一个区段:484000
减掉档案基值之后,RVA是84000,我们纪录下来

接下来我们在488000的地方找到了IAT


按照delphi的区段,CODE后会有DATA和BSS,之后才是.idata,所以她的BSS区段是空白的,我们分1000h大小给他

目前找到的区段
CDOE 1000
DATA 84000
BSS 86000
.idata 88000

我们继续找,接下来应该会在48c000的地方看到一串数据

这个就是.rdata的区段资料,是delphi的tls
然而按照delphi的区段,.idata之后应该是.tls,才到.rdata,所以他.tls的区段是空白的,我们再分1000h给他


目前找到的区段
CDOE 1000
DATA 84000
BSS 86000
.idata 88000
.tls 8b000
.rdata 8c000

这个地方由于tls通常数据都不多,所以都是rdata-1000h

接着我们在继续找,应该都会看到都是0的地方了,那就代表.reloc是空的,然后.rsrc区段我们要重建,所以不要管他

所以我们找到的区段数据
CDOE 1000
DATA 84000
BSS 86000
.idata 88000
.tls 8b000
.rdata 8c000
.reloc 8d000
.rsrc 8e000

接着,我们用Import REC,读取IAT,并且在option里面勾起 建立新导入表。
并且不要关闭OD和ImportREC

接着我们修复rsrc区段

先用这个工具修复rsrc区段:FixRes
之后再填入新的RVA 8e0000 档案对齐输入1000
并且将资源dump下来

接着,我们开始恢复区段,在此小弟用CFF explorer
参考其它的delphi,恢复区段
并且将我们找到的数据输入进地址

修复完后应该是这样


存档后,将.reloc后面的资料全部删掉
可以利用lordpe的这个选项


用PEtools将.idata区段中的资料清空

将dump下来的rsrc载入到档案最后面
并且恢复directories里面的地址
接着将IAT 重建到.idata的区段

修复之后,我们执行看看
可以执行了,这样我们区段就恢复完成了,接下来就是可以用程序将程序优化一下

刚dump并且修复的档案大小 1.03MB
修复后的档案大小 642KB
优化了大概一半的大小

小弟笔记到此,希望对各位大大有用处

小弟我附上优化前后的档案
优化前: before.7z
优化后: finish.7z

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
台湾的??
2011-4-22 11:41
0
游客
登录 | 注册 方可回帖
返回
//