这一节对应 10.6 - 11.4。Inline Hook 直接影响函数开头指令,比 IAT Hook 更接近代码执行路径,因此复盘重点是指令完整性、跳转覆盖范围、中转函数和恢复机制。

1、内容范围

小节 主题
10.6 Inline Hook 底层逻辑
10.7 函数参数拦截与传统钩子
10.8 标准模板化钩子框架
10.9 转发函数判断与指令完整性
11.0 指令边界对齐及破坏修复
11.1 中转函数与通用拦截
11.2 任意函数拦截测试
11.3 常规 API 转发
11.4 框架优化与卸载处理

1.1、逐节复盘

小节 主要内容 复盘点
10.6 理解 Inline Hook 直接修改函数入口的底层逻辑 关注入口字节、页属性、跳转目标和原始字节备份
10.7 从参数拦截理解中转函数的观察价值 复盘调用约定、参数位置、返回值和副作用
10.8 将 Inline Hook 整理成模板化框架 记录初始化、安装、转发、恢复、卸载等状态
10.9 判断转发函数和被覆盖指令是否完整 重点检查指令长度、边界和相对寻址
11.0 修复指令边界破坏和跳转偏移问题 使用反汇编确认没有截断指令或破坏 RIP 相对寻址
11.1 通过中转函数理解通用拦截路径 关注上下文保存、继续原逻辑和返回路径
11.2 在授权环境测试任意函数拦截的稳定性 记录崩溃、异常、调用栈和恢复结果
11.3 复盘常规 API 转发场景 观察转发前后参数、返回值和模块来源
11.4 优化框架并确保卸载可恢复 重点看原始字节、页保护、线程安全和资源释放

2、核心理解

概念 复盘重点
指令边界 覆盖字节不能截断一条完整指令
跳转转发 原函数开头被改写后,需要理解跳转和返回路径
中转函数 用于保存上下文、观察参数、决定是否继续原逻辑
卸载恢复 必须恢复原始字节和页属性
检测 函数入口字节、内存属性、跳转目标都是关键线索

3、防护观察点

观察点 说明
函数入口 与磁盘原始字节或可信基线对比
跳转指令 函数开头异常跳转到未知区域
页保护 代码段被临时改写时可能出现保护属性变化
中转区域 私有可执行内存、未知模块或异常地址
稳定性异常 指令截断会导致崩溃、异常和不可预期返回

4、复盘模板

项目 内容
原始字节 函数开头原始机器码和长度
覆盖范围 覆盖了哪些完整指令
跳转目标 转发区域、中转函数、返回位置
恢复动作 是否恢复原字节和权限
检测结果 入口完整性、调用栈和内存页状态

5、学习检查清单

检查项 状态
能解释 Inline Hook 为什么必须关心指令边界 待复盘
能说明中转函数和原函数恢复路径 待复盘
能设计函数入口完整性检查 待复盘
能从崩溃现场推测指令截断或上下文破坏 待复盘

本节只记录 Inline Hook 原理、稳定性问题和检测点,不提供可直接套用的拦截代码。