【问题标题】:What happens when the eip register reaches its maximum value?当 eip 寄存器达到最大值时会发生什么?
【发布时间】:2015-02-23 14:23:29
【问题描述】:

eip 寄存器是 32 位的,每增加一条新指令,它就会递增。那么当它达到 32 位数字的最大值时会发生什么:4294967295。

【问题讨论】:

    标签: assembly x86 cpu cpu-registers eip


    【解决方案1】:

    通常情况下,您不会让它发生。 %eip 不会无条件递增;它受流控制指令的影响(如jmpcallbcc 等)。

    实际上,这种行为是不可预测的。在某些 CPU 上,溢出 %eip 会导致错误。在其他一些情况下,它会默默地归零。

    这些差异导致了(原始)Xbox 引导 ROM 的著名漏洞利用,因为开发套件使用 AMD CPU(在环绕时出现故障),而生产硬件使用英特尔 CPU(但没有)。有关详细信息,请参阅第 140 页左右的Hacking The Xbox: An Introduction to Reverse Engineering

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-24
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      相关资源
      最近更新 更多