【发布时间】:2010-11-06 17:50:18
【问题描述】:
Windows 如何防止用户模式线程任意将 CPU 转换为内核模式?
我明白这些事情是真的:
- 当通过 NTDLL 进行系统调用时,用户模式线程确实会转换为内核模式。
- 到内核模式的转换是通过特定于处理器的指令完成的。
那么这些通过 NTDLL 进行的系统调用有什么特别之处呢?为什么用户模式线程不能伪造它并执行特定于处理器的指令以转换到内核模式?我知道我在这里遗漏了 Windows 体系结构的一些关键部分......它是什么?
【问题讨论】:
-
用户模式线程可以伪造它,但这与仅使用 ntdll.dll 有何不同?在问题中添加更多关于为什么这会引起您的关注的信息。
-
我认为 OP 担心过渡到 ring 0,然后在 ring 0 中运行任意非 O/S 代码。
-
Windows 对其公开的(对用户模式)参数执行验证。你不能*在它不知道的情况下传递无效数据。是的,有一些被忽视的极端案例。只是,查找本地提权漏洞。有很多
-
ntdll 是您的进程顺便说一句,所以是的,您可以自己调用 CPU sysenter。旧病毒过去使用这些愚蠢的技巧来欺骗保护。