IDA中的保护模式分段

时间:2015-01-01 22:47:26

标签: assembly x86 ida

我试图反汇编原始Xbox的BIOS代码,但是我在设置涉及保护模式分段的外部参照时遇到了问题。例如,指令:

seg001:FFCE jmp large far ptr 8:0FFFFFE00h

段选择器8引用具有段基0的GDT条目,因此结果地址应为0FFFFFE00h,但IDA将其视为实模式段基;因此,它会使用无效的外部参照来解决0FFFFFE80h,它位于指令的中间。

我已尝试手动输入说明,但之后我没有获得该地址的外部参照。我可以将选择器字节修补为零,但我希望有更好的方法。是否可以告诉IDA为给定的段选择器使用自定义基址?如果没有,是否有比修补更好的解决方法?

1 个答案:

答案 0 :(得分:0)

在寻找一些IDC文件后,我找到了一个名为SetSelector的函数,它设置了给定选择器的基址。所以,我需要做的就是在脚本中手动添加一个调用,将选择器0x8的基础设置为0:

SetSelector(0x8, 0);