14. 术语表(Glossary)
https://github.com/malrev/ABD
⚠️ API 版本说明:本文档中的 Miasm API 代码示例已于 2026-07 更新至 Miasm 0.1.5+ 版本。课程原始材料使用的是 0.1.3 版本(2020年),部分 API 已发生 breaking change。更新处以 【更新】 标注,旧版用法以 【旧版 v0.1.3】 标注。
本术语表汇总 Advanced Binary Deobfuscation 课程涉及的核心术语,按类别组织,提供中英对照与简要说明。
混淆技术(Obfuscation Techniques)
| 英文术语 |
中文翻译 |
说明 |
| Obfuscation |
混淆 |
从程序 P 到功能等效程序 P' 的转换,使提取信息更困难 |
| Deobfuscation |
反混淆/去混淆 |
混淆的逆过程 |
| Garbage/Dead Code Insertion |
垃圾/死代码插入 |
插入不影响结果的代码 |
| Instruction Substitution |
指令替换 |
用复杂但等效的代码替换原始代码 |
| Encode Literals |
编码文字 |
用复杂表达式替换文字常量 |
| Encode Arithmetic |
编码算术 |
用复杂表达式替换算术运算 |
| Mixed Boolean Arithmetic (MBA) |
混合布尔算术 |
用位运算混合替换算术 |
| Opaque Predicate |
不透明谓词 |
插入始终为真或假的条件分支 |
| Bogus Control Flow (BCF) |
虚假控制流 |
不透明谓词的一种实现 |
| Virtualization Obfuscation |
虚拟化混淆 |
用字节码替换原始代码在 VM 上执行 |
| Control Flow Flattening (CFF) |
控制流平坦化 |
将基本块展平为 switch-case 结构 |
| Handler Duplication |
处理器复制 |
从模板生成多样化 VM handler |
| Direct Threaded Code |
直接线程代码 |
用 goto 分散调度程序 |
| Packing |
打包 |
压缩并加密可执行文件 |
| Binary Rewriting |
二进制重写 |
直接修改二进制文件 |
反混淆技术(Deobfuscation Techniques)
| 英文术语 |
中文翻译 |
说明 |
| Dataflow Analysis |
数据流分析 |
分析程序中数据传播 |
| Liveness Analysis |
活跃度分析 |
后向数据流分析,分析变量是否可能被使用 |
| Reachable Definition Analysis |
可达定义分析 |
前向数据流分析,分析变量定义来源 |
| Dead Code Elimination |
死代码消除 |
删除永远不会执行的代码 |
| Constant Propagation |
常量传播 |
传播已知常量值 |
| Constant Folding |
常量折叠 |
编译时计算常量表达式 |
| Symbolic Execution |
符号执行 |
用符号变量执行程序 |
| Dynamic Symbolic Execution (DSE) |
动态符号执行 |
结合具体和符号执行 |
| Concolic Execution |
Concolic 执行 |
具体+符号混合执行 |
| Equivalence Checking |
等价性检查 |
检查两个代码块语义是否等价 |
| Abstract Interpretation |
抽象解释 |
近似程序语义分析 |
| Program Synthesis |
程序综合 |
自动生成满足规范的程序 |
| Taint Analysis |
污点分析 |
跟踪数据传播 |
| Program Slicing |
程序切片 |
提取相关代码子集 |
| Graph Pattern Matching |
图模式匹配 |
识别代码结构模式 |
编译器相关(Compiler Concepts)
| 英文术语 |
中文翻译 |
说明 |
| Compiler Frontend |
编译器前端 |
词法/语法/语义分析 |
| Compiler Backend |
编译器后端 |
中间代码生成/优化/代码生成 |
| Lexical Analyzer |
词法分析器 |
将源代码转为 token 序列 |
| Syntax Analyzer/Parser |
语法分析器 |
构建语法树 |
| Semantic Analyzer |
语义分析器 |
语义检查 |
| Intermediate Representation (IR) |
中间表示 |
编译器内部的代码表示 |
| Optimization Pass |
优化通道 |
编译器优化阶段 |
| Static Single Assignment (SSA) |
静态单赋值形式 |
每个变量只赋值一次 |
| Basic Block |
基本块 |
直线指令序列,无内部分支 |
| Control Flow Graph (CFG) |
控制流图 |
基本块间的跳转关系图 |
| 英文术语 |
中文翻译 |
说明 |
| Disassembler |
反汇编器 |
将机器码转为汇编 |
| Lifter |
提升器 |
将汇编转为 IR |
| Emulator |
模拟器 |
模拟指令执行 |
| IR Translator |
IR 翻译器 |
翻译 IR 到目标格式 |
| SMT Solver |
SMT 求解器 |
可满足性模理论求解器 |
| SAT Solver |
SAT 求解器 |
布尔可满足性求解器 |
| Jitter |
即时编译器 |
Miasm 的即时执行引擎 |
| Sandbox |
沙箱 |
隔离执行环境 |
Miasm 特有(Miasm-specific)
| 英文术语 |
中文翻译 |
说明 |
| AsmCFG |
汇编控制流图 |
Miasm 中汇编级 CFG |
| IRCFG |
IR 控制流图 |
Miasm 中 IR 级 CFG |
| AsmBlock |
汇编块 |
Miasm 中汇编级基本块 |
| IRBlock |
IR 块 |
Miasm 中 IR 级基本块 |
| AssignBlock |
赋值块 |
SSA 形式的赋值集合 |
| ExprInt/ExprId/ExprMem/ExprCond/ExprOp/ExprSlice/ExprCompose/ExprAff |
Miasm IR 表达式类型 |
IR 的各种表达式元素。【更新 v0.1.5+】ExprAff 已弃用,推荐使用 ExprAssign(语义相同,命名更清晰) |
Triton 特有(Triton-specific)
| 英文术语 |
中文翻译 |
说明 |
| TritonContext |
Triton上下文 |
Triton框架的核心上下文类,管理架构、符号状态、约束。【更新 v0.9+】API未变,完全向后兼容 |
| Instruction |
指令 |
Triton中封装单条机器码指令的类。【更新 v0.9+】新增 getLoadAccess()、isBranch() 等分析方法 |
| processing() |
处理 |
TritonContext的方法,处理指令并更新符号状态 |
| AstContext |
AST上下文 |
Triton中创建和操作AST节点的上下文 |
| SOLVER.Z3 / SOLVER.BITWUZLA |
Z3/Bitwuzla求解器 |
【更新 v0.9+】新增Bitwuzla求解器后端 |
angr 特有(angr-specific)
| 英文术语 |
中文翻译 |
说明 |
| Project |
项目 |
angr的二进制加载与分析入口类 |
| SimulationManager |
模拟管理器 |
angr中管理符号状态集合的类。【旧版 angr 6.x】称为PathGroup。【更新 angr 7+】重命名为SimulationManager |
| SimState |
模拟状态 |
angr中的符号执行状态。【旧版 angr 6.x】使用Path概念。【更新 angr 7+】统一为SimState |
| CFGFast |
快速CFG |
angr中基于静态分析的快速控制流图恢复 |
| CFGEmulated |
模拟CFG |
angr中基于符号执行的精确控制流图恢复。【旧版 angr 7-】称为CFGAccurate。【更新 angr 8+】重命名为CFGEmulated |
| state.solver |
状态求解器 |
angr中访问求解器的接口。【旧版 angr 7-】使用state.se。【更新 angr 8+】state.se已弃用 |
| claripy.BVS |
符号位向量 |
claripy中创建符号位向量的函数。【旧版 angr 7-】使用claripy.BV。【更新 angr 8+】BV已弃用 |
| explore() |
探索 |
SimulationManager的方法,进行导向式路径探索 |
| 英文术语 |
中文翻译 |
说明 |
| Man-At-The-End (MATE) attacker |
端人攻击者 |
拥有最终产品的攻击者 |
| APT (Advanced Persistent Threat) |
高级持续性威胁 |
长期针对性网络攻击 |
| RAT (Remote Access Trojan) |
远程访问木马 |
远程控制恶意软件 |
| IOC (Indicator of Compromise) |
入侵指标 |
检测恶意活动的特征 |
| Dropper |
下载器 |
下载并安装其他恶意软件 |
| Beacon |
信标 |
恶意软件的通信信号 |
| Implant |
植入物 |
持久化恶意组件 |
| Rootkit |
Rootkit |
隐蔽持久化恶意软件 |
参考文献汇总(References)
- Banescu. A Tutorial on Software Obfuscation. 2017
- Aho et al. Compilers: Principles, Techniques, and Tools. 1986
- Zobernig et al. Indistinguishable Predicates: A New Tool for Obfuscation. 2017
- Wang et al. Linear Obfuscation to Combat Symbolic Execution. ESORICS'11
- Kurogome et al. EIGER: Automated IOC Generation. ACSAC'19
- Haruyama. Defeating APT10 Compiler-Level Obfuscations. VB'19
- Junod et al. Obfuscator-LLVM – Software Protection for the Masses. SPRO'15
- Schwartz et al. All You Ever Wanted to Know About Dynamic Taint Analysis. Oakland'10
- Kim et al. Testing Intermediate Representations for Binary Analysis. ASE'17
- Jung et al. B2R2: Building an Efficient Front-End for Binary Analysis. BAR'19
- Desclaux and Mougey. Miasm: Reverse Engineering Framework. Black Hat USA'18
- Saudel and Salwan. Triton: Dynamic Binary Analysis and Symbolic Execution. BAR'15. https://triton.quarkslab.com
- Shoshitaishvili et al. angr: A Platform-Agnostic Binary Analysis Framework. S&P'16. https://angr.io