用户空间进程可以调用modify_ldt(2)
来更改其LDT的条目。一个调试器,为了正确分析进程读取的内容和位置,以及它当前执行的代码,需要知道什么描述符的值,例如, CS=0x7
选择。
目前我认为可行的唯一方法是将一些代码注入调试对象以检索LDT,执行它然后返回到原始状态。但这很容易出错,很可能会破坏调试器用户的工作流程,例如当信号到达时。
那么还有更好的方法吗?我用谷歌搜索了类似PTRACE_LDT
的内容,但页面来自2005年,grep
ping现代linux源代码除了评论之外没有找到与x86相关的任何内容。