会发生什么呢?输出或进程linux,寄存器



如果尝试进入系统发送器指令(si)会发生什么?

为了回答这个问题,你需要了解si是如何工作的。

它是如何工作的?我能想到两种方法:

  1. 调试器必须在next上设置一个(临时)断点指令,或者
  2. 调试器修改处理器状态,这样处理器将执行一条指令并停止(也称为单步)。

选项1。是复杂的,因为该指令可能是间接跳转,例如CALL (%eax),或RET,所以调试器可能要费很大的功夫才能理解下一条指令是什么。

我熟悉的所有调试器都使用选项2。

现在,您可能可以解释当您在sysenter(或syscallint80)指令上执行si时所观察到的结果。您需要知道的唯一一件事是,一旦sysenter切换到内核模式,内核就不可能允许单步模式(否则整个系统将冻结)。

最新更新