gpt4 book ai didi

x86 - 为什么不能直接设置指令指针?

转载 作者:行者123 更新时间:2023-12-03 12:30:13 26 4
gpt4 key购买 nike

The Wikipedia article about x86 assembly说“程序员不能直接访问IP寄存器”。

直接意味着使用 mov 和 add 等指令。

为什么不?这背后的原因是什么?有哪些技术限制?

最佳答案

您无法直接访问它,因为没有合法用例。有任何指令更改 eip会使分支预测变得非常困难,并且可能会引发一系列安全问题。

您可以编辑 eip使用 jmp , callret .您不能直接读取或写入 eip使用正常操作

设置 eip到寄存器就像 jmp eax 一样简单.你也可以做push eax; ret ,这插入了 eax 的值到堆栈然后返回(即弹出和跳转)。第三个选项是 call eax它调用 eax 中的地址。

阅读可以这样完成:

call get_eip
get_eip:
pop eax ; eax now contains the address of this instruction

关于x86 - 为什么不能直接设置指令指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8333413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com