JMP FAR的使用不明确

时间:2011-05-16 18:32:37

标签: assembly x86 intel

在Book Rootkits:Subverting Windows Kernel 第5章:运行时修补页面120-125(Greg Hoglund,James Butler,2006)

他说的那样 JMP FAR 0x08:0xAAAAAAAA会跳转到0xAAAAAAAA

但是,Wiki说 0x08:0xAAAAAAAA = (0x08 * 0x10) + 0xAAAAAAAA

什么是真的。

1 个答案:

答案 0 :(得分:5)

在保护模式下,选择器值(示例中地址的段部分)不使用“shift by 4”计算。相反,该值用作Local或Global描述符表的索引,并使用表中的基址。

链接代码似乎是为Windows制作的。 Windows使用简单的平面内存模型,其中大多数选择器以0为基数映射整个4BG地址空间。这就是为什么选择器8将映射到0并且跳转将(尝试)转到地址0xAAAAAAAA。

我不确定使用远跳是什么意思,我认为正常跳转(不重新加载选择器)也可以正常工作。