脱壳入门(三)之UPX压缩壳
一、找OEP
- 查壳:UPX壳、链接器版本2.25(可能是Delphi程序)、区段信息
- 根据ESP定律寻找OEP
OEP定律原理:壳代码就像一个函数,进入时会开辟堆栈、保存寄存器环境,退出时会恢复堆 栈、恢复寄存器。所以应该是堆栈平衡的,那我们可以在壳代码操作了堆栈后对堆栈设置访问或写入断点,然后运行程序,当断点命中的时候,应该就是退出壳代码的时候。在其附近单步几次,应该就能到达程序的原始OEP。
pushad
该条指令压栈后,esp下硬件断点,F9
运行
程序断下后,F7
运行一直到跳转OEP
跳转后,此处就是OEP了,完全符合Delphi的入口点特征
二、Dump内存
用OllyDump插件dump内存
三、修复导入表
利用ImpREC工具修复导入表