Windows如何保护转换到内核模式

前端之家收集整理的这篇文章主要介绍了Windows如何保护转换到内核模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Windows如何防止用户模式线程将cpu任意转换为内核模式?

我明白这些事情是真的:

>用户模式线程当通过NTDLL进行系统调用时,实际上会转换到内核模式.
>通过处理器特定的指令完成向内核模式的转换.

那么这些通过NTDLL的系统调用有什么特别之处?为什么用户模式线程不能伪造它,并执行特定于处理器的指令来转换到内核模式?我知道我在这里丢失了一些关键的Windows架构,这是什么?

你可能认为在用户模式下运行的线程正在调用Ring 0,但这不是实际发生的.用户模式线程导致由Ring 0代码捕获的异常.用户模式线程停止,cpu切换到内核/环0线程,然后可以检查用户模式线程的上下文(例如,调用堆栈和寄存器)以确定要执行的操作.在系统调用之前,它真的是一个例外,而不是专门用于调用ring 0代码的特殊异常.

如果您采取其他响应的建议并阅读intel manuals,您将看到syscall / sysenter不采取任何参数 – O / S决定会发生什么.你不能调用任意代码. WinNT使用函数号映射用户模式代码执行的内核模式功能(例如,NtOpenFile在我的XP机器上为fnc 75h(数字一直在变化,这是NTDll的一个作业是将函数调用映射到fnc号,放在EAX中,将EDX指向输入参数,然后调用sysenter).

猜你在找的Windows相关文章