【逆向】Windows 系统调用流程 + SSDT/ShadowSSDT/ETW/VT Hook + 内核 / 用户层区别

一、Windows 系统调用完整执行流程

  1. 用户态API(如ReadProcessMemory)调用ntdll.dll里的Native API
  2. Native API 将系统调用号 存入EAX/RAX,参数入栈/寄存器
  3. 执行sysenter/syscall指令,从用户态切到内核态
  4. 内核找到MSR寄存器指向的系统调用入口KiSystemCall64
  5. 校验参数、线程模式、栈,进入系统调用分发
  6. SSDT得到内核函数地址,调用对应内核服务
  7. 执行完将结果返回EAX/RAX,通过sysexit/sysret切回用户态
  8. 逐层返回,完成系统调用

二、四种系统调用Hook实现原理

1. SSDT Hook(系统服务描述表)

  • 作用:Hook普通原生系统调用(进程/线程/内存/文件)
  • 原理:修改SSDT表中函数地址,指向自己的过滤函数
  • 适用:x86时代主流;x64受KVA Shadow/PG保护,极难稳定

2. ShadowSSDT Hook(影子系统服务表)

  • 作用:HookWin32k GUI系统调用(窗口、消息、渲染)
  • 原理:结构与SSDT类似,专门处理GUI相关系统调用
  • 限制:仅GUI线程使用,同样受内核保护

3. ETW Hook(事件追踪)

  • 作用:非侵入式监控系统调用,不修改内核代码/表
  • 原理:系统调用进入/离开时会触发ETW事件,注册回调捕获
  • 优点:稳定、不被PatchGuard杀、兼容性极强
  • 缺点:只能监控,无法阻断/修改参数

4. VT Hook(虚拟化Hook)

  • 作用:最高权限、底层拦截,可穿透绝大多数防护
  • 原理:利用CPU虚拟化,将系统置于VMX非根模式
  • syscall触发VM-Exit,由VMM拦截处理
  • 优点:可Hook任意指令/函数,无法被常规手段检测
  • 缺点:开发复杂、依赖CPU虚拟化支持

三、内核态 Hook vs 用户态 Hook

用户态 Hook

  • 位置:IAT、Inline、内存、DLL注入
  • 范围:仅限当前进程
  • 权限:低,易被反调试、保护进程拦截
  • 实现:简单、稳定、开发快
  • 场景:普通逆向、游戏辅助、应用层安全

内核态 Hook

  • 位置:SSDT、内核函数、Minifilter、驱动回调
  • 范围:全局,所有进程
  • 权限:高,可监控/拦截系统级行为
  • 风险:易触发PatchGuard/蓝屏,受KVA Shadow保护
  • 场景:安全软件、反作弊、DMA配套、系统监控

四、总结

系统调用:用户态→sysenter→内核→查SSDT→执行内核函数→返回。SSDT/ShadowSSDT是修改系统调用表;ETW是无侵入监控;VT是虚拟化底层拦截。用户态只管单进程、简单安全;内核态全局生效、权限高但风险大、受PG/KVA限制。

相关推荐
蓝斯49713 小时前
从.到实现一个Windows上的虚拟hid键盘设备
windows·单片机·计算机外设
CODER030416 小时前
封装忽律底层硬件差异的自定义系统
windows·microsoft
软件资深者17 小时前
Windows10、11轻松设置 使用教程:把Windows繁杂的设置集成到一个面板,关广告/关更新/调隐私全搞定,系统设置工具新手 5 分钟上手(2026)
windows
脚踏实地皮皮晨17 小时前
003005002_WPF StackPanel 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
YCOSA202518 小时前
Windows 11 Insider 实验预览版 26300.9032 基于26100.6(检查点26100.1746)
windows
happymagic19 小时前
vmware workstation Pro 虚拟机设定启停的时间段
运维·服务器·windows
PC2005-cloud20 小时前
Windows 下 WSL2 + Docker Desktop + Ubuntu 开发环境搭建指南
windows·ubuntu·docker
王维同学20 小时前
跨位数进程的映像、命令行与环境块读取
c++·windows·安全
蛊明20 小时前
一台老 ThinkPad 的系统博物馆:Windows、Ubuntu、UOS、Kylin多系统共存方案
windows·ubuntu·kylin
Moshow郑锴21 小时前
qlik-cli - Get started with examples
服务器·windows·microsoft