吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5145|回复: 7
收起左侧

[原创] 新手看ESP定律

[复制链接]
残情·离天 发表于 2015-9-30 21:34

楼主是新的不能再新的人,最近空闲了一些开始看官方培训视频。看了xiaomo的视频前两集,对ESP定律很感兴趣,于是搜了一些资料,希望能了解ESP定律的原理。实例解释用的就是官方培训第一课的UPX壳的程序。有任何不对的地方,还请各位大牛多多指点,新人求罩。第一次发帖,不符合规则的地方还版主大大请告诉我。

1. ESP是什么
    ESP(Extended stack pointer)是指向当前栈的栈顶
    EBP(Extended base pointer )指向系统栈最上面一个栈(当前栈)的底部。
2. ESP定律的原理
    “堆栈平衡原理”
    a. 基础知识[3]:
    PUSHAD: 依次把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI等压入栈中
    POPAD: 把栈中的值依次弹到EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX等寄存器中,栈需要状态还原。
    OEP(Original Entry Point)程序的入口点
    b. 实例解释
    初始ESP:0012FFC4
    执行完PUSHAD后的ESP:0012FFA4指向栈顶,此时寄存器的值被存放在0012FFC0~0012FFA4中,图片上用红圈圈出来了。
    设置硬件访问断点,目的是实现在访问同一内存时,截获中断。我们希望在POPAD的时候截获中断,此时应当处于POPAD命令后,OEP之前。
    然后再单步执行到ESP:0012FFC4的OEP,就可以脱壳了。
    P.S. 硬件断点和内存断点的区别([1])
        内存访问:你下断后OD把你下断的内存设置为不可访问,这样你下访问断点就异常,就被OD捕获.
        内存写入:下这个断后OD把内存设置为不可写.然后捕获写入时产生的异常.
        硬件断点:硬件断点是利用CPU中的DRx寄存器来设置的.硬件断点最多能同时设置4个
3. ESP定律的适用范围([2])
    几乎全部的压缩壳,部分加密壳。只要是在JMP到OEP后,ESP=0012FFC4的壳,理论上我们都可以使用
一般可以认为[2]:
    1、在命令行下断hr esp-4(此时的ESP就是OD载入后当前显示的值)
    2、hr ESP(关键标志下一行代码所指示的ESP值(单步通过))

参考:
[1] http://bbs.pediy.com/archive/index.php?t-125305.html
[2] http://www.52pojie.cn/thread-294844-1-1.html
[3] http://blog.chinaunix.net/uid-20776863-id-121973.html
[4] http://www.52pojie.cn/thread-14335-1-1.html

OEP

OEP

刚载入OD时

刚载入OD时

ESP突变时

ESP突变时

硬件断点

硬件断点

OEP前的JMP

OEP前的JMP

点评

一看就是xp脱的upx壳  发表于 2015-9-30 22:35

免费评分

参与人数 2热心值 +2 收起 理由
请叫我雷锋同学 + 1 我很赞同!
青霄 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

青霄 发表于 2015-9-30 21:40
上次看一个教程有提到这个东西,感谢分享,收藏了
幻觉 发表于 2015-9-30 23:05
www52pojiecn 发表于 2015-11-5 22:25
liang234066665 发表于 2015-11-5 22:34
不错,讲的挺详细。学习了
掂软心内 发表于 2015-11-6 18:55
LZ辛苦,感谢分享~
海水天天蓝 发表于 2015-11-27 22:29 来自手机
楼主辛苦,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 15:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表