2

在linux內核中的控制流程中,發現控制移動到具有中斷位置的IDT(例如:0x80系統調用)。然後控制轉移到適當的系統調用。另請閱讀,IDT僅在啓動時初始化。中斷描述符表(IDT)修改

我想知道更多關於來自真實內核的IDT信息,比如它的位置。還想知道,在其他任何時候都修改它?

請幫忙。

回答

4

寫一個rooktit,我們?

無論如何,您可以使用LIDT/SIDT x86指令來直接查找和操作IDT。 你也可以找到一些有關IDT鉤住一些好的phrack articles關於這個問題的信息。

1

在Linux中,有關IRQ處理函數的聲明可以在include/linux/interrupt.h中找到。通用處理代碼可以在kernel/irq/以及arch /目錄下的平臺特定代碼中找到 - 請查看該目錄中的arch/x86/kernel/irq.c和其他irq * .c文件。

您應該閱讀kernel/irc/*。c文件中的註釋,以瞭解有關Linux中IRQ的鎖定規則和機制。請注意,其他操作系統可以並將具有不同的鎖定規則。祝你好運!