博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ESP定律的原理
阅读量:7153 次
发布时间:2019-06-29

本文共 301 字,大约阅读时间需要 1 分钟。

壳代码在一开始会使用PUSHAD指令将所有的寄存器入栈,此时ESP所指向的内存记录着某一个寄存器的值

然后我们ESP指向的内存处下一个硬件内存访问断点

执行完壳代码后会将所有的寄存器值出栈以平衡堆栈POPAD,CPU需要访问原ESP记录的值,壳代码解压完程序代码后,最后平衡堆栈时必然要从ESP所指向的内存中读取之前存入的某个寄存器的值,所以必定会触发此断点,此时离真正的OEP也不远了

PUSHAD指令压入32位寄存器,其入栈顺序是:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI

转载于:https://www.cnblogs.com/luzhlon/p/7388537.html

你可能感兴趣的文章
virtualenv下配置nginx uwsgi Django
查看>>
vscode左侧文件不同颜色标识含义
查看>>
CF 1182F Maximum Sine——根号算法
查看>>
Find Minimum in Rotated Sorted Array leetcode
查看>>
在Laravel中使用mongoDB
查看>>
Linux安装Java
查看>>
inotify
查看>>
使用BCrypt算法加密存储登录密码用法及好处
查看>>
汇总博客常见的api接口地址(windows live write)
查看>>
MySQL的NO_BACKSLASH_ESCAPES
查看>>
iOS 之 按钮操作
查看>>
160809225-叶桦汀 循环结构程序设计
查看>>
UVA 1292 Strategic game 树形DP
查看>>
c# 解释器模式与sping.net表达式的结合应用(金融里经常需要用到公式,这个公式是抽象的需要自己解释)...
查看>>
设计模式之代理模式
查看>>
当我一想到还有那么多的IE6用户
查看>>
C# WinForm 上传文件到服务器
查看>>
有关无法打开预编译头文件错误的思考
查看>>
MAS&链式编程思想
查看>>
MVC 设计模式概述
查看>>