本人菜鸟一个今天没事下载了个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优化下就可以了。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!