这一节对应 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、学习检查清单
| 检查项 |
状态 |
| 能说明固定字节和通配符的取舍 |
待复盘 |
| 能把特征码与函数上下文、节区和版本联系起来 |
待复盘 |
| 能设计误报复核流程 |
待复盘 |
| 能从防护角度使用特征而不是迷信特征 |
待复盘 |
特征码搜索不是单纯找字节,而是“字节 + 上下文 + 复核”的组合判断。