【发布时间】:2023-05-19 13:45:01
【问题描述】:
我正在研究 x86 架构, 我想在全局描述符表条目或解释描述符表条目或 ldt 上设置断点——这意味着,例如,每次从 idt/gdt/ldt 读取特定条目时都会触发断点。
我正在尝试使用 bochs x86 模拟器来模拟这种情况,但我很难做到。
谢谢。
【问题讨论】:
标签: x86 gdb breakpoints bochs gdt
我正在研究 x86 架构, 我想在全局描述符表条目或解释描述符表条目或 ldt 上设置断点——这意味着,例如,每次从 idt/gdt/ldt 读取特定条目时都会触发断点。
我正在尝试使用 bochs x86 模拟器来模拟这种情况,但我很难做到。
谢谢。
【问题讨论】:
标签: x86 gdb breakpoints bochs gdt
我成功地将断点仅放在了 idt 入口(如果有人知道如何调试 gdt 或 ldt 我也想知道)
1.我通过以下方式打开了中断跟踪: 显示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 位陷阱门目标=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
【讨论】: