【逆向】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限制。

相关推荐
XUHUOJUN8 小时前
Windows 2025架构深度分析之Stretch Cluster 延迟工程现实
windows·microsoft·架构·azure local
love530love9 小时前
将 ChatCut MCP 插件从 Codex 桌面应用移植到 WorkBuddy —— 完整适配实录
ide·人工智能·windows·视频剪辑·ai agent
works cart10 小时前
windows常用命令
windows
浩浩测试一下11 小时前
windows 加壳工具代码实现02 - 加壳界面实现MFC
windows·mfc·免杀·加壳器·pe应用
崖边看雾14 小时前
记录Python学习——第一章环境安装下载(Windows)
windows·python·学习·pycharm
sukalot16 小时前
windows网络适配器驱动开发-NetAdapterCx 接收端缩放(中)
windows·驱动开发
我是Superman丶18 小时前
Windows系统FFmpeg官方下载+完整安装配置保姆级教程(2026最新版)
windows·ffmpeg
weixin_4334176718 小时前
TortoiseGit推送到远端,如何配置
windows·git
2601_962364971 天前
Windows Hello VS 传统密码:身份认证安全层级全面对比分析
windows·安全·电脑
Imagine Miracle1 天前
【WSL】让WSL2后台持久运行不自动关闭的解决方案
linux·windows·wsl