在linux内核的控制流中,发现控制转移到了IDT,它有中断的位置(例如:0x80系统调用)。然后控制转移到适当的系统调用。另请阅读 IDT 仅在引导时初始化。
我想更多地了解来自真实内核的 IDT 信息,比如它的位置。也想知道,是否在其他时间被修改?
请帮忙。
在linux内核的控制流中,发现控制转移到了IDT,它有中断的位置(例如:0x80系统调用)。然后控制转移到适当的系统调用。另请阅读 IDT 仅在引导时初始化。
我想更多地了解来自真实内核的 IDT 信息,比如它的位置。也想知道,是否在其他时间被修改?
请帮忙。
写一个rooktit,是吗?
无论如何,您可以使用 LIDT/SIDT x86 指令直接查找和操作 IDT。您还可以在一些关于这个主题的优秀phrack 文章中找到有关 IDT 挂钩的一些信息。
在 Linux 中,IRQ 处理函数的声明可以在include/linux/interrupt.h中找到。通用处理代码可以在kernel/irq/中找到,平台特定代码可以在 arch/ 目录下找到 - 看看例如arch/x86/kernel/irq.c和该目录中的其他 irq*.c 文件。
您应该阅读 kernel/irc/*.c 文件中的注释以了解 Linux 中有关 IRQ 的锁定规则和机制。请注意,其他操作系统可以并且将会有不同的锁定规则。祝你好运!