我想在Windows 10 x64上使用相应的服务例程注册新的软件中断,这是否可行 - 是否提供了API来执行此操作?我是否必须使用未记录的功能手动完成此操作,并且这样做会触发内核修补程序保护吗?
答案 0 :(得分:1)
注册软件中断会导致为正在运行的操作系统修改中断描述符表(IDT)。 Windows具有内核修补程序保护(KPP)/ PatchGuard,可以保护内核代码和数据结构(例如IDT)不被篡改。这包括防止添加新的中断描述符条目,删除它们以及大体上修改描述符表。
这也意味着不能修改中断描述符条目。开发人员这样做的原因是将中断重定向到新的中断服务例程,也称为中断挂钩。由于KPP / PatchGuard,也可以防止这种情况。
通常来说,对于从XP开始的Windows 64位版本,PatchGuard / KPP阻止以任何方式修改IDT。但是,Microsoft已明确声明激活内核调试器时将禁用KPP / PatchGuard。尽管无论是否存在内核调试器,关键的内核代码和数据结构(例如IDT)仍可以在32位版本的Windows上进行修改。