手动脱壳_ESP定律

UPX是一种常见的压缩壳。通过PEID检测到是UPX的壳的话,可以用如下四种方式来脱壳:

单步跟踪法、ESP定律、内存镜像法、POPAD查找法
1.单步跟踪法
执行单步跟踪程序,当发现大跨度跳转如JMP、JE、RETN等指令出现时,程序入口点(Original Entry Point,OEP)可能就在附近。
2. ESP 定律法
ESP是栈顶指针寄存器,保存了下次将要弹出的内容,其遵循堆栈平衡原理,在壳对程序进行操作加密或者压缩时,会把程序的 OEP 压入栈中,当壳执行完成后,进行解密或者解压缩,会把真正的 OEP 从栈中弹出,从而找到程序入口点。
在OD中,按F7键单步执行程序,当ESP 寄存器变红时,右击ESP,以便数据窗口跟随,对该处设置DWORD 硬件断点,然后按F9键运行程序跟踪到 OEP。
3.2次内存镜像法
在壳进行解密或解压缩时,最后释放的是资源区段:.rsrc,这个区段被释放完全后,说明整个程序已经被全部解密。在OD中,按组合键“Alt+M”打开内存窗口,找到第一个资源区段,在此设置断点,按“Shift+F9”组合键运行,再到内存窗口找到地址为401000的代码区段设置断点并运行,结合单步跟踪法找到 OEP。
找到OEP 后使用 OD 的 Dump 功能将当前程序代码保存下来,再使用输入表重建工具 ImportREC 修复该程序。

案例 ESP定律

查壳

OD打开

F8 发现ESP、EIP变红了

1、右击ESP选择Follw inDumb(数据窗口中跟随)

2、选中前4个字节右击选择Breakpoint 、Herd ware,on access  (设置硬件断点)

3、F9运行  注意^

4、点0040E620 (也就是jnz下面的一行)F4 、F8

5、继续F8 发现进入OEP 直接右击选择Dump debugged process  Dump下来

6、之后可以用输入表重建工具 ImportREC 修复该程序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值