2016-4-19(YPP)
<此篇为脱壳入门教程>
UPX简介
①UPX加壳压缩
②寻找OEP
③Dump内存映像
④重建IAT
⑤正常运行
首先对Win98记事本程序 NOTEPAD.exe用UPX进行压缩处理
PE检测信息如下:
Upx版本:3.91
压缩前:(10CC为程序真正的入口点,Original Entry Point简称OEP)
压缩前后文件大小的变化(压缩后文件名更改为notepad_upx.exe)
GUI版本的UPX压缩方法如下:
-------------------------------------------------------------------------------------------------------------
得到压缩后的记事本程序:notepad_upx.exe
下面开始“手脱”
Ollydbg载入notepad_upx.exe,停在0040E8C0 PUSHAD
0040E8C0并非程序真正的入口点,寻找真正OEP的关键是寻找“跳转”,单步往下进行,若遇到大范围跳转则很可能遇到OEP,
简化实例,跳转OEP的指令位于“末端”(往下翻页)如图:
004010CC就是未进行压缩的文件的入口点,F4至此,F7步入即可来到OEP。
已成功寻找OEP,下步重建Dump映像
抓取的前提是:内存映像已还原
到达OEP时,即可抓取
打开Lord PE-Options
默认勾选:Full dump:paste header from disk <PE头的信息直接从磁盘文件获得>
选中notepad_upx.exe该进程,右键执行: dump full命令
内存抓取的文件为 dumped.exe 此时还不能运行!下一步是”重建IAT”
还是在OEP处,打开ImportREC选中该进程。
填入OEP的RVA:10CC,自动检测IAT的偏移和大小
单击“获得输入表”,显示所有DLL有效!
单击“fix dump”修复转存文件
选择dumped.exe,修复完成后自动更名为dumped_.exe
此时脱壳已完毕,重建IAT后,能够正常运行!
END.