X86 在GDT/LDT/IDT entry上设置断点

X86 在GDT/LDT/IDT entry上设置断点,x86,gdb,breakpoints,bochs,gdt,X86,Gdb,Breakpoints,Bochs,Gdt,我正在研究x86体系结构, 我想在全局描述符表条目或解释描述符表条目或ldt上设置一个断点-这意味着,例如,每次从idt/gdt/ldt读取特定条目时,都会触发一个断点 我试图用bochs x86 emulator来模拟这个场景,但我很难做到这一点 谢谢。我成功地仅在idt条目上设置了断点(如果有人知道如何调试gdt或ldt,我也想知道) 1。我通过以下方式打开中断跟踪: 显示整数 (发生中断时显示) 2。我让bochs使用Linux“dos”运行。 00200280100:iret 0010:

我正在研究x86体系结构, 我想在全局描述符表条目或解释描述符表条目或ldt上设置一个断点-这意味着,例如,每次从idt/gdt/ldt读取特定条目时,都会触发一个断点

我试图用bochs x86 emulator来模拟这个场景,但我很难做到这一点


谢谢。

我成功地仅在idt条目上设置了断点(如果有人知道如何调试gdt或ldt,我也想知道)

1。我通过以下方式打开中断跟踪: 显示整数

(发生中断时显示)

2。我让bochs使用Linux“dos”运行。

00200280100:iret 0010:0017937b(0xc017937b)

00200280101:异常(非软int)0010:0010c8dd(0xc010c8dd)

00200281076:iret 0010:0017937b(0xc017937b)

00200281119:异常(非软点)0x0010:0010aa30(0xc010aa30)

3。我寻找了一个异常地址,它也是idt中的条目 我发现0010:0010aa30是条目号0x0e的地址,它是“页面错误”中断。

中断描述符表(基=0x00000000c0106060,极限=2047): IDT[0x0e]=32位陷阱门目标=0x0010:0010aa30,DPL=0

4。我在虚拟地址中放置了一个断点:0x0010:0x0010aa30

vbreak 0x0010:0010aa30

5。我让机器运行并得到:

00200302058:异常(非softint)0010:0010aa30(0xc010aa30)

(0)断点5684127,位于0010:0010aa30(0xc010aa30)中 下一步t=200302058

(0)[0x00000010aa30]0010:0000000000 10aa30(unk.ctxt):按0x00110200;6800021100

谢谢!我认为这种方法不适用于gdt/ldt,我们需要找出如何触发gdt/ldt读/写场景