加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-13 20:11:09 所属栏目:Windows 来源:网络整理
导读:Windows如何防止用户模式线程将cpu任意转换为内核模式? 我明白这些事情是真的: 用户模式线程当通过NTDLL进行系统调用时,实际上会转换到内核模式. 通过处理器特定的指令完成向内核模式的转换. 那么这些通过NTDLL的系统调用有什么特别之处?为什么用户模式线
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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读