首页
社区
课程
招聘
[分享]手动脱壳区段优化PDFConverterUltimate
发表于: 2013-3-16 16:50 4165

[分享]手动脱壳区段优化PDFConverterUltimate

2013-3-16 16:50
4165
本人菜鸟一个今天没事下载了个FoxPDF PDF Converter Ultimate玩玩,下载后发现加壳,想来很久没练习了就拿来试试。
下载地址:http://www.foxpdf.com/PDF-Converter/Pdf-Converter-Ultimate.exe

用PEID查壳为ASPack 2.12 -> Alexey Solodovnikov;区段如图:

打开OD加载程序如下:
00DCC001 >  60              PUSHAD
00DCC002    E8 03000000     CALL PDFConve.00DCC00A
00DCC007  - E9 EB045D45     JMP 4639C4F7
00DCC00C    55              PUSH EBP
00DCC00D    C3              RETN
我们用ESP定律吧,先看寄存器 ESP  0012FFC4,按F8一次,看到了寄存器  ESP 变为 0012FFA4;
下硬件断点,HR 12FFA4 回车 F9 程序断下,
00DCC3B0   /75 08           JNZ SHORT PDFConve.00DCC3BA
00DCC3B2   |B8 01000000     MOV EAX,1
00DCC3B7   |C2 0C00         RETN 0C
00DCC3BA   \68 E4065C00     PUSH PDFConve.005C06E4        ;压入 真实入口地址
00DCC3BF    C3              RETN
接着F8两次到了OEP了。
005C06E4    55              PUSH EBP
005C06E5    8BEC            MOV EBP,ESP
005C06E7    83C4 F0         ADD ESP,-10
005C06EA    53              PUSH EBX
005C06EB    B8 F4FE5B00     MOV EAX,PDFConve.005BFEF4
005C06F0    E8 B363E4FF     CALL PDFConve.00406AA8
我们用LORDPE转存文件,进程右键--修正映像大小,右键--完整转存,保存为dumped.exe 。
打开ImportREC附加进程,到OD复制入口地址粘贴到OEP,点击自动获取,获取输入表。
修正转存文件dumped.exe,得到dumped_.exe 运行试试,可以运行。下面练习手动修复区段去除多余的垃圾区段。
用PEID查看dumped_我们要去除最下面的三个区段,.mackt是我们的输入表,待会重新建立,所有也不要了。
把dumped_复制一个备用;用Hex Workshop打开dumped_,我们把需要的段保存下来,.idata是放输入表的,我们
待会要新建所以删掉,我们保存.tls .rdata .reloc ,分别为 tls.bin rdata.bin reloc.bin ;
例如TLS表起始位置是1CE000 大小为 1000,在Hex Workshop中CTRL+G来到1CE000,编辑--选择字块
字块大小1000 十六进制,文件--保存所选--tls.bin ; 其他方法一样,.rsrc是资源段我们也重新构建。
保存好后,来到1CB000 删除到文件结尾的全部数据,编辑--插入--添加4000大小的字节保存。
为什么添加这么大的空间呢,从ImportREC得知输入表要3788根据段对齐所以要4000.
用lordPE删除.idata之后的所有区段,编辑属性大小为4000保存。
来到ImportREC,去掉 添加新区段 ,在RVA处填入 .idata的起始位置1CB000,修正转储得到dumped__
用LORDPE把其他几个保存的区段添加上;区段--右键--从磁盘载入段。按顺序tls.bin rdata.bin reloc.bin 保存。
现在来导出资源段,现在我们修复的程序.idata段比之前大了1000,所以资源段起始位置就会大1000 即1EB000
用DT_FixRes DEMO打开dumped.exe,Dump项在NEWRVA填入处1EB000  对齐1000,保存。
用LORDPE把刚导出的RSRC区段添加上,接着修改目录;

资源的 RVA 1EB000
TLS表  RVA  1D0000
保存,然后再修改TLS表详细值如图:


目录的TLS 是填写 .rdata的起始RVA ,TLS表是 根据刚脱壳的程序的来填写的,因为我们加大了idata所以这里也要对应,
只要是.idata之后的地址都要加大1000.修改好之后保存就可以测试了。是不是能运行了呢?

最后我们再根据其他无壳的DELPHI程序设置下段属性,用PE Optimizer优化下就可以了。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢分享,学习了
2013-3-16 21:33
0
游客
登录 | 注册 方可回帖
返回
//