我正在研究 x86 架构,我想在全局描述符表条目或解释描述符表条目或 ldt 上设置一个断点 - 这意味着,例如,每次从 idt/gdt/ldt 读取特定条目时将触发断点。
我正在尝试使用 bochs x86 模拟器来模拟这种情况,但是我很难做到。
谢谢。
我正在研究 x86 架构,我想在全局描述符表条目或解释描述符表条目或 ldt 上设置一个断点 - 这意味着,例如,每次从 idt/gdt/ldt 读取特定条目时将触发断点。
我正在尝试使用 bochs x86 模拟器来模拟这种情况,但是我很难做到。
谢谢。
我成功地仅在 idt 条目上放置了断点(如果有人知道如何调试 gdt 或 ldt 我也想知道)
1.我通过以下方式打开中断跟踪:show int
(显示,当中断发生时)
2.我让bochs在Linux“dos”下运行。
00200280100: iret 0010:0017937b (0xc017937b)
00200280101:异常(非软整数)0010:0010c8dd(0xc010c8dd)
00200281076: iret 0010:0017937b (0xc017937b)
00200281119:异常(非软整数)0x0010:0010aa30 (0xc010aa30)
3. 我在 idt 中查找了一个异常地址,它也是条目我发现 0010:0010aa30 是条目号 0x0e 的地址,女巫是“页面错误”中断。
中断描述符表(base=0x00000000c0106060,limit=2047):IDT[0x0e]=32-Bit Trap Gate target= 0x0010:0010aa30,DPL=0
4.我在虚拟地址中放了一个断点:0x0010:0x0010aa30
vbreak 0x0010:0010aa30
5.我让机器运行并得到:
00200302058:异常(非软整数)0010:0010aa30(0xc010aa30)
(0) 断点 5684127,在 0010:0010aa30 (0xc010aa30) 下一个 t=200302058
(0) [0x00000010aa30] 0010:000000000010aa30 (unk.ctxt): push 0x00110200 ; 6800021100