这一节对应 11.5 - 12.4。x64 Hook 比 x86 更强调调用约定、寄存器参数、跳转距离、栈对齐和指令解码。复盘重点不是写 Hook,而是理解为什么 x64 环境下更容易因为上下文破坏而崩溃。

1、内容范围

小节 主题
11.5 x64 万能跳转方案及环境保护
11.6 x64 通用模板框架
11.7 x64 Stub 环境保存
11.8 寄存器参数获取与堆栈定位
11.9 - 12.0 汇编中转与模板化框架完结
12.1 MinHook
12.2 自旋锁与多线程兼容
12.3 HDE 反汇编
12.4 SIB Base/Index/Scale

1.1、逐节复盘

小节 主要内容 复盘点
11.5 理解 x64 长跳转、寄存器保存和栈对齐问题 重点观察跳转距离、入口覆盖长度和上下文破坏风险
11.6 将 x64 Hook 抽象成通用模板 记录参数、目标函数、中转区、恢复逻辑和错误处理
11.7 使用 Stub 保存执行环境 复盘保存了哪些寄存器、标志位和栈状态
11.8 从寄存器和堆栈定位函数参数 结合 x64 调用约定记录 RCX/RDX/R8/R9 与栈参数
11.9 - 12.0 汇编中转函数与模板化框架收尾 关注默认返回、继续执行和异常分支
12.1 了解 MinHook 这类成熟库的工程价值 比较自己学习框架和成熟库在稳定性、兼容性上的差异
12.2 处理多线程下安装卸载 Hook 的竞态 复盘锁、线程状态、半修改窗口和崩溃风险
12.3 用 HDE 反汇编识别指令长度 关注指令边界、前缀、RIP 相对寻址和解析失败
12.4 理解 SIB Base/Index/Scale 寻址形式 复盘复杂内存操作数如何被解析和重定位

2、核心理解

概念 复盘重点
x64 调用约定 前几个参数走寄存器,栈空间和对齐很重要
长跳转 x64 地址空间大,跳转编码和中转区选择需要理解
环境保存 寄存器、标志位、栈状态破坏会导致隐蔽错误
多线程 Hook 安装卸载时要考虑竞态和线程安全
指令解析 HDE/SIB 等用于识别指令长度和寻址方式

3、防护观察点

观察点 说明
异常跳转 函数入口跳转到远地址或私有可执行区
上下文异常 寄存器、栈对齐、返回地址异常导致崩溃
多线程竞态 安装卸载过程中其他线程执行到半修改状态
指令解码 检测工具需要正确处理 RIP 相对寻址和 SIB
第三方库 MinHook 等库也可能被合法工具或恶意样本使用,要结合上下文

4、复盘模板

项目 内容
架构 x64、调用约定、目标函数参数
入口字节 原始指令长度、是否涉及 RIP 相对寻址
环境保存 哪些寄存器和栈空间需要保持
线程安全 安装卸载期间如何观察竞态风险
检测结论 函数入口、跳转目标、内存页和调用栈

5、学习检查清单

检查项 状态
能说明 x64 Hook 与 x86 Hook 的主要差异 待复盘
能解释寄存器参数和栈对齐为什么重要 待复盘
能理解指令长度解析和 SIB/RIP 相对寻址的检测价值 待复盘
能从崩溃或异常调用栈中定位上下文破坏问题 待复盘

本节只做 x64 Hook 稳定性和检测复盘,不提供可直接部署的 Hook 框架。