附录A 术语表
按主题分四组收录全书高频术语,每条给一句话解释与出处章节。术语的权威定义以各工具官方文档与论文为准;这里追求的是「快速想起它是什么、在哪一章学的」。查不到的词先回对应章节,再查官方文档。
一、逆向基础与二进制
| 术语 |
一句话解释 |
出处 |
| SRE |
软件逆向工程(Software Reverse Engineering),从产物反推设计与行为的方法学总称 |
全书 |
| 反汇编 |
把机器指令翻译回汇编语言,基于指令编码的机械映射 |
第 01 章 |
| 反编译 |
把指令流提升回高级语言形态,涉及类型与控制流重建,远难于反汇编 |
第 01、09 章 |
| 伪代码 |
反编译器输出的类高级语言文本,可读但不可直接编译 |
第 01、08 章 |
| 交叉引用(xref) |
「谁引用了它」的关系清单:上行(被谁调用)与下行(调用了谁) |
第 01、07 章 |
| stripped |
符号表被剥除的二进制,函数与变量失去原始名字,是命名恢复的对象 |
第 08、09 章 |
| headless |
图形界面的命令行形态(如 Ghidra headless),批处理与自动化的入口 |
第 01 章 |
| PyGhidra |
在 Python 里直接调用 Ghidra 能力的接口形态,脚本化的基础之一 |
第 01 章 |
| r2pipe |
radare2 的管道协议:任意语言经管道驱动反汇编器,脚本化分析的经典设计 |
第 02 章 |
| Emulation |
仿真执行:不依赖真实硬件跑起目标代码(如 qemu-user) |
第 08 章 |
| qemu-user |
用户态仿真器,翻译执行非本架构指令,配 GDB 远程协议可调试 |
第 8.3 节 |
| 导入表 |
二进制引用的外部函数清单;「编造 API」幻觉的第一验证现场 |
第 11.1 节 |
| 字符串表 |
二进制内嵌字符串集合;反查引用函数是最可靠的语义锚点 |
第 7.3 节 |
| PoC |
概念验证(Proof of Concept):能触发问题行为的最小输入或脚本 |
第 10 章 |
二、代码图与静态分析
| 术语 |
一句话解释 |
出处 |
| AST |
抽象语法树,代码的结构表示:谁包含谁 |
第 7.1 节 |
| CFG |
控制流图,代码的流向表示:从哪执行到哪 |
第 7.1 节 |
| PDG |
程序依赖图,代码的依赖表示:谁影响谁 |
第 7.1 节 |
| CPG |
代码属性图,AST、CFG、PDG 融合为一张可查询图(Joern 的核心) |
第 07 章 |
| 污点追踪 |
追踪外部输入(污点)在程序中的传播路径,安全分析的核心方法 |
第 06 章 |
| source |
污点追踪的起点:外部可控输入进入程序的位置 |
第 6.1、6.2 节 |
| sink |
污点追踪的终点:危险操作(命令执行、文件写入等)所在位置 |
第 6.1、6.2 节 |
| taint 模式 |
semgrep 规则的污点形态:声明 source、sink、sanitizer 三件套 |
第 6.1 节 |
| sanitizer |
净化器:污点传播链上的安全屏障,命中即告警消除 |
第 6.1 节 |
| QL |
CodeQL 的声明式查询语言:描述条件,引擎负责推导 |
第 6.2 节 |
| 变体发现 |
用一条查询横扫多仓库寻找同类缺陷(variant analysis) |
第 6.2 节 |
| 规则即代码 |
semgrep 的理念:检测规则用目标语言的模式写成、随代码库版本管理 |
第 6.1 节 |
三、符号执行与动态分析
| 术语 |
一句话解释 |
出处 |
| 符号执行 |
让变量「同时取所有值」:输入为符号值,沿分支累积约束 |
第 8.1 节 |
| 路径条件 |
走到当前程序点所累积的全部分支约束的合取 |
第 8.1 节 |
| 路径爆炸 |
分支数随程序长度指数增长、状态空间失控的宿命问题 |
第 8.1 节 |
| 约束求解 |
用求解器(如 angr 内置引擎)判定路径条件可满足性并反解输入 |
第 8.1 节 |
| VEX IR |
angr 的统一中间语言:各架构指令先提升到它再分析 |
第 8.1 节 |
| CFG 恢复 |
从 stripped 二进制重建函数边界与调用图(angr 分析能力之一) |
第 8.1 节 |
| 动态复核 |
用调试器验证静态结论的三动作:断点、对照、单步 |
第 8.3 节 |
| 批处理会话 |
调试器命令序列化执行并落盘输出,证据链可复跑形态 |
第 8.3 节 |
| 仿真口径 |
结论标注「来自 qemu-user 仿真」,区别于真机运行 |
第 8.3 节 |
四、AI 协作与工作流
| 术语 |
一句话解释 |
出处 |
| MCP |
Model Context Protocol:把工具能力标准化暴露给模型的协议,本书工具编排的底座 |
第 03、05 章 |
| ReAct |
推理与行动交替的智能体模式:想一步、做一步、看结果再想 |
第 10 章 |
| RAG |
检索增强生成:先检索相关材料再让模型作答 |
第 10 章 |
| 零样本(zero-shot) |
不做规则与样本预处理直接让模型执行任务(VulnHuntr 的挖洞形态) |
第 10.1 节 |
| 置信度分级 |
给模型结论附零到十的置信档位与理由,供下游分级处理 |
第 10.1 节 |
| 双版本判定 |
CyberGym 的判定设计:PoC 须在漏洞版触发、修复版不触发 |
第 10.2 节 |
| 阳性对照 |
先造一个必命中的样例验证查询正确,再扫全库的评测基本功 |
第 10.2 节 |
| 证据链 |
假设、验证命令、输出、结论四列记录,结论只出自命令输出 |
第 11.1 节 |
| 命名恢复 |
为 stripped 函数与变量重新起名的工程:AI 建议、验证转正 |
第 9.2 节 |
| binsync |
以 git 为底座跨反编译器共享重命名成果的协作工具 |
第 9.2 节 |
| 反编译专用模型 |
以反编译为目标训练的大模型系列(LLM4Decompile 为代表) |
第 9.1 节 |
| End 与 Ref |
LLM4Decompile 两种模式:直接从汇编生成 C;拿 Ghidra 伪代码加汇编精修 |
第 9.1 节 |
| 幻觉三形态 |
编造 API、错误进制、虚构交叉引用 |
第 11.1 节 |
| int_convert |
进制闸门设计:数值必须带进制前缀并经统一转换入链 |
第 11.2 节 |
使用提示
- 每条术语的深入解释、命令与代码都在出处章节,本表只负责「想起」。
- 各工具术语的官方定义可能随版本演化,引用时以官方文档为准(全书反复强调的口径纪律)。
- 本表刻意不收与本书无关的术语:宁缺毋滥,保持每一格都能在书里找到落点。
- 团队可以把本表复制进内部知识库并持续增补:增补规则同上——没有章节落点的新词,先想清楚它是否真的常用。
- 与检索、嵌入相关术语的完整解释见《语义代码检索》,本书只在用到处点到为止。