这一节对应 09.2 - 10.0,主题是特征码搜索。它既可以用于逆向定位,也可以用于防护检测。复盘时不要只看“匹配到了什么”,还要看特征是否稳定、误报是否可控、扫描范围是否合理。

1、内容范围

小节 主题
09.2 硬编码数据基本格式及可变量
09.3 通配符与模糊搜索
09.4 程序框架设计与数据管理
09.5 文件结构扫描解析
09.6 特征码字符串提取转换
09.7 Pattern 匹配数组封装
09.8 扫描模式与回调过滤
09.9 匹配结果写回
10.0 结果解析和效率测试

1.1、逐节复盘

小节 主要内容 复盘点
09.2 认识特征码中固定字节和可变量的区别 记录哪些字节稳定、哪些字段会随版本或地址变化
09.3 使用通配符表达模糊匹配 关注误报率、匹配长度和上下文校验
09.4 设计扫描工具的数据结构和结果管理方式 重点记录输入、范围、规则、命中结果和错误信息
09.5 针对文件结构做扫描解析 分清文件偏移、RVA、VA 和节区范围
09.6 将字符串形式特征码转换为可扫描结构 校验空格、通配符、十六进制合法性和字节数量
09.7 封装 Pattern 匹配数组 复盘固定字节、掩码、通配符和比较逻辑
09.8 设计扫描模式和回调过滤 先粗匹配,再结合模块、节区、上下文过滤
09.9 记录匹配结果并支持后续复盘 保存命中地址、偏移、上下文和来源规则
10.0 解析结果并测试效率 对比扫描范围、算法选择、结果数量和耗时

2、核心概念

概念 复盘重点
固定字节 稳定但容易因版本变化失效
通配符 提高兼容性,但可能增加误报
扫描范围 文件、模块、节区、内存页的范围要明确
回调过滤 匹配后仍需结合上下文判断
效率 扫描算法、数据结构和范围选择影响性能

3、防护应用

场景 内容
静态检测 文件字节、字符串、节区特征、导入表
动态检测 内存页、模块代码段、异常补丁区域
版本兼容 使用通配符、结构上下文和多特征组合
误报控制 匹配后结合路径、签名、模块、调用栈判断

4、复盘模板

项目 记录内容
特征来源 来自哪个样本、函数或模块
特征范围 文件偏移、RVA、节区、函数上下文
变化位 哪些字节需要通配,为什么
匹配结果 命中数量、位置、上下文和误报情况
效率记录 扫描时间、范围大小和优化点

5、学习检查清单

检查项 状态
能说明固定字节和通配符的取舍 待复盘
能把特征码与函数上下文、节区和版本联系起来 待复盘
能设计误报复核流程 待复盘
能从防护角度使用特征而不是迷信特征 待复盘

特征码搜索不是单纯找字节,而是“字节 + 上下文 + 复核”的组合判断。