【发布时间】:2015-02-23 14:23:29
【问题描述】:
eip 寄存器是 32 位的,每增加一条新指令,它就会递增。那么当它达到 32 位数字的最大值时会发生什么:4294967295。
【问题讨论】:
标签: assembly x86 cpu cpu-registers eip
eip 寄存器是 32 位的,每增加一条新指令,它就会递增。那么当它达到 32 位数字的最大值时会发生什么:4294967295。
【问题讨论】:
标签: assembly x86 cpu cpu-registers eip
通常情况下,您不会让它发生。 %eip 不会无条件递增;它受流控制指令的影响(如jmp、call、bcc 等)。
实际上,这种行为是不可预测的。在某些 CPU 上,溢出 %eip 会导致错误。在其他一些情况下,它会默默地归零。
这些差异导致了(原始)Xbox 引导 ROM 的著名漏洞利用,因为开发套件使用 AMD CPU(在环绕时出现故障),而生产硬件使用英特尔 CPU(但没有)。有关详细信息,请参阅第 140 页左右的Hacking The Xbox: An Introduction to Reverse Engineering。
【讨论】: