ESP定律的原理

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

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

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

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

posted @ 2017-08-18 11:11  luzhlon  阅读(607)  评论(0编辑  收藏  举报