栈迁移
原理
栈迁移主要利用了leave_ret这个指令
| leave | 返回上级函数时,恢复原本的栈空间 | leave | mov esp,ebp pop ebp |
|---|---|---|---|
| ret | 返回上级函数后,执行上级函数的命令 | ret | 等同于 pop eip (不存在这样的指令 |
esp
'''
ebp
ret
在函数的先执行到leave指令时,会将ebp处填充的地址pop到ebp中去,这样栈基地址发生了变化,在下次的栈位置就会发生变化

有个图对这些指令变化阐述的比较清楚
来自栈迁移的原理&&实战运用 - ZikH26 - 博客园 (cnblogs.com)


最低0.47元/天 解锁文章
4702

被折叠的 条评论
为什么被折叠?



