结合指令对齐检索及调用者/被调用者上下文,在剥离符号的二进制中定位补丁相关代码,再由 LLM 筛选候选匹配并对照漏洞版与修复版参考程序判断补丁特定行为。
研究范围与作者 研究范围与局限 需要已知源码补丁以及漏洞版/修复版参考二进制,并非源码恢复或未公开漏洞发现。评测覆盖四个 C/C++ 项目的 62 个 CVE、124 个参考二进制及 496 个目标二进制,限于 x86-64、指定 GCC/Clang 配置和一个报告的推理模型。标签平衡不代表实际部署分布;公开补丁可能出现在训练数据中。不确定与定位失败结果虽单独报告,但二分类指标分别将其计为仍有漏洞的正类及负类;选定子集准确率则排除两者。
作者与引文 Locate, Then Reason: End-to-End Patch Presence Testing in Stripped Binaries
Huaijin Wang; Tongda Wang; Zhibo Liu; Yue Zhang; Shuai Wang; Pengfei Hu; Jianzhong Liu; Fangtian Zhong; Shaohua Wang
BibTeX ↓
3 个来源 · 复核于 2026-10-20 →
BScout 通过分块嵌入及考虑内联的训练,将反编译函数匹配到源码语料;已有匹配提供位置线索以扩充候选,再由大语言模型选择及结构过滤改进对应关系。
研究范围与作者 研究范围与局限 BinKit-BCSA 包含 3,904 个小型工具二进制,Large-10 的较大项目仅采用 x86-64/O2 构建;部分异常阈值来自 Large-10 中的 FreeCAD。不完整真值、稀疏锚点及源码语料覆盖限制结论。函数分块独立编码,增加改进轮次会在召回、精度和成本之间权衡。这是对应关系检索,不是源码恢复或语义等价证明。
作者与引文 Recall-Oriented Precise Binary-to-Source Function Matching
Junlin Li; Jianjun Huang; Wei You; Bin Liang
BibTeX ↓
2 个来源 · 复核于 2026-10-20 →
该 SoK 组织 LLM 辅助源码恢复方案,并区分编译、可读性、结构与行为指标。受控研究改变架构、编译优化及符号状态,并以较小的消融实验考察输入表示、模型角色和源语言。
研究范围与作者 研究范围与局限 45,000 个案例是 500 个函数的变体,并非独立程序。输入/语言消融使用 50 个函数,跨语言变体由 LLM 翻译后以有限 I/O 测试检查。研究假设调用接口可推导,结果受提示影响,也无法排除 ExeBench 进入预训练。测试一致性与屏蔽重定位位置的字节匹配具有不同假设。
作者与引文 SoK: Are LLMs Reliable at Source Code Recovery? A Taxonomy and Empirical Evaluation
Varun Kohli; Lee Bing Cheng; Nur Hazim Ghazali; Gao Yuze; Daryl Poon; Dinil Mon Divakaran
BibTeX ↓
4 个来源 · 复核于 2026-10-20 →
CodeInverter 研究函数级 LLM 反编译,使用 IDA/objdump 提取的控制流图和内存到数据映射补充输入。论文提出提示工作流、训练语料与模型系列,并以编译、基准输入输出测试和编辑相似性评估结果。
研究范围与作者 研究范围与局限 评估针对 32/64 位 GCC 设置下的单个 C 函数。完整程序恢复、激进优化和受保护二进制仍有局限。正文写有 1 个 epoch(15 步),固定版本启动示例设置 1 个 epoch 及 100 个预热步,尚无法据此核实精确训练日程。
作者与引文 The CodeInverter Suite: Structure- and Data-Aware Binary Decompilation with Efficient LLMs
Peipei Liu; Jian Sun; Rongkang Sun; Li Chen; Zhaoteng Yan; Xiaoling Zhang; Dawei Wang; Dapeng Sun; Peizheng Zhang; Dan Li
BibTeX ↓
12 个来源 · 复核于 2026-10-19 →
BinJudgeBench 收集函数命名、二进制代码摘要及反编译改进的专家评分。BinJudge 学习为每个输入及任务选择评审配置,评估与人工评分的一致性,而非可执行正确性。
研究范围与作者 研究范围与局限 路由器在 1,233 个已标注输出上进行五折验证。初始标注者是三位作者,另有独立产业专家复核子集。人工评分具有主观性,流畅但无依据的回答也可能误导评审。任务上的相关性既不证明程序等价,也不能据此认定评审模型可替代人工复核。
作者与引文 Beyond Text Matching: Towards Reference-Free Evaluation for Human-Oriented Binary Reverse Engineering
Xiuwei Shang; Li Hu; Xiao Jiang; Jieke Shi; Junda He; Zhou Yang; Shaoyin Cheng; Guoqiang Chen; Weiming Zhang; David Lo
BibTeX ↓
5 个来源 · 复核于 2026-10-20 →
Quelle 从编译后的 OpenQASM 恢复库调用、循环、函数及符号参数,通过消除路由痕迹、提出结构化重建并核对电路语义,在恢复失败时保留门级表示。
研究范围与作者 研究范围与局限 范围限于理想设备语义下的量子电路,不保证恢复原作者源码。稠密检查采用 1e-6 容差,大电路还依赖可信重写记录、未检查的宽区域 H 共轭恒等式及 QCEC;动态电路及超时检查保持未验证。算法命名需要模板,刻意混淆不在评估范围内。
作者与引文 Decompiling Quantum Assembly into Structured Programs
Pingchuan Ma; Zhantong Xue; Zongjie Li; Qixin Zhang; Yuxuan Du; Zhaoyu Wang; Yuguang Zhou; Shuai Wang; Xiaoqin Zhang
BibTeX ↓
3 个来源 · 复核于 2026-10-20 →
ASAP 在训练中对齐汇编与源码表示,将汇编特征压缩为标记,并与反编译伪代码一起交给 LLM 改进。掩码及汇编优势目标用于鼓励模型利用低层证据。
研究范围与作者 研究范围与局限 评估使用 HumanEval、MBPP 的 C 改编版本,采用 x86-64 GCC 11.4 的 O0–O3 及 Ghidra 11.0.3 伪代码。重新执行率指通过既有测试,并非等价证明。方法没有专门的标识符/注释恢复模块,也未穷尽评估前沿规模模型的训练。
作者与引文 ASAP: Assembly-Source Aligned Pseudocode Refinement For Binary Decompilation
Yujian Zhuang; Dehong Gao; Qichao Zhang; Qijing Lai; Jiaxin Wang; Libin Yang; Xiaoyan Cai
BibTeX ↓
2 个来源 · 复核于 2026-10-20 →
利用符号执行与专门的内存模型,将神经反编译器生成的 C 代码与确定性反编译结果或参考函数比较,无需完整周边代码库,可用于分析人员的结果核查及模型评估。
研究范围与作者 研究范围与局限 检查限定于函数级,抽象掉副作用顺序和部分编译器细节,选项还可放宽返回值、实参及类型条件。实现明确存在与堆有关的可靠性缺口,并要求兼容的循环结构;不支持的 C 特性及脱离上下文的依赖假设也限制覆盖。未能建立等价关系并不证明不等价。实验使用筛选后的 realtype 与 ExeBench 函数对,不代表任意整程序等价。
作者与引文 Faultless: A Program Equivalence Technique for Validating and Evaluating Neural Decompilers
Luke Dramko; Claire Le Goues; Edward Schwartz
BibTeX ↓
7 个来源 · 复核于 2026-10-20 →
Echo 迭代生成源码及编译配置,重新编译候选,并使用汇编差异指导配置搜索与代码修正。研究在函数基准和一个 Mirai 二进制的部分函数上评估匹配结果。
研究范围与作者 研究范围与局限 匹配指评估配置下归一化函数汇编相同,并非逐字节恢复完整可执行文件。测试覆盖选定的 x86 GCC/LLVM 设置及 62 个 Mirai 函数;通过有限测试框架不是一般等价证明。较长的优化函数及搜索空间外的编译配置仍是限制。
作者与引文 Echo: Learning-based Matching Decompilation using Trusted Back Translation
Jun Bi; Xiangxin Fang; Aarsh Chaube; José Wesley De Souza Magalhães; Rodrigo C. O. Rocha; Michael O'Boyle
BibTeX ↓
2 个来源 · 复核于 2026-10-20 →
研究大语言模型改进反编译 C 代码时,标识符恢复来自输入证据还是先验知识。通过同一条目的消融实验和与输出词汇匹配的随机基线,比较教材式函数与新编写函数的命名增益,并进行第二模型复核。
研究范围与作者 研究范围与局限 研究仅含 25 个教材式函数和 20 个作者编写的小函数,使用 x86-64 上的 GCC/Ghidra,每个模型只有一种提示。操作仍可观察,消融也改变惯用模式识别线索,因此有限检出能力下的零结果不能证明记忆或完全不利用输入。没有预登记假设得到确认,正确性指标未通过区分能力门槛;原 T3 逐项产物丢失后重新执行,精度随之改变。多数结果只来自一个改进模型,后续第二模型扩展与最初预登记分开报告。
作者与引文 A Memorization Floor for LLM Refinement of Decompiled Code
Muhammad Asjad
BibTeX ↓
6 个来源 · 复核于 2026-10-20 →
Decompile-Diverge 基于源码生成驱动,并对参考实现进行模糊测试,以构建函数级行为比较。研究让重建函数使用相同输入,检查编译及既有测试可能漏掉的行为差异与崩溃消失。
研究范围与作者 研究范围与局限 该判定器需要参考源码、受支持输入及可构建的测试框架。比较仅覆盖有限输入语料和有界可观测状态;Matched 不代表所有输入上的等价。300 个 GitHub 参考函数中九个无法构建,最终保留 291 个;部分类型与函数被排除。DeGPT-Qwen 使用替换后的后端,并非原始发表的 DeGPT 模型。
作者与引文 When LLM Decompilers Recompile More and Preserve Less
Chang Liu; Edward Raff; Kristopher Micinski
BibTeX ↓
2 个来源 · 复核于 2026-10-20 →
ReSource 针对受编译优化与混淆影响的反编译函数进行修复:先从语义失真数据库检索指导信息,再预测控制流骨架,最后调整名称与格式。评估衡量代码相似性,以及能否从源码语料中检索到对应的原始函数。
研究范围与作者 研究范围与局限 函数级相似性与检索指标属于替代指标,不能证明代码可编译、可执行等价或完整程序恢复。第 5.2 节指出全局上下文缺失,以及定制混淆尚未测试。作者链接的产物页面介绍了简化数据集,并明确说明数据库构建与控制流预测模块尚未提供。
作者与引文 Decoupling is a Necessity: Transformation-Agnostic Decompiled Code Recovery under Optimization and Obfuscation
Zhiping Zhou; Xiaohong Li; Ruitao Feng; Yao Zhang; Yuekang Li; Wenbu Feng
BibTeX ↓
5 个来源 · 复核于 2026-10-19 →
STILL 从去符号控制流图预测函数级 STL 容器的存在情况,并将预测转成紧凑提示,供 LLM 改进 Ghidra 输出。StlBench 为五类容器提供受控标注。
研究范围与作者 研究范围与局限 接口覆盖 map、queue、set、string、vector,不恢复完整变量类型、模板参数、嵌套关系、迭代器或 std::array。实验采用 g++/x86-64/libstdc++、angr 及 Ghidra,未验证向其他工具链的迁移。测试集可执行性不等于等价;提示收益也取决于下游模型及适配。
作者与引文 STILL: Recovering Lowered STL Semantics for LLM-assisted C++ Decompilation
Xiaohan Wang; Kevin Leach
BibTeX ↓
2 个来源 · 复核于 2026-10-20 →
该综述梳理传统、动态、匹配及神经反编译方法,并组织类型恢复、控制流重构、命名和改进等任务及其评估指标、基准选择。配套仓库提供所审文献列表。
研究范围与作者 研究范围与局限 文献搜索截止 2025 年 12 月,重点是源自 C 的二进制及经过同行评审的研究。筛选和分类含人工判断。工具能力描述反映所审出版物,不必然对应当前实现。这是文献综合,而非新近复现的跨工具性能基准,也不是完整的 2026 年预印本汇总。
作者与引文 The Evolution of Binary Decompilation in the Modern Era: A Taxonomy, Literature Review, and Future Perspectives
Omar Abusabha; Sungjae Hwang
BibTeX ↓
6 个来源 · 复核于 2026-10-20 →
BRIDGE 将以 llvm-objdump 反汇编形式给出的、已剥离符号并经过优化的 x86-64 与 ARM64 函数提升为 LLVM IR,目标是固定 clang -O0 配置为原始源码生成的未优化 IR。离线阶段,它将 69,253 个 ExeBench 函数分别以 -O0 至 -O3 编译并构建检索数据库,借助 LLVM 伪探针插桩将汇编片段与对应的 -O0 IR 区域对齐。推理时,它把 angr 恢复的函数控制流图划分为循环、if–else 等控制流片段,从基于 Nova-1.3B 嵌入的 FAISS 索引中为每个片段检索三个最相近的已对齐汇编—IR 对,再提示托管的通用大语言模型(DeepSeek-chat)生成 IR。随后最多进行五轮修正,把 LLVM 校验器与编译器诊断信息以及单元测试失败结果反馈给模型。在以 Clang 19 按 -O0 至 -O3 编译的 HumanEval-Decompile 与 MBPP 上,其平均可重新执行率在 x86-64 上为 65.2% 和 65.4%,在 ARM64 上为 45.6% 和 42.1%。基于规则的 MCTOLL 在 x86-64 上为 62.1% 和 64.9%,五个直接提示的 API 大语言模型最高为 21.5%。
研究范围与作者 研究范围与局限 评测在函数级别、针对短小的基准程序进行:HumanEval-Decompile 与 MBPP 子集,输入为 2 至 628 条汇编指令,由作者在 Linux 上使用单一 LLVM/Clang 19 工具链构建。“规范”指与一个固定的 clang -O0 配置输出一致,而非恢复原始源码。修正过程与可重新执行率指标都使用这些基准自带的单元测试;作者指出,实际逆向工程中很少有这类测试预言。在 x86-64 HumanEval-Decompile 上,改用大语言模型生成的测试时可重新执行率从 65.2% 降至 60.8%,不使用测试时降至 53.5%。输出在结构上仍与参考结果存在差异:平均编辑相似度低于 50%,该基准上控制流图完全匹配率为 25.9%。流水线调用托管的大语言模型 API,大语言模型基线同样如此;结果为五次运行的几何平均值,可能随托管模型变化而改变。作者认为 Forklift 与 LLM Compiler FTD 处理的是编译器生成的汇编文本,因此未将其列为基线;MCTOLL 仅在 x86-64 上参与比较。支持其他指令集需要重建检索数据库。BRIDGE 输出的是 LLVM IR 而非 C 源码,因此不是面向 C 的反编译器。代码仓库没有许可证。
作者与引文 Lifting Optimized Binaries to Canonical Compiler IR via Structure-Aware Retrieval and Iterative Verification
Xiaoao Zhu; Jie Ren; Zhiqiang Li; Jie Zheng; Zhanyong Tang; Zheng Wang
BibTeX ↓
11 个来源 · 复核于 2026-10-19 →
论文构建 asmFooler,用于检验基于学习的二进制代码相似性检测(BCSD)模型在语义保持的改动后能否继续匹配函数。它以 620 个基准 x86-64 ELF 二进制(包括 coreutils、binutils、PuTTY、nginx、SPEC2006 等,均由 Clang 以 O0–O3 编译)为起点,通过原地指令改写、基本块重排、Obfuscator-LLVM、语义空操作和垃圾代码插入生成 9,565 个变体,并加入一种贪心搜索,寻找能让不相似函数显得相似的死代码序列。在 Genius、Gemini、Asm2Vec、SAFE、Trex 与 BinShot 上的结果表明,鲁棒性取决于各模型的预处理、架构与特征:基本块重排使 BinShot 的召回率从 0.972 降至 0.036,而基于控制流图的 Genius 与 Gemini 召回率降幅不足 0.05。误报攻击的成功率最高可达 100%,平均只需插入 14.75 条指令。
研究范围与作者 研究范围与局限 所有样本都是作者由开源软件包和 SPEC2006 编译的 x86-64 ELF 二进制;部分软件包未能成功编译或变换,原地变换具有不确定性,也未经形式化验证。评测的六个模型(Genius、Gemini、Asm2Vec、SAFE、Trex 与 BinShot)不包括 jTrans 及基于大语言模型的相似性模型,因此研究结论未被证明适用于更新的或基于大语言模型的系统。结果取决于作者为适应各模型输入上限而设定的变换预算,语义空操作与垃圾代码也只插入在函数入口处。加壳、加密、字符串混淆以及 VMProtect、Themida 等商业保护工具不在研究范围内,对抗训练留待后续工作。
作者与引文 Fool Me If You Can: On the Robustness of Binary Code Similarity Detection Models against Semantics-Preserving Transformations
Jiyong Uhm; Minseok Kim; Michalis Polychronakis; Hyungjoon Koo
BibTeX ↓
5 个来源 · 复核于 2026-10-19 →
利用仅可执行的参考程序、文档及可见样例,评测 25 个命令行程序的重新实现;在独立评分环境中对可见及留出端到端测试进行精确输出比较。
研究范围与作者 研究范围与局限 目标限于指定范围内、确定性、无状态且输出文本的程序。测试一致不等于普遍等价或代码质量评估;记忆探测发现 17 个目标可能已被接触。较大推理预算及框架选择限制与低成本基准的比较,三个目标仍未公开。
作者与引文 MirrorCode: AI can rebuild entire programs from behavior alone
Tom Adamczewski; David Owen; David Rein; Florian Brand; Giles Edkins; Allen Hart; Daniel O'Connell
BibTeX ↓
5 个来源 · 复核于 2026-10-20 →
一篇系统化知识综述,梳理机器学习、大语言模型与智能体方法在二进制逆向中的应用。第二版通过关键词检索 11 个安全、软件工程与人工智能会议并辅以引文滚雪球,收集 2015 年以来的 246 篇论文,按推断任务归入 22 个领域:从代码边界检测,到函数名、类型与结构体布局恢复,再到代码相似性、恶意软件与漏洞分析以及反编译。其分类体系通过二进制派生的分析产物,把传统的初筛、静态分析、动态分析与安全测试同人工智能流程联系起来,并总结出 12 条洞见及若干开放方向,例如与二进制对齐的语义真值和目标驱动的智能体逆向。
研究范围与作者 研究范围与局限 这是一篇文献系统化综述,不包含新的实验、基准或工具;它对已报告的结果进行分类和总结,并未复现。语料涵盖截至 2026 年 7 月 31 日可获得的论文,引用量门槛从 2015—2016 年论文的 12 次逐步降至 2025—2026 年论文的 2 次,排除推断时需要源码的方法,也不包括 Android 与解释型语言字节码。各阶段的详细表格基于 88 项顶级会议研究,而非完整语料。它是未注明发表场所的 arXiv 预印本。
作者与引文 SoK: AI-Augmented Binary Reversing
Yujeong Kwon; Yiyue Zhang; Kexin Pei; Dokyung Song; Hyungjoon Koo
BibTeX ↓
5 个来源 · 复核于 2026-10-18 →
AutoDecompiler 训练函数级反编译模型,利用编译、执行及 I/O 反馈修正汇编或伪代码输入产生的输出。其强化学习设计结合诊断反馈及代码有效性、测试行为、语法和数据流结构奖励。
研究范围与作者 研究范围与局限 评估采用 HumanEval、MBPP 的 C 改编版本及验证反馈,有限测试不证明一般等价。HumanEval 还用于选择奖励权重,无法排除基座模型预训练时接触基准。修正受上下文长度限制,不恢复完整程序依赖,对未见工具链或受保护二进制仍有局限。
作者与引文 Binary Decompilation LLM with Feedback-Driven Multi-Turn Refinement
Peipei Liu; Jian Sun; Mingzhe Xing; Yicheng Zeng; Zhaoteng Yan; Lixiao Zhang; Li Chen; Dan Li
BibTeX ↓
6 个来源 · 复核于 2026-10-20 →
用综合量化可读性分数(QRS)引导智能体改进反编译 C 代码,将词汇熟悉度、结构简洁度和编程惯用法与二进制结构相似性门槛结合,在 210 个简单 C 二进制程序上比较有无 shell 访问的迭代。
研究范围与作者 研究范围与局限 结构相似性不能证明语义等价。QRS 同时用于指导和评价改进,仍缺少人工可读性验证;经过筛选的合成语料限制了泛化。处理困难二进制并恢复可编译、行为正确代码,不属于本文的贡献范围。
作者与引文 LLM Agent-Assisted Reverse Engineering with Quantitative Readability Metrics
Neil Archibald; Ruben Thijssen
BibTeX ↓
2 个来源 · 复核于 2026-10-19 →
在 600 个源码已验证的以太坊 Solidity 合约上评测基于大语言模型的 EVM 反编译。这些合约在近重复过滤后,从 772,736 对唯一的字节码—源码中按简单、中等、困难各三分之一抽样。每个任务提供 EVM 汇编及可选的四字节选择器提示,要求输出自包含的 Solidity 代码与编译器设置。输出按四个累进阶段评分:格式完整性、编译、ABI 恢复,以及语义一致性;最后一阶段在重新编译的输出上重放为 14,553 个公共函数记录的 227,383 个测试用例。借助一次基于编译器反馈的修复调用,GPT-5.3-Codex 使 90.3% 的合约成功编译;语义方面的最佳结果均来自 Claude Opus 4.7,即 29.4% 的函数一致,600 个合约中有 42 个被完全恢复。
研究范围与作者 研究范围与局限 重放在生成的输入上比较返回数据、回滚、日志和被访问的存储变化,这些输入平均达到 77.8% 的代码覆盖率;通过重放并不能证明等价,而且重放需要以太坊归档节点。合约均为源码已验证、编译器版本 v0.4 至 v0.8 的以太坊 Solidity 合约,因此不覆盖未验证、经混淆、Vyper 或其他链上的字节码。论文通过 OpenRouter 对三个模型进行零样本评测:高推理强度的 Claude Opus 4.7 与 GPT-5.3-Codex,以及开启和关闭扩展思考的 GLM-5。结果与所列成本仅对应这些 2026 年的模型快照。Gigahorse 与 Heimdall-rs 因不生成可编译的 Solidity,仅评测选择器与函数原型恢复;DiSCo 和 David 等人的微调反编译器仅在文中讨论,并未运行。
作者与引文 SCDBench: A Benchmark for LLM-Based Smart Contract Decompilers
Kaihua Qin; Dawn Song; Arthur Gervais
BibTeX ↓
2 个来源 · 复核于 2026-10-20 →
以脱壳结果作为参考证据评估壳标签,规范化不同工具的输出,并评估互补签名/启发式规则池及从脱壳器实现提取的静态判定条件;同时追踪识别错误对后续脱壳和恶意软件分类的影响。
研究范围与作者 研究范围与局限 语料约含 160,000 个 Windows PE 样本,其中约 130,000 个用于分析与构造规则,约 30,000 个用于测试。脱壳失败或仅部分恢复可能影响由此生成的参考标签。壳家族识别改进采用公共规则池配置,并非对七个独立工具分别验证补丁。修正评测不涵盖专有实现及基于图或学习的方法;结果不证明覆盖其他可执行格式、所有壳家族或一般语义等价。
作者与引文 Semantic Validation of Packer Identification Tools: Characterization, Repair, and Downstream Impact
Fangtian Zhong; Zhuoyun Qian; Yili Jiang; Jiaqi Huang; Yunming Pang; Xiuzhen Cheng
BibTeX ↓
5 个来源 · 复核于 2026-10-20 →
Decaf 采样多个反编译候选,重新编译后利用字节距离或学习式重排序器排序。研究通过候选选择改进神经反编译,而非使用迭代源码修复对话。
研究范围与作者 研究范围与局限 字节匹配假设能取得参考编译器及配置。实验对 ExeBench 抽样,并排除 Hex-Rays 无法反编译的样例;去符号 Synth 因调用目标无法链接而未进行执行评分。既有测试可能漏错,实验未覆盖其他架构及混淆代码,Juliet 结果也不必然泛化到复杂漏洞。
作者与引文 Decaf: Improving Neural Decompilation with Automatic Feedback and Search
Alexander Shypula; Osbert Bastani; Edward Schwartz
BibTeX ↓
6 个来源 · 复核于 2026-10-20 →
NotDec 将 WebAssembly 提升为 SSA 中间表示,通过基于 Retypd 的类型约束及指针/数值区分恢复结构,并生成 C。研究区分完整跨过程分析与较快的过程内变体。
研究范围与作者 研究范围与局限 研究使用 O0/O3 下的 Juliet 样例和五个 Howard 程序。Howard 二进制未实际链接所需库,无法执行,因此重编译不证明行为等价。完整分析有六个 Howard 变体在 24 小时超时;重编译结果仅覆盖成功反编译的样例。已检查的 README 也提醒复杂语句可能产生后端语法错误。
作者与引文 NotDec: WebAssembly Decompilation With Inter-Procedural Type Recovery
Jikai Wang; Ningyu He; Tianming Liu; Junhai Wang; Haoyu Wang
BibTeX ↓
5 个来源 · 复核于 2026-10-20 →
HELIOS 将二进制程序的控制流和函数调用整理成分层摘要,与反编译器输出一同提供给大语言模型,并可加入编译器反馈。论文评估了生成代码的可编译性和功能正确性。
研究范围与作者 研究范围与局限 评估涵盖 x86_64 上的 HumanEval-Decompile,使用 Gemini 2.0 和 GPT-4.1 Mini,并覆盖来自 x86、ARM 和 MIPS 的六种架构。
作者与引文 HELIOS: Hierarchical Graph Abstraction for Structure-Aware LLM Decompilation
Yonatan Gizachew Achamyeleh; Harsh Thomare; Mohammad Abdullah Al Faruque
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
评估语言模型如何解释人工构造的欺骗性合约与对照合约的原始 EVM 字节码,区分识别隐藏转账机制与正确判断其风险,并结合模型评审和不依赖评审模型的检查。
研究范围与作者 研究范围与局限 主要评测覆盖 22 个模型与 13 个合成合约,仅单轮提供原始字节码,不含执行工具、源码检索或链上上下文。8,528 条纳入分析的回答排除了拒答及待完成运行。金标准来自一位专家,部分评审模型与被测模型属于相同系列。各合约的真值检查不一致,包括仅检查所有者权限或选择器,以及两个注入变体没有专门 EVM 测试。结果不能估计真实部署合约中的发生率,也不能推广到交互式逆向智能体。
作者与引文 The Deception Delta: Adversarial Evaluation of LLM-Based Smart Contract Bytecode Forensics
Timo Schefold
BibTeX ↓
7 个来源 · 复核于 2026-10-20 →
将 LLM 反编译分为两个阶段:结构恢复模型把反编译器伪代码转换为保留控制流和数据结构、但不含标识符的中间表示,并以编译器反馈作为强化学习奖励;标识符命名模型再以语义相似度为奖励恢复名称。作者报告,其在 HumanEval 上的平均可重新执行率比 GPT-5-mini 高 21.6%,在 GitHub2025 上的平均 R2I 比 Idioms 提升 29.4%。
研究范围与作者 研究范围与局限 训练和主要评测均使用函数级 C 代码,以 GCC 和 Clang 在 -O0 至 -O3 下编译为 x86-64 Linux 二进制,并以 IDA Pro 伪代码作为模型输入。可重新执行率仅在 HumanEval 和 MBPP 上测量;ExeBench 与 GitHub2025 采用 R2I 可读性指标和 GPT-5-mini 评审。附录实验扩展到 BringUpBench 项目、macOS arm64 与 Windows MSVC 构建以及 Obfuscator-LLVM,但模型仅以 C 代码训练,论文预计遇到 C++ 模板等没有 C 对应物的语言特性时效果会下降。
作者与引文 SK2Decompile: LLM-based Two-Phase Binary Decompilation from Skeleton to Skin
Hanzhuo Tan; Weihao Li; Xiaolong Tian; Siyi Wang; Jiaming Liu; Jing Li; Yuqun Zhang
BibTeX ↓
10 个来源 · 复核于 2026-10-17 →
ShieldedCode 从防御方角度研究软件保护:它以 C 源代码函数及其经虚拟化保护(VMP)后的 x86-64 代码组成的配对数据训练代码语言模型,使模型能够生成、比较和排序受保护的变体。训练配对取自 AnghaBench 函数,经 O0–O3 编译后由一款商业 VMP 工具按 L0–L3 级别保护,再反汇编并规范化。模型为单条虚拟指令内部、相邻虚拟指令之间以及跨虚拟指令的依赖加入注意力掩码,采用面向功能等价和保护强度的对比学习目标,并设置对同一源代码不同变体排序的保护效果任务。持续预训练从 CodeLlama 34B 起步,语料另加入 The Stack;微调使用 250 万组源代码—虚拟机代码配对。在 HumanEval-compile 上,L0 级虚拟机代码生成的 Pass@1 为 26.95%(GPT-4o 为 22.58%),L3 级为 14.71%。在 BinaryCorp-VirtualAssembly 相似性检测中,O0+L1 设置下的 Recall@1 为 0.488,采用线性探针的 jTrans 为 0.333。作者还对生成的保护代码开展了人工逆向研究,以及模式匹配和 angr 攻击。
研究范围与作者 研究范围与局限 全部数据均为 x86-64,所有训练配对都由论文未具名的同一款商业 VMP 工具生成,因此结果未必适用于其他架构、保护工具或虚拟指令设计。生成的虚拟机代码通过 HumanEval-compile 测试用例检验,而非形式化等价验证;各保护级别的 Pass@1 仅在 14.71% 至 26.95% 之间。相对 jTrans 的相似性优势只出现在 O0+L1 设置中:在 BinaryCorp-VirtualAssembly 的其余五种设置中,采用线性探针的 jTrans 的 Recall@1 更高(例如 O2+L1 下为 0.715,ShieldedCode 为 0.309);论文对这一比较的概括也不一致(摘要称提升 10%,引言称提升 15.5 个百分点,结果部分则称性能相当)。消融表中 ContraBin、CLAP 与 CEBin 的得分据论文说明是依其架构估计而非实测。保护强度的结论依赖作者自行开展的攻击和人工研究:12 名研究生与 3 名专业逆向工程师分析 20 个函数,每个函数限时 30–45 分钟,对 ShieldedCode 输出的成功率为 17%,对 VMProtect 和 Themida 分别为 67% 与 58%。ShieldedCode 不是去虚拟化工具或反混淆工具,论文也未链接代码、模型或生成的训练数据。
作者与引文 ShieldedCode: Learning Robust Representations for Virtual Machine Protected Code
Mingqiao Mo; Yunlong Tan; Hao Zhang; Heng Zhang; Yangfan He
BibTeX ↓
5 个来源 · 复核于 2026-10-19 →
Idioms 微调代码语言模型,把单个目标函数的 Hex-Rays 输出转换为预测的原始 C 代码,并同时给出其中使用的用户自定义结构体、联合体和类型别名定义。输入可按调用图广度优先顺序附带相邻的反编译函数,使分散在调用者与被调用者中的类型线索能够提供给模型。作者还构建了 Realtype 数据集,包含来自已编译开源 C 仓库的 157,163 个函数及完整类型定义。其基于 CodeGemma-7b 的模型在 ExeBench 上有 54.4% 的函数通过单元测试,LLM4Decompile 为 46.3%,Nova 为 37.5%;在 Realtype 上的得分至少高出 95%。
研究范围与作者 研究范围与局限 这是局部、函数级的神经反编译:每次预测只覆盖一个目标函数及其类型定义,而非可编译的完整程序。评测使用来自 GitHub 开源项目的 x86-64 Linux gcc 二进制及 ExeBench 的“real”子集;O1–O3 构建禁用内联,且只保留在所有优化级别均能反编译的函数,使 Hex-Rays 与 Ghidra 测试集分别减少 21% 和 76%。ExeBench 单元测试是偏乐观的代理指标;Realtype 没有测试,因此以依赖图等价性及名称、类型的完全匹配作为偏保守的代理指标,且 Realtype 的用户自定义类型须所有字段(递归计算平均 17.6 个)均匹配才算正确。主要模型使用专有 Hex-Rays 的输出,上下文窗口为 2,048 或 4,096 个词元。预测的名称与类型属于统计推断,并非恢复的原始信息。仍可能存在来自 GitHub 的预训练数据泄漏,且未评估混淆代码和恶意软件。
作者与引文 Idioms: A Simple and Effective Framework for Turbo-Charging Local Neural Decompilation with Well-Defined Types
Luke Dramko; Claire Le Goues; Edward J. Schwartz
BibTeX ↓
9 个来源 · 复核于 2026-10-18 →
FidelityGPT 对现有反编译器输出进行后处理:由大语言模型为代码行标注六类失真(如非常规解引用、冗余变量和令人困惑的控制流),再改写被标注的行。其提示词定义各失真类型,并从人工标注的 IDA Pro 与 Ghidra 失真代码行数据库中检索增强上下文。语义强度算法负责选择用于查询的代码行,变量依赖分析则在 50 行分块之间传递冗余变量上下文。作者在 620 对函数上报告检测准确率 89%、精确率 83%,纠正的修复率(FR)为 94%、正确修复率(CFR)为 64%,而他们运行的 DeGPT 分别为 83% 和 37%。
研究范围与作者 研究范围与局限 620 对函数大多取自二进制相似性数据集中 Coreutils、curl、ImageMagick、OpenSSL、PuTTY 与 SQLite 的构建产物,经 IDA Pro 7.5 在 -O0 下反编译,覆盖 ARM-32、MIPS-32 与 x86-32,另含 x86-64 的 TheAlgorithms/C 代码;另有 -O1–-O3 与 Ghidra 数据集用于检验泛化能力。真实标签与 FR/CFR 均由作者团队依照论文标准人工评估。修复率统计的是被标为已修复的行,并非语义等价证明:作者指出修复后的代码往往无法重新编译或执行。纠正阶段以整个函数为单位,函数较长时效果可能下降;失真数据库由 150 行 IDA Pro 与 91 行 Ghidra 代码构建,可能遗漏较少见的异常。主要结果使用温度为 0.5 的 GPT-4o,仍具随机性;DeepSeek-chat 与温度为 0 的结果另行报告。无法排除这些开源项目出现在训练数据中的可能。
作者与引文 FidelityGPT: Correcting Decompilation Distortions with Retrieval Augmented Generation
Zhiping Zhou; Xiaohong Li; Ruitao Feng; Yao Zhang; Yuekang Li; Wenbu Feng; Yunqian Wang; Yuqing Li
BibTeX ↓
9 个来源 · 复核于 2026-10-18 →
CHISEL 利用编译诊断及针对原函数的类型感知差分模糊测试改进 Ghidra 伪代码,并保留反例与候选历史。既有 I/O 样例用于保留评测,不提供给恢复循环。
研究范围与作者 研究范围与局限 评估覆盖 120 个选定 ExeBench 函数、x86-64 的 O0–O3、有/无符号变体及固定的 Gemma4:31b 模型。反馈判定器仍会错误接受候选;有限模糊测试及保留测试不证明等价。签名恢复及基准可能进入预训练语料仍是限制。
作者与引文 CHISEL-ing Back Source Code with AI-enabled Iterative Recovery
Varun Kohli; N Raghava; Biplab Sikdar; Dinil Mon Divakaran
BibTeX ↓
5 个来源 · 复核于 2026-10-20 →
论文使用 5,981 个 x86 汇编样例微调了 CodeLlama、Qwen2.5-Coder 和 CodeGemma 系列的八个本地模型,并评估它们辅助二进制逆向工程的效果。
研究范围与作者 研究范围与局限 评估范围包括整理后的 x86 汇编数据集,以及针对逐行理解和解题的 43 人用户案例研究。
作者与引文 REx86: A Local Large Language Model for Assisting in x86 Assembly Reverse Engineering
Darrin Lea; James Ghawaly; Golden Richard; Aisha Ali-Gombe; Andrew Case
BibTeX ↓
2 个来源 · 复核于 2026-11-06 →
以原生二进制反编译器为基线,衡量现有 WebAssembly 反编译器恢复 C 代码的能力。同一批 C 程序分别经 Emscripten 编译为 WebAssembly、经 clang 编译为原生代码,再由 wasm2c、w2c2 与 wasm-decompile,或由 Ghidra 与 RetDec 反编译。正确性评测复用 DecFuzzer 的 1,000 个 Csmith 程序,将输出重新编译并与原程序的执行结果比较;代码复杂度指标及与原始源码的 AST 相似度则在 PolyBenchC 和 CHStone 上以 -O0 至 -O2 测量。wasm2c 通过了全部 1,000 个正确性程序,wasm-decompile、Ghidra 和 RetDec 分别为 649、818 和 775 个。
研究范围与作者 研究范围与局限 正确性评测仅覆盖生成的单个函数,其中只有局部变量算术运算,不含库调用、指针或全局状态,因此 wasm2c 的结果不能证明其在一般程序上的正确性。w2c2 未纳入正确性评测,wasm-decompile 的输出仅在 -O0 下能被解析用于结构相似度评测。原生基线经过 DecFuzzer 的语法改写器处理,作者指出 Ghidra 与 RetDec 的部分失败可能源于这一评测步骤而非反编译器本身。可读性依据代码行数、嵌套深度、圈复杂度、Halstead 复杂度、goto 与类型转换数量等指标估计,并非人工研究。基准是作者使用单一 Emscripten/clang 工具链编译的 C 程序集,而非真实环境中的 WebAssembly 模块;工具版本仅说明为当时的最新版本。
作者与引文 Is This the Same Code? A Comprehensive Study of Decompilation Techniques for WebAssembly Binaries
Wei-Cheng Wu; Yutian Yan; Hallgrimur David Egilsson; David Park; Steven Chan; Christophe Hauser; Weihang Wang
BibTeX ↓
4 个来源 · 复核于 2026-10-20 →
BinMetric 提供六类二进制分析任务共 1,000 道题目:调用点重建、反编译、函数签名恢复、二进制代码摘要、算法分类与汇编指令生成。题目取自 20 个开源 C 项目:项目针对 x86-64 编译、剥离符号并经 IDA Pro 处理,再借助 DWARF 信息与源码对齐。作者使用单样例提示评测来自五个模型家族的 12 个大语言模型,并在适用任务上与 IDA Pro 反编译器、LLM4Decompile、BinT5 和 HexT5 对比。
研究范围与作者 研究范围与局限 得分是针对孤立代码片段的题目级指标,并不代表端到端逆向工程流程或智能体工具使用能力。预处理需要 IDA Pro,所有二进制均是在 Ubuntu 22.04 上以各项目默认编译设置构建的 x86-64 程序;未研究其他架构、优化级别变化或混淆。多数任务以 Rouge-L、BLEU、METEOR 或 CodeBLEU 衡量文本重合度,因而并不检验语义等价;只有汇编生成任务检查能否编译及测试用例执行结果,其平均执行通过率低于 1%。摘要标签由 ChatGPT 生成后经人工审核;算法分类使用取自单一算法项目的 80 个片段。数据泄露筛查依赖网页精确匹配搜索。被评测模型均早于 2025 年(包括 gpt-3.5-turbo-16k-0613 与 gpt-4-0613),最大长度设为 8,192 个词元,因此排名只反映当时情况。
作者与引文 BinMetric: A Comprehensive Binary Code Analysis Benchmark for Large Language Models
Xiuwei Shang; Guoqiang Chen; Shaoyin Cheng; Benlong Wu; Li Hu; Gangyang Li; Weiming Zhang; Nenghai Yu
BibTeX ↓
5 个来源 · 复核于 2026-10-18 →
研究将大语言模型用作源码到源码的去混淆器,处理经 Tigress 混淆器保护的 C 函数。研究从 ExeBench 选取函数并随机化标识符,再施加五种变换:MBA 算术编码、分支编码、控制流平坦化、不透明谓词和参数随机化。模型每次读入一个完整的混淆函数并输出简化后的 C 代码。DeepSeek Coder 6.7B 与 Code Llama 7B 在“混淆—原始”代码对上微调,GPT-4 通过提示使用,Clang 的 -O0 至 -O3 优化则作为编译器基线。简化效果以 Halstead 程序长度相对于原始代码与混淆代码的变化衡量,语法正确性通过编译 ExeBench 包装程序检查,语义正确性则用 ExeBench 输入/输出样例检查。微调模型在每种变换上降低复杂度的幅度都大于 GPT-4,除算术编码和参数随机化(Clang 与之相当)外也大于 Clang。模型在最多五个变换组成的链上训练,在六个和七个变换的链上得分仍保持稳定;最佳模型在最困难场景中平均将 Halstead 程序长度缩减 89.21%。随机化常量的记忆测试只发现一个样本复现了记忆中的代码。
研究范围与作者 研究范围与局限 混淆使用 Tigress(发布脚本中为 3.3.3 版),以源码到源码的方式作用于单个 C 函数。研究未评估已编译二进制、反编译器输出、商业保护器、跨过程混淆、基于虚拟机的加壳或自修改代码;作者仅指出可通过反编译从二进制得到近似的 C 代码。这是源码级简化,并非二进制去混淆或虚拟机去虚拟化。语义正确性是主要短板:在单一变换场景中,微调模型保持行为的样本比例为 50% 至 94.5%,大多低于 GPT-4,除分支编码外也低于 Clang,并且随着变换链变长而下降。复杂度得分只统计语法与语义均正确的样本。行为通过 ExeBench 输入/输出样例检查,而非等价性证明;输入受 6,144 个词元的上下文限制,模型微调时还使用了 8 位量化。研究只使用一种混淆器,因此对其他混淆器、版本、机器码或字节码的泛化仍待验证;基线是 GPT-4 与 Clang,而非专用去混淆工具。
作者与引文 Exploring the Potential of LLMs for Code Deobfuscation
David Beste; Grégoire Menguy; Hossein Hajipour; Mario Fritz; Antonio Emanuele Cinà; Sébastien Bardin; Thorsten Holz; Thorsten Eisenhofer; Lea Schönherr
BibTeX ↓
10 个来源 · 复核于 2026-10-19 →
利用真实程序中的函数、运行时行为检查,以及 LLM 辅助的代码可理解性评估,比较传统反编译器与基于 LLM 的方法。
研究范围与作者 研究范围与局限 评估语料包含 130 个程序中的 23,400 个函数。基于模糊测试的检查覆盖有限,可理解性评分部分依赖 LLM 评审器。研究产物说明,重新构建的 OSS-Fuzz 项目可能与论文版本不同。
作者与引文 DecompileBench: A Comprehensive Benchmark for Evaluating Decompilers in Real-World Scenarios
Zeyu Gao; Yuxin Cui; Hao Wang; Siliang Qin; Yuanda Wang; Zhang Bolun; Chao Zhang
BibTeX ↓
5 个来源 · 复核于 2026-10-16 →
分两个阶段将以太坊虚拟机字节码转换为 Solidity。首先通过静态分析把字节码提升为带有恢复控制流的三地址码;随后由基于 238,446 对三地址码—Solidity 函数、以 LoRA 微调的 Llama-3.2-3B 模型逐个生成函数。作者在来自已验证以太坊合约的 9,731 个留出函数上报告,与原始源码的平均语义相似度为 0.82,78.3% 的函数高于 0.8。消融实验在 663 个函数上比较未微调的基础模型,案例研究则反编译了一个未验证的 Dx Protocol 合约和一个遭攻击的 MEV 机器人合约。
研究范围与作者 研究范围与局限 0.82 是论文自定的语义相似度分数,v1 未说明其计算方式。该分数与归一化编辑距离、词元频率比较一起,衡量的是与已验证源码的相似程度,而非行为等价性;v1 未报告对生成的 Solidity 进行编译、执行或差分测试。训练与测试函数均来自已验证合约,闭源部署仅出现在案例研究中。与传统反编译器的比较只是笼统表述,未报告与 Elipmoc 等具名反编译器的直接对比实验。作者展示了一个 DeFi 质押函数,其输出丢失了定点运算与基于时间的奖励逻辑(相似度 0.52),并报告在超长函数以及继承层次深或控制流嵌套深的合约上效果较弱。
作者与引文 Decompiling Smart Contracts with a Large Language Model
Isaac David; Liyi Zhou; Dawn Song; Arthur Gervais; Kaihua Qin
BibTeX ↓
3 个来源 · 复核于 2026-10-20 →
DecLLM 将无法重新编译的反编译伪代码修复为可编译、可运行的 C 代码,使 CodeQL 等源码级工具能够用于二进制分析。其迭代流程把编译器错误反馈给现成的大语言模型,并回退非法输出和大段删除;随后利用重建程序与预期不符的测试输出及 AddressSanitizer 报告修复行为,最后对原始与重建的可执行文件进行模糊测试以发现行为差异。作者报告,使用 GPT-3.5 与 GPT-4 时,在 300 个 Code Contest 程序上的成功率分别为 74% 和 78.3%;在 Coreutils 与 CGC 二进制上,61.9%–70.9% 可重新编译,完全功能正常的占 48.1%–59.0%。
研究范围与作者 研究范围与局限 在 Code Contest 上,成功的含义是修复后的代码能够编译,且重建的可执行文件通过所提供的测试用例,并以 AFL++ 模糊测试作额外检查;Coreutils 与 CGC 的总体比率还计入功能异常或崩溃的重建二进制。这确立的是可编译性和基于测试的一致性,而非语义等价性,作者亦指出后者不可判定。结果依赖 IDA Pro 8.3 的输出(另以 Ghidra 10.4 重复一次实验),以及通过 API 提供、上下文上限为 4,096 个词元的 gpt-3.5-turbo-0613 与 gpt-4-0314 快照,因此所选程序须控制在该上限的一半以内。300 个 Code Contest 程序平均 112.9 行;Coreutils 9.5 与 CGC 二进制编译时未剥离符号,并逐函数修复,这种方式无法推断未定义的全局变量。约 30% 的困难案例仍然失败,主要原因包括反编译器混淆地址与数据、缓冲区大小推断错误、包含 STL 代码的过长输出,以及大语言模型以类型强制转换走捷径;测试未覆盖的行为偏差仍无法发现。对 Juliet 样本进行 CodeQL 分析时需要人工调整查询。
作者与引文 DecLLM: LLM-Augmented Recompilable Decompilation for Enabling Programmatic Use of Decompiled Code
Wai Kin Wong; Daoyuan Wu; Huaijin Wang; Zongjie Li; Zhibo Liu; Shuai Wang; Qiyi Tang; Sen Nie; Shi Wu
BibTeX ↓
9 个来源 · 复核于 2026-10-18 →
DiSCo 通过提示冻结参数的大语言模型,把以太坊合约的创建字节码提升为 Solidity 源码,而不是输出反编译伪代码。它将控制流路径抽象为逻辑不变的语义单元,模拟执行从区块执行中捕获的创建字节码以恢复构造函数逻辑,并借助签名数据库与类型感知图模型推断被剥离的名称。这些单元被转写为自然语言描述,并与编码规范一起放入提示词。主要模型为 GPT-4,另测试了 Llama 3。
研究范围与作者 研究范围与局限 真实标签来自 Etherscan 上的源码文件:200 个余额最高的合约用于全部基线,1,000 个用于自动化测试;另有独立实验使用 50 个 Vyper 合约、50 个新部署合约和 149 个闭源攻击合约。可编译率(五次采样取优约为 75%,单次运行为 46%)、差分模糊测试通过率与嵌入相似度都不能证明与已部署源码等价。模仿学习模糊测试器生成的交易近半数会回滚;人工审查认为约 28.5% 的生成合约语义一致,Vyper 输入仅为 12%。作者报告路径过多的合约会导致超时或分析不可靠,名称推断能力也仍然有限。基线是将 Panoramix、Ethervm 和 Elipmoc 的输出(多取自其网站,部分为人工反编译)交给同一大语言模型,并非独立反编译器之间的比较。结果依赖某个 GPT-4 预览版快照。攻击复现仅覆盖 2025 年 1 月的十起事件,其中四起复现成功。
作者与引文 DiSCo: Towards Decompiling EVM Bytecode to Source Code using Large Language Models
Xing Su; Hanzhong Liang; Hao Wu; Ben Niu; Fengyuan Xu; Sheng Zhong
BibTeX ↓
7 个来源 · 复核于 2026-10-18 →
D-LIFT 使用 D-Score 指导大语言模型微调和输出选择,在优先保证准确性的同时改善反编译代码,并评估了 Ghidra 对 coreutils 和 util-linux 程序的输出。
研究范围与作者 研究范围与局限 评估涵盖 coreutils 和 util-linux 中的函数,使用 Ghidra 和多种大语言模型。按 D-Score 衡量,微调后的模型比基线模型多改善了 55.3% 的函数;D-LIFT 改善了原生反编译器输出中 68.2% 的函数。
作者与引文 D-LiFT: Improving LLM-based Decompiler Backend via Code Quality-driven Fine-tuning
Muqi Zou; Hongyu Cai; Hongwei Wu; Zion Leonahenahe Basque; Arslan Khan; Berkay Celik; Dave; Tian; Antonio Bianchi; Ruoyu; Wang; Dongyan Xu
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
ReF Decompile 通过重标记跳转目标、利用函数调用恢复变量信息,将二进制代码转换为源代码。论文在 HumanEval-Decompile 基准上进行了评估。
研究范围与作者 研究范围与局限 评估范围是 HumanEval-Decompile 基准上的二进制代码反编译;论文与同类方法进行了比较,报告的性能为 61.43%。
作者与引文 ReF Decompile: Relabeling and Function Call Enhanced Decompile
Yunlong Feng; Bohan Li; Xiaoming Shi; Qingfu Zhu; Wanxiang Che
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
GenNm 通过微调生成式代码模型(默认 CodeGemma-2B,另测试 CodeLlama-7B 及经 LoRA 微调的 CodeLlama-34B),为剥离符号二进制反编译代码中的占位变量建议名称。查询会加入沿调用图传播、已重命名的调用者代码与被调用者签名;类 DPO 的符号偏好优化(SymPO)抑制模型偏向训练集中高频名称,基于数据流的名称验证步骤则在多轮迭代中从候选名称里选择。作者报告,在重建的 DIRTY 与 VarCorpus 数据集上,其精确率比 VarBERT 和 ReSym 高 5.6–11.4 个百分点;对训练中未出现的名称,精确率为 22.8%,最强基线为 17.3%。
研究范围与作者 研究范围与局限 预测结果依据调试符号中的名称评分:一方面借助 SymLM 的词簇与规则进行词元匹配,另一方面由 GPT-4 评估器判断上下文相关性与语义准确性;两者都不能说明输出就是原始标识符,按二进制划分时整体精确率为 35.8%(DIRTY)和 41.2%(VarCorpus)。对训练中未出现的项目,精确率约为 30%,在 -O2 与 -O3 下的提升也较小。真实标签来自由 GitHub 项目或 Gentoo 软件包重建的 Linux 二进制文件中的调试信息,论文示例使用 IDA Pro 输出。GenNm 需要每个二进制的调用图,这也是重建 DIRTY 数据集的原因;VarCorpus 按函数划分的结果只使用 15% 的二进制样本,与黑盒 GPT-3.5/GPT-4 的比较使用 1,000 个抽样函数。它只恢复变量名,不恢复类型、函数名或完整的反编译代码。
作者与引文 Unleashing the Power of Generative Model in Recovering Variable Names from Stripped Binary
Xiangzhe Xu; Zhuo Zhang; Zian Su; Ziyang Huang; Shiwei Feng; Yapeng Ye; Nan Jiang; Danning Xie; Siyuan Cheng; Lin Tan; Xiangyu Zhang
BibTeX ↓
11 个来源 · 复核于 2026-10-18 →
TypeForge 从去符号二进制中恢复复合数据类型,包括结构体布局、联合体以及指针引用和嵌套关系。它在 Ghidra 反编译器推断出的变量之上构建全程序类型流图,传播成员偏移与大小,切断由类型转换和联合体引起的冲突边,并合成候选类型声明。大语言模型只在这些静态合成的候选中进行选择:每个候选通过反编译器的重定类型接口应用,再以双败淘汰赛比较所得伪代码的可读性。作者在 OSPREY 的 coreutils 数据集上报告复合类型识别 F1 为 81.7%、布局恢复 F1 为 88.2%、关系恢复 F1 为 72.1%。
研究范围与作者 研究范围与局限 恢复的是成员偏移、大小和类型间关系,而非原始类型名或成员名;由于名称不可得,关系是否正确以布局匹配判定。主要评测使用 OSPREY 的数据集,包括 GNU coreutils 与 Howard 数据集中较大的程序,涵盖超过 10,000 个函数和 11,000 个复合类型变量,优化级别为 O0–O3,真实标签取自调试信息;论文未按架构分别报告结果。基线比较中,OSPREY 的结果由其作者提供,运行时间为估算值,ReSym 的数据取自其已发表结果,因此并非所有基线均经重新运行。保守地删除冲突边可能遗漏有效成员;合并或展平成员的编译器优化会降低较高优化级别下的准确率。约 75% 的运行时间用于大语言模型选择阶段;默认模型为 GPT-4o mini,每轮比较执行三次。下游可读性与漏洞检测示例属于案例研究,不能证明语义等价。
作者与引文 TypeForge: Synthesizing and Selecting Best-Fit Composite Data Types for Stripped Binaries
Yanzhong Wang; Ruigang Liang; Yilin Li; Peiwei Hu; Kai Chen; Bolun Zhang
BibTeX ↓
10 个来源 · 复核于 2026-10-18 →
Nova 是面向 x86-64 汇编的生成式大语言模型,从 DeepSeek-Coder 检查点出发,以 AnghaBench 与 The Stack 代码经 gcc -O0 至 -O3 编译、剥离符号并规范化后的汇编训练。它加入为每条指令构建摘要的层次注意力,以及对比学习目标:使同一函数的源码与 O0–O3 汇编表示彼此接近,并按优化级别排序。针对反编译微调后,Nova-1.3B 与 Nova-6.7B 在 HumanEval-Decompile 上的平均 Pass@1 分别为 25.17% 和 34.36%,比同规模 LLM4Decompile 高 14.84 和 12.41 个百分点;另行微调的模型在六个真实项目上的 O0 对 O3 二进制代码相似性检测中取得最高的平均 Recall@1。
研究范围与作者 研究范围与局限 反编译以函数为单位,在 HumanEval-Decompile 的 164 个 C 问题上评测;每个问题在 O0–O3 下编译为 x86-64,每个函数采样 20 次并以题目测试用例运行。基于这些测试的 Pass@k 既不能证明整程序反编译能力,也不能证明等价性。除 LLM4Decompile 与 Nova 外,其他基线采用三样例提示而非微调。相似性结果针对 O0 查询与 O3 候选,候选池为来自 Binutils、Curl、ImageMagick、SQLite、OpenSSL 与 PuTTY 的 50–500 个函数,模型先在 BinaryCorp-3M 上微调。反编译微调使用抽样的 216 万对数据,README 称仅从 The Stack 获取 5 万个文件;论文也说明 Nova 仅支持 x86-64 汇编,模型规模限于 1.3B 和 6.7B。输入需要按论文方式规范化汇编。
作者与引文 Nova: Generative Language Models for Assembly Code with Hierarchical Attention and Contrastive Learning
Nan Jiang; Chengxiao Wang; Kevin Liu; Xiangzhe Xu; Lin Tan; Xiangyu Zhang; Petr Babkin
BibTeX ↓
11 个来源 · 复核于 2026-10-18 →
MALSIGHT 以函数为单位,为剥离符号的二进制恶意软件生成自然语言摘要。它先用 IDA Pro 生成伪代码和调用图,再按先被调用者、后调用者的顺序生成摘要,使每个调用者都能获得其被调用函数的摘要作为上下文;另有一个序列标注模型标记关键 API 调用和字符串,据此进行代码检索并由大语言模型生成注释。摘要模型 MalT5 是 0.77B 参数的 CodeT5+,先在 MalS 上微调,即来自 GitHub 的 89,609 个恶意 C 源码函数,其摘要由大语言模型生成并经人工审阅完善,再在 Capybara 数据集带注释的良性伪代码上微调。作者还提出了包含 500 个伪代码函数的测试集 MalP 和微调 BLEURT 得到的评测指标 BLEURT-sum,并报告 MalT5 的表现与规模大得多的 Code Llama 模型相当。
研究范围与作者 研究范围与局限 训练用摘要由大语言模型生成,再经五位专家审阅完善,并非从零开始人工撰写。MalP 的 500 个测试函数来自对同一批 GitHub 恶意代码仓库中 20 个仓库的编译与反编译,而非野外样本;作者也指出,过滤不够严格可能导致训练集与测试集重叠,从而使结果偏高。质量评估主要采用作者自行提出的 BLEURT-sum 指标。在十个真实恶意软件样本上(其中 79 个函数另由三名逆向工程人员评分),BLEURT-sum 比在 MalP 上低约 30%,作者将其归因于函数过长:15.8% 的函数超过 1,000 个词元,而大多数训练函数不足 300 个。该流程依赖 IDA Pro 伪代码,静态注释依赖在线代码搜索和通用大语言模型。MALSIGHT 用于概括行为,既不是恶意软件检测器,也不是分类器。
作者与引文 Malsight: Exploring Malicious Source Code and Benign Pseudocode for Iterative Binary Malware Summarization
Haolang Lu; Hongrui Peng; Guoshun Nan; Jiaoyang Cui; Cheng Wang; Weifei Jin; Songtao Wang; Shengli Pan; Xiaofeng Tao
BibTeX ↓
5 个来源 · 复核于 2026-10-19 →
Lares 在不重新编译项目的情况下,测试目标二进制函数中是否已包含某个已知 1-day 漏洞的修复。其输入为目标二进制、项目源码和补丁提交差异。补丁增强步骤借助 Tree-sitter 与 Joern 从源码中为改动语句较少的补丁补充数据流和控制流上下文。随后由大语言模型在目标函数的 IDA Pro 反编译伪代码中定位与每个补丁切片对应的伪代码切片。最后,匹配的切片被规范化为等式并交由 Z3 SMT 求解器检验等价性,Z3 无法建模的情况由大语言模型判断,从而确定该函数对应修复前版本还是已修复版本。在来自 OpenSSL、FreeType、tcpdump 和 libxml2 中 73 个 CVE 的 4,480 个测试用例上(使用 GCC 9.4.0 和 Clang 6 以 O0–O3 为 x86、x64 与 ARM 编译),作者报告使用 Claude 3.5 Sonnet 时 x86 上的平均 F1 为 0.77,Robin 与 PS3 分别为 0.67 和 0.68;在五种编译器—架构组合下 F1 为 0.71 至 0.77。
研究范围与作者 研究范围与局限 Lares 回答的问题范围很窄:给定某个 CVE 的补丁差异、带有版本历史的项目源码以及候选函数,判断该函数属于修复前版本还是已修复版本。它同时需要补丁差异与项目源码,并假定已由另外的二进制代码相似性工具(论文以 BinaryAI 为例)定位候选函数。它不负责发现漏洞函数、挖掘新漏洞或比较任意二进制。其判断依赖大语言模型与基于反编译伪代码的 SMT 推理:Z3 只能处理约 21% 的测试用例(仅用 Z3 验证时召回率为 0.221),多数判断来自大语言模型;作者列出的失败原因包括大语言模型在比较时产生幻觉、隐蔽的修改型补丁以及重复出现的补丁语句。结果使用 IDA Pro 7.5 与商用模型,每个用例约花费 0.20 美元;GPT-3.5-Turbo 与 DeepSeek-Coder 的得分更低。评测覆盖四个 C 项目、73 个 CVE 及作者自行编译的二进制,另以 2024 年 10 月之后披露的 20 个漏洞(400 个用例)检验训练数据污染;未评测固件、其他语言或真实厂商构建。仓库没有许可证文件,因此未授予任何复用条款。
作者与引文 Lares: LLM-driven Code Slice Semantic Search for Patch Presence Testing
Siyuan Li; Yaowen Zheng; Hong Li; Jingdong Guo; Chaopeng Dong; Chunpeng Yan; Weijie Wang; Yimo Ren; Limin Sun; Hongsong Zhu
BibTeX ↓
7 个来源 · 复核于 2026-10-19 →
通过 Compile-Trace-Filter 流程构建 200 万组 C/C++ 二进制与源码函数对,并提供涵盖转写为 C/C++ 的 HumanEval、MBPP 任务及近期 GitHub 函数的评测集。
研究范围与作者 研究范围与局限 该工作研究函数级反编译。重新执行测试覆盖 HumanEval、MBPP;GitHub2025 未提供单元测试。内联可能使二进制与源码无法一一对应,微调实验仅使用 10% 的语料。这些结果不能证明整程序恢复能力。
作者与引文 Decompile-Bench: Million-Scale Binary-Source Function Pairs for Real-World Binary Decompilation
Hanzhuo Tan; Xiaolong Tian; Hanrui Qi; Jiaming Liu; Zuchen Gao; Siyi Wang; Qi Luo; Jing Li; Yuqun Zhang
BibTeX ↓
11 个来源 · 复核于 2026-10-16 →
SymGen 使用经 LoRA 微调的 Code Llama 模型生成去符号二进制的函数名,而不是在固定的名称词表上分类。每个去符号函数先由 Ghidra 反编译,再屏蔽其自身名称,并对被调用函数名进行归一化以便去重。微调之前,模型先以反编译代码及其对应源函数的大语言模型生成摘要进行领域适配。在 33 个 C 项目针对 x86-64、x86-32、ARM 和 MIPS 架构及 O0–O3 优化级别构建的函数上(经去重由 2,237,915 个减至 495,494 个),作者报告词级平均 F1 为 0.277(x86-64 上为 0.380),并给出混淆二进制与 Linux 恶意软件的案例研究。
研究范围与作者 研究范围与局限 函数名被拆分为单词,并以精确率、召回率和 F1 评分,同时使用 SymLM 的 CodeWordNet 归并语义相近的词;预测结果是描述性的推测,并非恢复的原始符号。平均 F1 为 0.277,在 MIPS(0.137)和 ARM(0.262)上更低。摘要中最高 409.3%、553.5% 与 489.4% 的提升是作者报告的相对 AsmDepictor 的改进;各基线在作者去重后的数据集上重新训练,得分远低于其原论文结果,XFL 仅在 x86-64 上比较。每种架构和优化级别分别训练一个模型。所有二进制均由 GCC 9.4.0 构建,输入依赖 Ghidra 输出,且 Code Llama 的预训练数据未公开,仍可能存在数据泄漏。混淆测试对来自六个项目的 363 个二进制应用 Hikari 的三种默认混淆(F1 为 0.271–0.303);恶意软件研究涵盖 16 个 x86-64 构建中的 812 个函数(F1 为 0.348)。
作者与引文 Beyond Classification: Inferring Function Names in Stripped Binaries via Domain Adapted LLMs
Linxi Jiang; Xin Jin; Zhiqiang Lin
BibTeX ↓
10 个来源 · 复核于 2026-10-18 →
结合两个微调语言模型与基于 Prolog 的跨函数推理,从去符号二进制的反编译结果中推断局部变量符号及用户自定义数据结构。
研究范围与作者 研究范围与局限 该方法依赖底层反编译结果及针对 C/C++ 数据学习的预测。交叉检查可减少预测冲突,但不能证明恢复的名称或布局与缺失源码完全一致。公开研究产物包含模型、处理后的数据与评估代码。
作者与引文 ReSym: Harnessing LLMs to Recover Variable and Data Structure Symbols from Stripped Binaries
Danning Xie; Zhuo Zhang; Nan Jiang; Xiangzhe Xu; Lin Tan; Xiangyu Zhang
BibTeX ↓
7 个来源 · 复核于 2026-10-17 →
为大语言模型将函数级 x86-64 GCC 汇编反编译为 C 的流程增加两项技术。自构造上下文反编译(sc²dec)无需微调:把模型首次生成且可编译的结果重新编译,以得到的汇编—源码对作为上下文示例再次反编译。细粒度对齐增强(FAE)利用 DWARF 调试信息构造语句级汇编—C 对齐数据,以 LoRA 微调 llm4decompile-6.7b。两者结合后,作者报告在 Decompile-Eval 上的平均可重执行率为 52.41%,基础模型为 48.60%。
研究范围与作者 研究范围与局限 结果为 Decompile-Eval 上的函数级可重执行率:164 道源自 HumanEval 的 C 题目,分别以 O0–O3 编译,并通过重新编译和 HumanEval 测试用例检查。通过这些测试不代表完整程序或全部输入上的等价性;论文也未评估真实二进制、其他架构或可读性。只有首次输出能够重新编译时 sc²dec 才有帮助,因此可重编译率低会限制其收益;作者报告以不匹配的优化级别构造上下文会使结果降低 1–2%,用 clang 构造的上下文得分也略低于 GCC。FAE 仅使用 10,000 个只依赖 C 标准库的 ExeBench 函数,训练一个轮次,且只基于一个 6.7B 基础模型;作者未在更大数据集或模型上验证,它还使 1-shot 结果略有下降。GPT-4 与 DeepSeek 基线是 API 快照,未必可复现。
作者与引文 Self-Constructed Context Decompilation with Fined-grained Alignment Enhancement
Yunlong Feng; Dechuan Teng; Yang Xu; Honglin Mu; Xiao Xu; Libo Qin; Qingfu Zhu; Wanxiang Che
BibTeX ↓
11 个来源 · 复核于 2026-10-18 →
训练语言模型将汇编反编译为 C,并改进 Ghidra 伪代码,以恢复函数能否重新编译并正确执行为评估目标。
研究范围与作者 研究范围与局限 论文实验限定于 x86 平台的 C 代码和函数级基准。通过抽样测试重新执行,不代表整程序等价或恢复了原始源码。仓库后续版本应与 2024 年论文区分。
作者与引文 LLM4Decompile: Decompiling Binary Code with Large Language Models
Hanzhuo Tan; Qi Luo; Jing Li; Yuqun Zhang
BibTeX ↓
5 个来源 · 复核于 2026-10-16 →
WaDec 使用循环级 wat–C 代码片段对,以 LoRA 微调 CodeLlama-7b,将 WebAssembly 文本格式(wat)反编译为 C。它按依赖关系排列函数并进行切片,使每个输入至多包含一个循环,嵌套循环以标记替代。提示中补充被调用函数的声明、此前已定义的局部变量以及偏移到字符串的映射;随后重组输出,恢复字符串常量并重命名变量。训练数据来自经 Emscripten 编译的 51,768 个 the-stack-dedup 程序和 377 个 TheAlgorithms/C 程序。作者在 3,977 个 C 文件上报告,代码膨胀率为 3.34%,可重新编译率为 52.11%,可重新执行率为 43.55%,输出一致率为 27.15%,并与 Wasm2c 及 Ghidra 进行比较。
研究范围与作者 研究范围与局限 所报告的比率是作者在经 Emscripten 编译为 Wasm 的 C 程序上取得的结果。约一半输出可重新编译,不到一半可重新执行,约四分之一能复现原始输出,因此反编译代码总体上并不语义等价。含 3,977 个文件的基准与训练程序来自相同的两个来源。未评估优化构建:作者既未针对 O1/O2 代码调整方法,也未用其训练模型。模型处理数据结构的能力也较弱,常将其拆成独立变量或数组。研究仅涉及 C 源码,未评估由其他语言或工具链生成的 Wasm。基线为 Wasm2c 与 Ghidra 的 Wasm 插件;由于没有大语言模型能在未经微调时反编译 Wasm 函数,此类基线被排除。切片意味着一个函数可能需多次反编译,每个提示约需 0.1 至 2 秒。
作者与引文 WaDec: Decompiling WebAssembly Using Large Language Model
Xinyu She; Yanjie Zhao; Haoyu Wang
BibTeX ↓
8 个来源 · 复核于 2026-10-18 →
在剥离符号二进制的函数名恢复与代码摘要两项任务上,评测 16 个代码领域与通用领域的大语言模型。基准选取 12 个热门 C 项目编译为 x86-64,剥离并用 IDA Pro 反编译 28 个二进制,借助 DWARF 将 81,185 个函数与源码对齐,经专家审核后保留 2,000 个函数。零样本大语言模型与 SymLM、NER、BinT5 和 HexT5 进行比较。Code Llama 34B 在函数名恢复上以 27.59 的词元级 F1 领先,ChatGPT 在摘要任务上以 7.37 的 BLEU-4 领先。研究还考察了少样本提示、两个 7B 模型基于 GNU 二进制的 LoRA 微调,以及针对一个剥离符号的开源 Linux 远程访问木马的案例研究。
研究范围与作者 研究范围与局限 基准仅覆盖按各项目默认编译器与优化设置构建的 x86-64 二进制及 IDA Pro 伪代码,因此结果不能说明在其他架构、优化级别、反编译器或混淆代码上的表现;作者明确未考虑混淆。参考摘要由 ChatGPT 根据源码生成,并经三位专家筛查,而 ChatGPT 本身也是被评测的模型。BLEU-4、METEOR 与 Rouge-L 衡量的是与这些参考摘要的重合度,作者也指出这些指标未必适合二进制代码摘要。函数名恢复采用词元级精确率、召回率与 F1,而非完全匹配。微调使用来自 O0 级 x86-64 GNU 构建的 30,000 个函数。结果对应 2023 年中至 2024 年初发布的模型版本,包括 gpt-3.5-turbo-16k。
作者与引文 How Far Have We Gone in Binary Code Understanding Using Large Language Models
Xiuwei Shang; Shaoyin Cheng; Guoqiang Chen; Yanming Zhang; Li Hu; Xiao Yu; Gangyang Li; Weiming Zhang; Nenghai Yu
BibTeX ↓
4 个来源 · 复核于 2026-10-20 →
CLAP(对比式语言—汇编预训练)学习与自然语言解释对齐的汇编函数嵌入。其数据引擎以 GCC 和 Clang 在 O0–O3 与 Os 下编译 Ubuntu 的 C/C++ 软件包,由 GPT-3.5 为约 260 万个对应的源码函数生成解释,再用其中一半解释微调 Vicuna-13B“影子模型”为更多代码生成说明,最终得到 1.95 亿对汇编—解释数据。采用地址重定基、WordPiece 分词与跳转感知嵌入的 1.1 亿参数汇编编码器先在汇编上预训练,再与文本编码器进行对比对齐。所得嵌入可通过将代码与文本提示匹配来实现零样本分类。在候选池为 10,000 个函数的 BinaryCorp-3M 相似性检索中,零样本 CLAP 的平均 recall@1 为 0.836,经微调的 jTrans 为 0.571。
研究范围与作者 研究范围与局限 训练用的解释由 GPT-3.5 和经微调的 Vicuna 模型依据源码生成,并非人工撰写;五位专家为每个模型的 50 条解释打分,多数被评为可接受。作者指出,仅使用 Ubuntu 构建环境以及采用 GPT-3.5 生成解释都可能带来偏差。函数由 IDA Pro 7.6 反汇编,少于三个基本块的函数被排除。相似性结果使用 BinaryCorp-3M 中不同优化级别的函数对,各基线采用线性探测,jTrans 另做了完整微调,CLAP 则未经微调;密码算法识别(17 种算法,约 7 万个依据函数名与软件包元数据标注的函数)和协议分类(18 种类型)使用作者从 Ubuntu 软件包构建的数据集,其中微调后的 CLAP 超过基线,零样本 CLAP 在密码算法识别上则略逊于最佳基线。恶意软件与排序算法结果仅为个案研究。训练使用 32 块 A100 GPU。CLAP 输出的是嵌入和标签分数,既不是反编译器,也不是恶意软件检测器。
作者与引文 CLAP: Learning Transferable Binary Code Representations with Natural Language Supervision
Hao Wang; Zeyu Gao; Chao Zhang; Zihan Sha; Mingyang Sun; Yuchen Zhou; Wenyu Zhu; Wenju Sun; Han Qiu; Xi Xiao
BibTeX ↓
8 个来源 · 复核于 2026-10-19 →
TYGR 在 angr 的 VEX 中间表示上执行与架构无关的过程内数据流分析,并用图神经网络对每个变量的数据流图进行分类,从而推断剥离符号二进制中栈变量与堆变量的类型。它可预测基本类型、指针及结构体成员布局,覆盖其数据中观察到的 97.1% 的类型。作者还构建了 TyDa:由 Gentoo 与 Debian 的 C 软件包以 O0–O3 编译、保留调试信息的 163,643 个二进制,涵盖 x86、x64、AArch64、Arm32 与 MIPS,并在划分评测子集前对其中函数去重。作者报告在 x64 的 O0–O3 上整体准确率为 76.6%、结构体准确率为 45.2%,并称整体准确率与结构体准确率分别至少超出已有工作 26.1% 和 10.2%。
研究范围与作者 研究范围与局限 真实标签来自作者自行编译的二进制中的 DWARF 信息,训练与测试使用 TyDa-min,即约 8% 的 TyDa 二进制,因此结果不涵盖野外样本、混淆代码或 C++ 代码。分析是过程内的,仅覆盖栈变量与堆变量,不包括全局变量;未解析的间接跳转可能使部分代码未被分析,相邻的栈上结构体会被预测为一个结构体,但作者发现这种情况在 TyDa 中很少见。随着训练数据增加,准确率在 80% 左右趋于平稳,作者将其归因于罕见类型以及仅凭使用方式无法区分的类型。比较按各基线的原始设定进行:DIRTY 与 OSPREY 仅在 x64 上比较,OSPREY 则使用其作者提供的 Coreutils x64-O0 结果。准确率未直接与 Ghidra 或 IDA Pro 比较。预测结果取自固定的基本类型、指针类型与结构体成员类型集合,并不恢复类型名称或完整的结构体声明。
作者与引文 TYGR: Type Inference on Stripped Binaries using Graph Neural Networks
Chang Zhu; Ziyang Li; Anton Xue; Ati Priya Bajaj; Wil Gibbs; Yibo Liu; Rajeev Alur; Tiffany Bao; Hanjun Dai; Adam Doupé; Mayur Naik; Yan Shoshitaishvili; Ruoyu Wang; Aravind Machiry
BibTeX ↓
6 个来源 · 复核于 2026-10-19 →
在无需源码的前提下,逐函数测试反编译器对二进制的处理。RECOMPILER 修复反编译所得的 C 代码,使单个函数能够重新编译;SYMDIFF 借助打过补丁的 angr 与 PROMPT 符号执行器,比较原始二进制函数与重新编译后的反编译函数的符号模型;TUNER 通过切换反编译器的启发式规则,定位造成偏差的规则,并在部分情况下予以规避。作者在 Ghidra 10.0 与 angr 9.2.30 上,使用来自 coreutils、util-linux 及六个热门 GitHub C 项目的 2,004 个二进制与目标文件,得到 93K 个反编译函数;报告发现 4,515 个反编译错误的函数,复现 8 个已知缺陷,发现 17 个此前未知的缺陷,并自动修复 7 个缺陷。
研究范围与作者 研究范围与局限 仅测试了 Ghidra 与 angr,未测试 Hex-Rays、Binary Ninja、RetDec 或基于大语言模型的反编译器;作者估计,若要支持中间表示尚未受支持的反编译器,至少需要 40 天的符号执行引擎开发工作。结果是对作者所选 2,004 个 x86-64 Linux 输入的函数级符号等价检查,这些输入由 GCC 11.1.0 与 Clang 16.0.0 按各项目默认优化选项构建,并排除了大于 30 MiB 的二进制。覆盖并不完整:RECOMPILER 能重新编译 Ghidra 反编译函数的 72.4% 与 angr 反编译函数的 45.0%,SYMDIFF 又分别成功分析其中的 91.3% 与 93.9%。符号执行限制循环次数,默认超时为两分钟,将全局变量视为常量,且不解析浮点约束;精度上的取舍会导致误报,误报情况基于每个反编译器 100 个函数的样本测量。TUNER 在其检查的 443 处偏差中自动修复了 72 处。函数通过检查并不能证明整个程序正确。
作者与引文 D-Helix: A Generic Decompiler Testing Framework Using Symbolic Differentiation
Muqi Zou; Arslan Khan; Ruoyu Wu; Han Gao; Antonio Bianchi; Dave (Jing) Tian
BibTeX ↓
5 个来源 · 复核于 2026-10-27 →
HermesSim 将每个函数提升为 Ghidra P-code,并构建面向语义的图,以显式表示指令内部的操作数结构、定义—使用关系、控制流及副作用顺序,同时舍弃与语义无关的细节,例如由哪个寄存器临时保存某个值。它使用带多头 softmax 聚合器的门控图神经网络对图进行嵌入,再按嵌入相似度比较函数。作者在 Marcelli 等人发布的 Dataset-1 基准上报告:在 10,000 个函数的候选池中进行 x64 跨编译器检索时,RECALL@1 为 48.1%,经微调的 jTrans 为 31.4%;HermesSim 模型参数量为 388K。
研究范围与作者 研究范围与局限 实验室结果沿用 Marcelli 等人的 Dataset-1:训练、验证与测试集分别含 257K、13K 与 522K 个函数,覆盖 x86、ARM 和 MIPS 的 32 位与 64 位代码,由 GCC 和 Clang 以 O0–O3 及 Os 编译。HermesSim 保留该数据集由 IDA Pro 7.3 恢复的控制流和基本块边界,仅用 Ghidra 反汇编并提升各基本块,因此结果并不衡量函数或控制流图的恢复能力。每项设置抽取 1,000 个查询函数,候选池最多为 10,000 个函数;性能提升是相对于论文自行运行的 SAFE、Asm2Vec、GMN、Trex 和 jTrans 而言,其中 jTrans 仅支持 x86,只在 x64 子集上比较。真实场景实验在来自三家厂商 12 个 RTOS 固件映像的 62,605 个 ARM32 与 MIPS32 函数中,检索与 5 个 CVE 相关的 10 个函数;其真实标签来自对各比较方法前 20 个结果的人工检查。方法不编码字符串、整数及外部符号引用,只建模内存副作用,未解析的间接跳转也会使图不完整。相似度用于为人工审查排列候选,并不能证明等价性或存在漏洞。
作者与引文 Code is not Natural Language: Unlock the Power of Semantics-Oriented Graph Representation for Binary Code Similarity Detection
Haojie He; Xingwei Lin; Ziang Weng; Ruijie Zhao; Shuitao Gan; Libo Chen; Yuede Ji; Jiashui Wang; Zhi Xue
BibTeX ↓
8 个来源 · 复核于 2026-10-19 →
对反编译所得与原始 C 函数构成的代码对进行开放式编码,归纳反编译器输出在缺失名称与类型之外如何偏离源码。作者借助语句对齐抽象与主题分析,构建包含 15 个顶层类别、共 52 个编码的层级化编码手册,既涵盖不等价表达式、错误返回行为等正确性问题,也涵盖多余变量、不符合惯用写法的控制流及反编译器特有宏等可读性问题。该编码手册基于 Hex-Rays 输出建立,并应用于 Ghidra、retdec 与 angr;作者据此提出以类型预测、基于规则的修正及整程序级学习技术来应对各类缺陷。
研究范围与作者 研究范围与局限 这是定性分类,并非基准分数或反编译器排名。编码主要基于从小函数集中随机抽取的 200 个 Hex-Rays 反编译/原始函数对,另加十个大型函数;作者报告共编码 235 个函数对。Ghidra、retdec 与 angr 仅在 25 个函数的子样本上与 Hex-Rays 比较。输入是对多数代码为 C 的 GitHub 仓库经 GHCC 构建后的 Hex-Rays 反编译结果,偏向具有可识别且可用构建脚本的项目,并经过一个也误删部分有效函数的过滤步骤;数据集不含混淆二进制,也不太可能包含恶意软件。缺失的变量名与类型被有意不作标注。Java 检查作为附带研究,将编码手册应用于 25 个经 JD-GUI 反编译的 Defects4J 函数。这些问题对逆向工程人员工作效率的影响留待后续研究。
作者与引文 A Taxonomy of C Decompiler Fidelity Issues
Luke Dramko; Jeremy Lacomis; Edward J. Schwartz; Bogdan Vasilescu; Claire Le Goues
BibTeX ↓
4 个来源 · 复核于 2026-10-27 →
CodeArt 基于 jTrans 的 BinaryCorp 构建的 2,600 万个剥离符号的 x86-64 函数,从零开始预训练一个 BERT 规模的编码器。它不依赖符号,而是利用 IDA Pro 控制流图和面向二进制的数据流分析计算控制依赖与数据依赖,再通过注意力掩码,使每个词元只能关注与其存在传递依赖关系的指令、同一条指令内的词元以及全局 [CLS] 词元;预训练时同时遮蔽词元并扰动依赖图。作者将其微调用于二进制相似性分析、恶意软件家族分类和类型推断,报告相对已有模型的提升为:在 500 个函数的候选池中相似性 recall@1 由 53% 升至 64%,恶意软件家族分类 LRAP 由 49% 升至 60%,类型推断平均 F1 由 74% 升至 94%。
研究范围与作者 研究范围与局限 模型仅处理 x86-64,函数由 IDA Pro 反汇编,输入上限为 512 个词元。相似性任务在 BinaryCorp-3M 上微调,以 Coreutils 作验证集,在 Curl、Binutils、ImageMagick、SQLite、OpenSSL 和 PuTTY 六个项目上测试,基线为 GNN、GMN、jTrans 与 DiEmph;PuTTY 的函数较短,CodeArt 在其上仅与 DiEmph 相当。类型推断使用 StateFormer 数据集中的 x86-64 部分及 35 个标签,并与 StateFormer 已报告的结果比较,而非重新运行。恶意软件分类使用来自 VirusTotal 与 VirusShare、属于最常见 100 个家族的 5,484 个样本,对比 jTrans 和重新实现的 CNN。所有提升都是相对这些基线和设定而言。CodeArt 输出嵌入及特定任务的预测,既不是反编译器,也不是恶意软件检测器。
作者与引文 CodeArt: Better Code Models by Attention Regularization When Symbols Are Lacking
Zian Su; Xiangzhe Xu; Ziyang Huang; Zhuo Zhang; Yapeng Ye; Jianjun Huang; Xiangyu Zhang
BibTeX ↓
9 个来源 · 复核于 2026-10-19 →
StackSight 借助大语言模型提示,将 WebAssembly 文本格式(WAT)函数反编译为 C++。它先通过静态分析为每条 WAT 指令标注虚拟栈状态,在分支分叉处使用符号记法;再用单样例思维链提示,要求模型恢复变量含义、总结函数功能并写出 C++。使用 GPT-4 时,与单样例提示相比,通过全部基准测试的输出比例在 HumanEval-X 上从 19.7% 升至 36.5%,在 MBXP 上从 42.4% 升至 59.6%;论文还评估了 GPT-3.5 与 Code Llama-7B-Instruct。
研究范围与作者 研究范围与局限 输入是 HumanEval-X(164 个中 161 个可编译)与 MBXP(974 个中 773 个)C++ 子集中的简短练习函数,以 Emscripten 3.1.46 按 -Oz 编译为侧模块,通过 --profiling-funcs 保留函数名,再用 wasm2wat 1.0.33 转换;未评估经过压缩、混淆或完整应用规模的 WebAssembly。正确性指输出能够编译并通过基准测试用例的比例;测试判定器会重命名函数、插入测试并补充命名空间指令,按值传参则由人工修改。通过这些测试并不证明与原始模块等价。函数摘要以 BERTScore 和 SBERT 评分;用户研究有 15 名参与者,每个数据集 20 个代码片段。wasm2c 与一种早期神经反编译器因无法生成可编译输出而未纳入比较,结果也依赖特定版本的托管模型。
作者与引文 StackSight: Unveiling WebAssembly through Large Language Models and Neurosymbolic Chain-of-Thought Decompilation
Weike Fang; Zhejian Zhou; Junzhou He; Weihang Wang
BibTeX ↓
4 个来源 · 复核于 2026-10-18 →
STRIDE 不使用神经网络模型,而是预测反编译器输出中变量的名称和类型。它基于带已知标签的训练反编译结果构建数据库,将每处变量出现位置紧邻左右两侧的词元序列(N-gram,N 取 2 至 60)映射到出现频率最高的五个名称或类型。变量占位名会被规范化,类似地址的词元和较大的常量会被分桶,以便 N-gram 能够匹配。预测时,它在每处出现位置的两侧查找最长的匹配 N-gram,按匹配的特异程度为返回的标签打分,并在整个函数内累加得分。原型约有 1,000 行 Python 代码,在 CPU 上运行。作者报告,在训练集中未出现的 DIRT 函数上,类型恢复准确率为 66.4%(启用束搜索的 DIRTY 为 52.3%),重命名准确率为 56.2%(VarBERT 的已报告结果为 51.3%)。在 16 个 VarCorpus 划分中,其重命名准确率在 11 个划分上高于 VarBERT,平均高 1.55 个百分点。预测在 CPU 上每个函数耗时 8.2 毫秒,而 VarBERT 在 NVIDIA L4 GPU 上为 43.7 毫秒。
研究范围与作者 研究范围与局限 这是一篇未标明发表场所的 arXiv 预印本。STRIDE 依据完全一致的 N-gram 匹配进行分类,因此预测取决于训练数据中出现过的词元序列:它无法模糊匹配,也无法预测训练中未出现的名称或类型;基于某一反编译器词元格式训练的模型预计不能迁移到其他反编译器。结果基于 DIRT、DIRE 与 VarCorpus 三个基准数据集中的反编译器输出。DIRT 使用 GitHub 项目经 GCC -O0 编译后的 Hex-Rays 输出,并以 DWARF 信息生成标签,较早的 DIRE 数据集以类似方式构建;VarCorpus 覆盖以 Hex-Rays 和 Ghidra 在 -O0 至 -O3 下反编译的 Gentoo 软件包。类型恢复只在 DIRT 上评测,且仅覆盖 x86 C/C++ 代码。准确率按完全匹配计算,近义名称也算作错误。约 60% 的 DIRT 测试函数同样出现在训练集中,STRIDE 在这部分依靠记忆达到约 99% 的准确率;训练集中未出现的函数上的结果更具代表性。DIRT 保留了函数名与全局变量名,去除这些标识符后重命名准确率会下降几个百分点。部分基线数据摘自既有论文,并未重新运行。作者在 README 中预计,对包含训练中未出现结构体的自定义闭源二进制文件效果不佳。仓库是研究原型,不含反编译器插件或训练好的数据库。
作者与引文 STRIDE: Simple Type Recognition In Decompiled Executables
Harrison Green; Edward J. Schwartz; Claire Le Goues; Bogdan Vasilescu
BibTeX ↓
5 个来源 · 复核于 2026-10-19 →
论文评估 GPT-4 在二进制逆向工程中的表现,考察其对人工编写代码和反编译代码的理解与解释,涵盖基础代码解读和恶意软件分析。
研究范围与作者 研究范围与局限 评估范围包括 GPT-4、人工编写代码和反编译代码,以及基础代码解读和较复杂的恶意软件分析。
作者与引文 Exploring the Efficacy of Large Language Models (GPT-4) in Binary Reverse Engineering
Saman Pordanesh; Benjamin Tan
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
论文使用 Emotet 恶意软件活动中的真实恶意脚本,评估四种大语言模型的去混淆能力及其在逆向工程中的应用。
研究范围与作者 研究范围与局限 评估范围为四种大语言模型和 Emotet 活动中的恶意脚本。
作者与引文 Assessing LLMs in Malicious Code Deobfuscation of Real-world Malware Campaigns
Constantinos Patsakis; Fran Casino; Nikolaos Lykousas
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
研究函数内联使一个二进制函数对应多个源码函数时的二进制函数相似性检测。作者基于 BinKit,将 51 个 GNU 项目分别在启用与禁用 -fno-inline 的条件下编译(9 个 GCC 与 Clang 版本、O0–O3、x86、ARM 与 MIPS 共六种目标,各 216 种组合),并利用调试行号映射标注 5,621,140 个跨内联函数对。作者归纳出叶内联、根内联与内部内联三种模式,表明 Gemini、SAFE 与 GMN 在这些模式上准确率下降,并提出 CI-Detector:针对每种模式训练一个基于属性控制流图的图神经网络,再聚合各模型得分,报告精确率为 81%、召回率为 97%。
研究范围与作者 研究范围与局限 三种模式源自作者自行构建的 51 个 GNU 项目编译矩阵;作者指出,非默认优化等其他编译设置,或采用不同内联惯例的项目,可能不适用于已学习的模型。标签依赖 IDA Pro 与 DWARF 调试工具,作者将其列为构造效度威胁;属性控制流图由 IDA Pro 7.3 构建,反汇编错误可能影响结果。精确率与召回率来自各含 40,000 个正例与 40,000 个负例的平衡测试对,并按 F1 调整阈值,而非大规模候选池检索。基线为已发布的 Gemini、SAFE 与 GMN 模型,以及结合 Asm2Vec 的 Bingo 式内联策略。研究未评估混淆二进制或基于大语言模型的相似性模型。
作者与引文 Cross-Inlining Binary Function Similarity Detection
Ang Jia; Ming Fan; Xi Xu; Wuxia Jin; Haijun Wang; Ting Liu
BibTeX ↓
7 个来源 · 复核于 2026-10-27 →
BinaryAI 通过将剥离符号的二进制中的函数与源代码匹配,识别其复用了哪些开源 C/C++ 库。它先用 Ghidra 将每个二进制函数反编译为类 C 伪代码,再用以 CLIP 式对比损失、在约 1,000 万对二进制—源码函数上训练的 Pythia-410M 模型,把伪代码与源码函数嵌入同一向量空间。从包含 12,013 个库、56,342,179 个源码函数的语料中检索出候选后,方法借助链接时的位置局部性和调用图加以精炼;当某个库中被匹配函数的比例超过阈值时,即判定二进制包含该库。作者报告其 recall@1 为 22.54%,CodeCMR 为 10.75%;库识别的精确率与召回率分别为 85.84% 和 64.98%,一款未具名商业工具为 73.36% 和 59.81%。
研究范围与作者 研究范围与局限 训练函数对来自自动编译并保留 DWARF 调试信息的 ArchLinux 与 AUR 软件包,语料和测试集均只涵盖 C/C++ 项目。软件成分分析测试集是作者由 85 个 GitHub 项目编译出的 150 个剥离符号的二进制,其中 1,045 个被复用库依据构建文件、头文件和许可证元数据人工标注;函数级真实标签仅覆盖其中 15 个二进制(23,529 对)。recall@1 数据合并了模型验证集与这 15 个二进制。两款商业基线依保密协议匿名,所有基线均在作者的 12,013 个库数据集上重建。作者检查的 112 个误报都可追溯到不完整的库依赖数据。模型、训练函数对、源码函数语料和带标注的测试集均未公开;论文链接的在线服务所用模型与语料可能不同于 2024 年评测的系统。匹配结果说明复用了哪些源码,并不是反编译结果,也不能证明二进制未被修改。
作者与引文 BinaryAI: Binary Software Composition Analysis via Intelligent Binary Source Code Matching
Ling Jiang; Junwen An; Huihui Huang; Qiyi Tang; Sen Nie; Shi Wu; Yuqun Zhang
BibTeX ↓
6 个来源 · 复核于 2026-10-19 →
FoC 使用 FoC-BinLLM 概括去符号二进制文件中密码函数的语义,并使用 FoC-Sim 检索相似实现。论文评估了两个模型,以及它们在病毒分析和已披露一天的漏洞检测中的应用。
研究范围与作者 研究范围与局限 评估使用构建的密码函数二进制数据集和自动生成的语义标签。论文报告 FoC-BinLLM 的 ROUGE-L 分数比 ChatGPT 高 14.61%,FoC-Sim 的 Recall@1 比此前最佳方法高 52%。
作者与引文 FoC: Figure out the Cryptographic Functions in Stripped Binaries with LLMs
Xiuwei Shang; Guoqiang Chen; Shaoyin Cheng; Shikai Guo; Yanming Zhang; Weiming Zhang; Nenghai Yu
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
SLaDe 使用 200M 参数的编码器—解码器模型、面向代码的分词及 PsycheC 类型补全,将函数级汇编转换为 C。研究覆盖 x86 与 ARM 的 -O0、-O3 设置,并结合生成候选与输入/输出检查。输入是汇编文本而非原始机器字节,反汇编不属于该方法。
研究范围与作者 研究范围与局限 评测覆盖约 4,000 个 ExeBench 函数及含 112 个程序的合成基准。束宽为 5,并选择首个通过有限输入/输出测试的候选;生成函数被放回原始调用上下文。通过这些测试不代表完整程序或全部输入上的等价性。编辑相似度只是可读性的代理指标。较长函数、外部调用及错误的类型/运算符预测仍会导致失败;模型的输入和输出窗口均为 1,024 个位置。历史基线比较的覆盖范围不同,不能据此确立当前排名。
作者与引文 SLaDe: A Portable Small Language Model Decompiler for Optimized Assembly
Jordi Armengol-Estapé; Jackson Woodruff; Chris Cummins; Michael F. P. O'Boyle
BibTeX ↓
9 个来源 · 复核于 2026-10-18 →
CEBin结合代码嵌入筛选候选函数,再通过成对比较检测相似的二进制代码,包括含漏洞的函数。
研究范围与作者 研究范围与局限 论文在三个二进制代码相似性数据集和一个大规模 1-day 漏洞检测基准上评估了 CEBin。针对漏洞检测任务,论文报告其可在数秒内从数百万个候选函数中找到相似函数,召回率为 85.46%。
作者与引文 CEBin: A Cost-Effective Framework for Large-Scale Binary Code Similarity Detection
Hao Wang; Zeyu Gao; Chao Zhang; Mingyang Sun; Yuchen Zhou; Han Qiu; Xi Xiao
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
VarBERT 使用 BERT 式模型为 IDA Hex-Rays 与 Ghidra 的反编译输出建议变量名:模型先以来自 Debian 的 520 万个人工编写的 C 函数预训练,再以反编译代码微调;它还预测每个变量出自开发者,还是由反编译器引入。作者从 Gentoo 的 C 与 C++ 软件包构建 VarCorpus,在 O0 至 O3 下编译为 x86-64,并借助调试符号为反编译变量标注名称。在 O2 二进制的按函数划分上,IDA 与 Ghidra 的 Top-1 准确率分别为 54.43% 和 54.49%;在 IDA-O0 子集上为 50.70%,DIRE 与 DIRTY 分别为 35.94% 和 38.00%。
研究范围与作者 研究范围与局限 预测名称是模型学到的建议,以开发者原名称评分,并非恢复出的原始符号。在 O2 的按二进制划分上,Top-1 准确率降至 42.40%(IDA)与 40.49%(Ghidra);在 IDA-O0 的按二进制划分上,其领先 DIRTY 的幅度为 4.52 个百分点。与 DIRE、DIRTY 的比较仅覆盖 O0 下的 IDA,并因 DIRE 训练耗时过长而只使用约 40 万个函数(约占 VarCorpus 的 15%)。方法只能为反编译器恢复出的变量命名,标注则依赖 IDA 与 Ghidra 在匹配调试符号时保留变量。语料来自 Linux 发行版软件包,以 x86-64 为主,另有规模较小的 AArch64 O2 实验,可能不代表 Windows 或 macOS 可执行文件;去重仅删除完全重复项。用户研究由 27 名完成全部 13 组函数的学生参与。类型、数据结构与可重新编译的代码不在其范围内。
作者与引文 “Len or index or count, anything but v1”: Predicting Variable Names in Decompilation Output with Transfer Learning
Kuntal Kumar Pal; Ati Priya Bajaj; Pratyay Banerjee; Audrey Dutcher; Mutsumi Nakamura; Zion Leonahenahe Basque; Himanshu Gupta; Saurabh Arjun Sawant; Ujjwala Anantheswaran; Yan Shoshitaishvili; Adam Doupé; Chitta Baral; Ruoyu Wang
BibTeX ↓
6 个来源 · 复核于 2026-10-18 →
通过三个协同角色选择、提出并检查修改,改进已有的类 C 反编译输出。其流程简化代码结构、添加注释并重命名变量,在接受结构修改前,使用微代码片段语义计算比较模拟的符号值与调用。作者以四个代码库中的 620 个函数评估可读性与命名效果,并分别测试保留与剥离符号的版本。
研究范围与作者 研究范围与局限 报告的 24.4% 降幅来自保留符号版本输出的 Halstead 工作量代理指标,并非直接测得的人力节省。62.9% 的注释结果是人工判定正确的注释中,具有非平凡信息者的平均占比。MSSC 是过程内启发式检查:调用被抽象处理,循环转化为分支;解析、别名与路径增长仍有限制。其 80 个案例的人工审查报告准确率为 84%、召回率为 85%,其中漏过三处有害修改。这支持辅助理解伪代码,不能保证二进制等价、整程序可重新编译或恢复原始源码。
作者与引文 DeGPT: Optimizing Decompiler Output with LLM
Peiwei Hu; Ruigang Liang; Kai Chen
BibTeX ↓
10 个来源 · 复核于 2026-10-17 →
Assemblage 是一个分布式系统,从 GitHub 与 vcpkg 爬取 C/C++ 项目,在多种编译器配置下构建,并记录源码到二进制的映射,包括函数地址、源代码、注释以及 PDB 或 DWARF 调试信息。该系统在 AWS 上运行约一年,以 Visual Studio 2015–2022 在不同优化级别、架构及 Debug/Release 模式下构建出 89 万个 Windows PE 二进制,另以 GCC 与 Clang 构建出 42.8 万个 Linux ELF 二进制,共涵盖 29 种配置。案例研究将这些数据用于 PassTell 编译器溯源、图神经网络与 jTrans 函数相似性检测,以及比较 XDA 与 IDA 的函数边界识别。
研究范围与作者 研究范围与局限 这些二进制均由 GitHub 与 vcpkg 上的开源项目构建,其中许多是小型学生项目或实用工具,因此不能代表商业、加壳或混淆软件。Assemblage 不独立检测恶意软件,作者依赖 GitHub 禁止恶意软件的政策,并计划在后续版本中加入扫描。论文报告的构建成功率在 Windows 上约为 30%,在 Linux 上为 7%。公开数据集仅包含采用宽松许可证的仓库,因此可下载的副本只是论文语料的子集;元数据中的仓库链接会把二进制与作者的 GitHub 主页关联起来。案例研究在原有协议下以最小改动重新训练现有模型,展示的是 Windows 与 Linux 之间的泛化差距(例如 jTrans 在 Windows 上的 MRR 为 0.52,在 Linux 上为 0.83),而非新的分析方法。
作者与引文 Assemblage: Automatic Binary Dataset Construction for Machine Learning
Chang Liu; Rebecca Saul; Yihao Sun; Edward Raff; Maya Fuchs; Townsend Southard Pantano; James Holt; Kristopher Micinski
BibTeX ↓
9 个来源 · 复核于 2026-10-27 →
BinSum 评测大语言模型以自然语言概括二进制函数的能力。作者使用 GCC 7.5 将 44 个 GNU 项目编译为 x86、x64、ARM 和 MIPS 架构、-O0 至 -O3 优化级别的二进制,把 557,664 个二进制函数与开发者注释匹配作为参考摘要,并以原始字节、汇编、IDA 微码,以及带或不带符号的反编译代码等形式呈现每个函数。GPT-4、ChatGPT、Llama 2 与 Code Llama 使用从 320 个由 GPT-4 生成的候选中选出的提示词,并以经过微调的 BinT5 作为基线;输出以嵌入相似度并结合 BLEU、METEOR 与 ROUGE-L 评分。反编译代码是最有用的表示形式,剥离符号会使平均相似度分数从 0.449 降至 0.202。
研究范围与作者 研究范围与局限 参考摘要是从源码中提取的开发者注释,作者指出这些注释可能与代码不一致。基于 all-mpnet-base-v2 的嵌入相似度和 n-gram 指标衡量的是与这些注释的接近程度,而非摘要是否正确或对分析人员有用;论文未报告人工评估。所有二进制均为使用同一 GCC 版本构建的开源 GNU 程序,作者指出固件、恶意软件和混淆代码不在覆盖范围内。提示词基于随机抽取的 1,000 个函数选出。结果对应 2023 年 6 月的 gpt-4-0613 与 gpt-3.5-turbo-16k-0613 快照,以及 7B 和 13B 规模的 Llama 2 与 Code Llama 模型,不能据此对当前模型排名。
作者与引文 Binary Code Summarization: Benchmarking ChatGPT/GPT-4 and Other Large Language Models
Xin Jin; Jonathan Larson; Weiwei Yang; Zhiqiang Lin
BibTeX ↓
4 个来源 · 复核于 2026-10-20 →
论文提出一种两步混合方法,利用大语言模型改进 IDA-Pro 反编译生成的 C 代码,使其能够重新编译。在一组常见的 C 测试用例上,该方法以适度工作量实现了超过 75% 的重新编译成功率。
研究范围与作者 研究范围与局限 先导研究考察了重新编译 IDA-Pro 输出时遇到的障碍;评估使用了一组常见的 C 测试用例。
作者与引文 Refining Decompiled C Code with Large Language Models
Wai Kin Wong; Huaijin Wang; Zongjie Li; Zhibo Liu; Shuai Wang; Qiyi Tang; Sen Nie; Shi Wu
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
kTrans 使用融合汇编语言知识的 Transformer 生成二进制代码嵌入。论文通过离群点检测和可视化考察嵌入,并评估其在二进制代码相似性检测、函数类型恢复和间接调用识别中的表现。
研究范围与作者 研究范围与局限 涵盖二进制代码及三项下游任务:二进制代码相似性检测、函数类型恢复和间接调用识别,报告的提升分别为 5.2%、6.8% 和 12.6%。
作者与引文 kTrans: Knowledge-Aware Transformer for Binary Code Embedding
Wenyu Zhu; Hao Wang; Yuchen Zhou; Jiaming Wang; Zihan Sha; Zeyu Gao; Chao Zhang
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
BTD(Bin to DNN)将深度学习编译器生成、已剥离符号的 64 位 x86 可执行文件反编译为模型规格:算子类型、网络拓扑、维度与参数。学习得到的分类器把反汇编函数标注为 DNN 算子,Intel Pin 动态分析将算子串联起来,再在经污点分析裁剪的执行轨迹上进行符号执行,借助针对各算子的模式恢复维度与参数布局。作者在 PyTorch 中重建恢复出的模型并重新编译,以便与原可执行文件比较行为。
研究范围与作者 研究范围与局限 评测仅覆盖由 TVM v0.7、v0.8、v0.9.dev(-O0 与 -O3)、2020–2022 年的三个 Glow 快照以及 NNFusion v0.2/v0.3 生成的 64 位 x86 可执行文件;GPU、加速器及其他架构的可执行文件只作讨论,未被反编译。方法假定反汇编与函数恢复完全正确(论文使用 IDA Pro 7.5),且编译来源已知;维度与参数模式需针对各算子人工设计:需要此类模式的 36 个 ONNX 算子中覆盖了 22 个,不含 QLinearConv 等量化算子。作者报告在来自七个计算机视觉模型和 FastText 的 65 个可执行文件中,有 59 个得到正确规格;一个 TVM -O3 ResNet18 卷积算子的参数布局需借助真实标签人工修正,NNFusion 也只能编译其自带的 VGG11。重新编译后的行为仅在 100 张 ImageNet 图片或 50 条人工构造的 FastText 输入上比较,并未证明对全部输入一致。未评测经过混淆的可执行文件。
作者与引文 Decompiling x86 Deep Neural Network Executables
Zhibo Liu; Yuanyuan Yuan; Shuai Wang; Xiaofei Xie; Lei Ma
BibTeX ↓
8 个来源 · 复核于 2026-10-20 →
XFL 将去符号二进制中的函数命名视为极端多标签分类:函数名被拆分为词元,再由 PfastreXML 从常见标签词表中为每个函数排序合适的词元。其 DEXTER 嵌入结合基于 angr VEX 中间表示的静态分析特征、调用图上下文和整个二进制的全局上下文,另有一个语言模型把预测的词元排列成函数名字符串。在来自 Debian 软件包、共 10,047 个 x86-64 C 二进制中的 741,724 个函数上,以 1,024 个标签的词表,作者报告精确率 0.835、召回率 0.575、F1 0.681,在精确率和 F1 上领先 Punstrip、Debin 与 Nero。
研究范围与作者 研究范围与局限 预测结果是固定词表中的词元标签,经排序后可选地组合成名称;它们并非恢复的源码名称,评分也按词元而非完整名称匹配。评测使用来自 Debian 软件包、以多种编译器与优化设置构建的 x86-64 ELF C 二进制,以及规模较小的 Nero 数据集;训练所得模型仅适用于 x86-64 GNU/Linux 二进制。测试时所有工具均从符号表获取函数边界,因此不计入边界检测错误。许多测试函数名也出现在训练集中;仅考察训练中从未出现的名称时,F1 降至 0.242。混淆和对抗性二进制不在研究范围内。Nero 数据集上 Debin 与 Dire 的数据取自 Nero 论文,并未重新运行。
作者与引文 XFL: Naming Functions in Binaries with Extreme Multi-label Learning
James Patrick-Evans; Moritz Dannehl; Johannes Kinder
BibTeX ↓
10 个来源 · 复核于 2026-10-18 →
构建可复现的交叉编译基准 BinKit,包含由 51 个 GNU 软件包生成的 243,128 个二进制和 36,256,322 个函数,覆盖八种架构、九个 GCC 与 Clang 版本、五个优化级别,以及 PIE、LTO、禁止内联和 Obfuscator-LLVM 等选项构成的 1,352 种组合。可解释基线 TikNib 基于简单的前语义函数特征,衡量编译器、编译选项与架构如何改变这些特征。作者报告称,少量基本特征即可接近深度学习工具的准确率,加入类型特征后 AUC 超过 0.99,并将失败案例归因于 IDA Pro 分析错误、编译器后端差异和架构特定代码。
研究范围与作者 研究范围与局限 研究对象是函数级的前语义(语法与结构)特征,样本为从源码编译、带调试信息以构建真实标签的 Linux GNU 软件包;语义特征、基于 NLP 的模型以及整个二进制或其他相似性任务不在评测范围内。AUC 超过 0.99 的结果所用参数与返回类型通过 Ctags 和调试信息从源码获得,并非从剥离符号的二进制中恢复。与现有最优方法的比较是将 TikNib 在 VulSeeker 的 ASE 数据集上的 AUC 与 VulSeeker 作者报告的数值对照,而非重新运行,并且省略了原论文使用的固件映像。混淆仅涵盖 Obfuscator-LLVM 的指令替换、虚假控制流和控制流平坦化,且只应用一次。实验使用 IDA Pro 6.95,作者也无法排除 MIPS 特征提取有误的可能。结果不能用于对后续学习模型或大语言模型方法排名。
作者与引文 Revisiting Binary Code Similarity Analysis Using Interpretable Feature Engineering and Lessons Learned
Dongkwan Kim; Eunsoo Kim; Sang Kil Cha; Sooel Son; Yongdae Kim
BibTeX ↓
8 个来源 · 复核于 2026-10-20 →
Asteria-Pro 在基于 Tree-LSTM 的二进制代码相似性检测中加入领域知识预筛选和重排序,并评估其在不同物联网硬件架构的固件漏洞搜索中的表现。
研究范围与作者 研究范围与局限 评估涵盖固件漏洞搜索:预筛选将计算时间缩短 96.9%;重排序使 MRR 提升 23.71%、Recall 提升 36.4%。大规模搜索以 91.65% 的精确率发现了 1,482 个存在漏洞的函数。
作者与引文 Asteria-Pro: Enhancing Deep-Learning Based Binary Code Similarity Detection by Incorporating Domain Knowledge
Shouguo Yang; Chaopeng Dong; Yang Xiao; Yiran Cheng; Zhiqiang Shi; Zhi Li; Limin Sun
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
SymLM 将去符号二进制的函数名预测为一组名称单词。它使用在微执行轨迹上预训练的 Trex 模型编码每个函数的指令,将其与取自 Ghidra 过程间控制流图的调用者、内部被调用函数及外部库调用的嵌入融合,再由 MLP 解码器对固定词表中的单词打分;名称预处理和词嵌入模块 CodeWordNet 用于处理缩写与同义词。在 27 个项目的 16,027 个二进制、共 1,431,169 个函数上(涵盖 x86、x64、ARM 与 MIPS,O0–O3 优化级别及四种 Hikari 混淆),作者报告加权平均精确率 0.634、召回率 0.677、F1 0.655,并给出固件案例研究。
研究范围与作者 研究范围与局限 函数名被预测为来自固定训练词表的无序单词集合,并按单词级精确率、召回率和 F1 评分,CodeWordNet 会将语义相近的单词计为匹配。这并非精确恢复源码名称,且无法生成词表外的单词。二进制由 GCC 7.5 为 Linux 构建,并在同样的 27 个项目内按二进制划分数据集。在来自 12 个未见项目的 540 个二进制上,整体表现仍然较低,作者将部分原因归于词表不匹配;后来一项 NDSS 2025 研究在去重数据上比较时,报告 SymLM 的平均 F1 为 0.105。与 NFRE 的比较仅针对 x64,与 NERO 的比较使用 NERO 的数据集。混淆实验覆盖四种 Hikari 混淆,不包括加壳或加密。固件案例中,八个 32 位 ARM 固件映像的 1,061 个函数里有 172 个得到部分正确的名称。
作者与引文 SymLM: Predicting Function Names in Stripped Binaries via Context-Sensitive Execution-Aware Code Embeddings
Xin Jin; Kexin Pei; Jun Yeon Won; Zhiqiang Lin
BibTeX ↓
9 个来源 · 复核于 2026-10-18 →
在统一的、基于 IDA Pro 的框架中重新实现来自安全、程序语言与机器学习三个研究社区的十种代表性方法,对二进制函数相似性研究开展测量,方法涵盖模糊哈希(Catalog1、FunctionSimSearch)以及图神经网络、NLP 编码器与 Transformer 模型。两个新数据集支撑六项改变优化级别、编译器、位宽与架构的任务,以 AUC 和排序指标评分,另含一项固件漏洞搜索案例。作者报告称,模糊哈希在较难的跨架构场景中失效,基于图神经网络的模型几乎在所有任务中表现最佳,许多近期模型在相同数据上的得分相近。
研究范围与作者 研究范围与局限 这是 2022 年对作者自行重新实现版本的比较,并非对原论文代码或所报告数值的比较,作者也未尝试复现这些数值;CodeCMR 由其原作者运行,Trex 仅在 Dataset-2 上使用其作者提供的模型测试。研究按设计排除了动态分析、符号执行及其他较慢的直接比较方法,也不涵盖基于大语言模型的相似性模型。Dataset-1 使用 GCC 与 Clang,在关闭函数内联的条件下,将七个开源项目(ClamAV、Curl、Nmap、OpenSSL、Unrar、Z3、Zlib)编译为 x86-64、ARM 与 MIPS 的 32 位及 64 位版本,优化级别为 O0–O3 与 Os,并剔除少于五个基本块的函数。Dataset-2 复用 Trex 作者发布的十个 GCC 7.5 项目。特征提取依赖 IDA Pro 7.3;由于缺少较新的 Hex-Rays MIPS 反编译器许可证,BinaryAI 仅覆盖部分数据。固件案例在两个映像中搜索十个 OpenSSL 函数。研究未评估混淆代码,结果也不代表当前排名。
作者与引文 How Machine Learning Is Solving the Binary Function Similarity Problem
Andrea Marcelli; Mariano Graziano; Xabier Ugarte-Pedrero; Yanick Fratantonio; Mohamad Mansouri; Davide Balzarotti
BibTeX ↓
7 个来源 · 复核于 2026-10-20 →
DeepDi 对 x86 与 x64 二进制进行反汇编:先解码候选指令的超集,再以前向、后向与重叠关系将其连接成指令流图,并用关系图卷积网络识别真实指令;随后借助启发式规则和一个小型分类器恢复函数入口。作者在 BAP 语料、Windows 上以 MSVC 构建的 LLVM 11,以及 SPEC CPU2006 与 CPU2017 上报告,其准确率与 IDA Pro、Binary Ninja、Ghidra、Datalog Disassembly 和 XDA 相当或更优,在 Linn–Debray 与 Hikari 混淆二进制上表现稳健,单核 CPU 吞吐量为 146 KB/s(约为 IDA Pro 的两倍),GPU 吞吐量为 24.5 MB/s(约为 IDA Pro 的 350 倍)。
研究范围与作者 研究范围与局限 仅覆盖 x86 与 x64 的 ELF 和 PE 二进制。ELF 的真实标签假定代码节中没有数据,并基于线性反汇编与符号表获得;PE 的真实标签来自 PDB 文件,由于 PDB 只提供数据地址而无数据长度,数据长度为估计值。结果是作者 2022 年在自有数据集与硬件上与 Binary Ninja 2.2、IDA Pro 7.2 及 Ghidra 9.1.2 的比较,使用单块 GTX 2080Ti GPU;Datalog Disassembly 仅支持 x64 ELF,因此只覆盖部分评测。混淆测试使用 Linn–Debray 样本和以 Hikari 构建的二进制;作者指出,掌握模型梯度的强攻击者可能构造对抗样本,并将其留作后续工作。恶意软件案例报告训练数据上的十折交叉验证准确率,以及挑战赛在线评测系统返回的对数损失,因为测试标签并未公开。反汇编准确率不等于在所有情况下函数边界正确,也不代表反编译或源码恢复。
作者与引文 DeepDi: Learning a Relational Graph Convolutional Network Model on Instructions for Fast and Accurate Disassembly
Sheng Yu; Yu Qu; Xunchao Hu; Heng Yin
BibTeX ↓
5 个来源 · 复核于 2026-10-27 →
将人工逆向工程重新表述为“完美反编译”:编写源码,使其在原始工具链与编译选项下编译后,能完全复现目标函数的二进制代码。作者开发了 Decomperson——一个对每次提交进行编译、反汇编、测试与差异比对的网页编辑器,并在 2020 年 11 月举办的 24 小时 Jeopardy 式竞赛 Decompetition 中使用;竞赛包含 23 个未剥离符号、以 C、C++、Go、Rust 与 Swift 编写的挑战二进制。150 余名参与者提交了 35,000 多份代码,其中 300 多份达到完美反编译;除一个挑战外,其余均被完美反编译。作者分析记录下的编辑历史,以描述人类的反编译过程。
研究范围与作者 研究范围与局限 参与者是自愿参加 2020 年单次竞赛的选手,多数以单人队伍参赛(队伍人数不限),赛后问卷仅有 12% 的注册者填写。挑战为组织者编写的 23 个小型竞赛二进制,未剥离符号但不含调试信息,且 Decomperson 假定已知原始工具链与编译选项。完美反编译要求与编译器输出一致;作者指出,这并非传统的逆向工程任务,无法反映筛查大型二进制等技能,还可能包含与编译器特性“较劲”所花的时间。网页编辑器使选手离开了惯用工具,可能影响计时。选手可以粘贴自动反编译器的输出;约 20% 的 C 函数尝试与工具输出相似,主要来自 Hex-Rays、Ghidra 或 Binary Ninja。该研究观察的是人类,并未评估自动反编译器或智能体。
作者与引文 Decomperson: How Humans Decompile and What We Can Learn From It
Kevin Burk; Fabio Pagani; Christopher Kruegel; Giovanni Vigna
BibTeX ↓
5 个来源 · 复核于 2026-10-27 →
提出 Transformer 模型 DIRTY,根据反编译代码和布局信息推荐变量名与类型,并提供用于训练和评估的 DIRT 语料。
研究范围与作者 研究范围与局限 原始流程围绕 C 程序和 Hex-Rays 输出构建。预测名称与类型是模型推断,不保证与原始符号一致。正式论文发表于 2022 年,arXiv 预印本首次提交于 2021 年。
作者与引文 Augmenting Decompiler Output with Learned Variable Names and Types
Qibin Chen; Jeremy Lacomis; Edward J. Schwartz; Claire Le Goues; Graham Neubig; Bogdan Vasilescu
BibTeX ↓
5 个来源 · 复核于 2026-10-16 →
jTrans 使用 BERT 风格的 Transformer 为二进制函数生成嵌入,以支持相似性检索。其跳转感知表示让直接跳转的操作数词元与跳转目标的位置嵌入共享参数,从而无需单独的图神经网络即可将控制流引入指令序列。模型先以掩码语言建模和跳转目标预测进行预训练,再以余弦三元组目标在同一源码不同优化级别编译出的函数上微调。论文还发布了 BinaryCorp,它由 gcc 与 g++ 编译 Arch Linux 官方仓库及 AUR 中的 C/C++ 软件包构建而成。
研究范围与作者 研究范围与局限 模型仅在单一架构上训练(据论文讨论部分为 x86),未评估跨架构检索。方法只编码直接跳转,间接跳转目标不在研究范围内。反汇编与函数提取依赖 IDA Pro 7.5,上游的边界识别错误未被衡量。BinaryCorp 在 O0–O3 与 Os 之间配对 gcc/g++ 构建结果,并按项目划分训练集与测试集;它不涵盖混淆或其他编译器,只有漏洞检索实验额外加入 clang 变体。作者报告在 BinaryCorp-26M、候选池规模为 10,000 时,平均 Recall@1 为 62.5%,最佳基线为 32.0%;随着候选池增大,准确率仍会下降,作者也指出真实场景的候选池更大。漏洞检索实验使用八个 CVE,每个有十个变体。基线来自 2022 年,其中 Asm2Vec 与 OrderMatters 为重新实现,因此该比较不能确立当前排名。相似性排序只给出候选匹配,并不恢复源码、名称或类型。
作者与引文 jTrans: Jump-Aware Transformer for Binary Code Similarity Detection
Hao Wang; Wenjie Qu; Gilad Katz; Wenyu Zhu; Zeyu Gao; Han Qiu; Jianwei Zhuge; Chao Zhang
BibTeX ↓
9 个来源 · 复核于 2026-10-18 →
ExeBench 是数据集,而非反编译器。它从 GitHub 与 AnghaBench 中提取 C 函数,通过查找真实的头文件与定义或注入合成定义使其可编译,再依据函数签名生成输入/输出样例,并以 C++ 包装器运行每个函数。精确去重后,作者报告共有 4,485,817 个可编译函数和 687,843 个可执行函数,其中 124,612 个带有常量或恒等实现无法通过的丰富 IO;论文还说明每行数据附有 O0、Os 与 Ofast 下的 x86 和 ARM 汇编。SLaDe、LLM4Decompile 等反编译研究随后用它检验反编译函数能否正确重新执行。
研究范围与作者 研究范围与局限 IO 依据函数签名生成,不考虑程序上下文:每个函数 10 对(合成定义使用三个随机种子,共 30 对),数组默认长度为 32;含指针与整数互转的函数生成成功率低于 5%,含 goto、标签及复杂控制流的函数成功率也较低,因此可执行函数整体比可编译函数更简单。合成 IO 基于注入的替代定义,而非函数的真实依赖生成;带有真实定义且具备丰富 IO 的函数仅有 4,464 个。有限的 IO 对只检验采样输入上的行为,并不证明语义等价;去重也只删除分词后完全相同的函数。运行带真实依赖的函数意味着执行不受信任的代码,作者使用了权限受限的容器。论文所用的 v1.00 原始数据仅可申请获取,公开的 v1.01 版本调整了数据划分(例如真实测试函数为 2,134 个,而非 2,232 个)。每个函数保留其来源仓库的许可证,ExeBench 新增内容采用 MIT 许可。
作者与引文 ExeBench: an ML-scale dataset of executable C functions
Jordi Armengol-Estapé; Jackson Woodruff; Alexander Brauckmann; José Wesley de Souza Magalhães; Michael F. P. O'Boyle
BibTeX ↓
8 个来源 · 复核于 2026-10-18 →
Elipmoc 将以太坊虚拟机字节码反编译为结构化的三地址中间表示,服务于安全分析与逆向工程。它由基于 Datalog 的 Gigahorse 反编译器演进而来,新增事务上下文敏感性、结合路径合并的路径敏感函数参数与返回值推断,以及完全上下文敏感的私有函数重建。作者在 2021 年 4 月至 9 月间首次部署于主网的 5,000 个唯一合约的均匀随机样本上,报告 99.5% 的合约操作数被完全解析(Gigahorse 为 62.8%),识别出的唯一外部调用签名比 Etherscan 的 Panoramix 多 67%,且反编译速度快 5 倍以上。
研究范围与作者 研究范围与局限 仅面向 EVM 字节码。评测指标包括操作数解析、结构化控制流、函数与跳转目标精度、外部调用与事件覆盖率、超时及速度,对比对象为 2022 年的 Gigahorse 产物与 Panoramix;这些指标不衡量与原始 Solidity 源码的等价性或源码恢复,输出也是三地址中间表示而非可重新编译的代码。实验使用 2021 年五个月部署窗口内的一个 5,000 合约样本、每个合约 120 秒的时限以及 Souffle 2.0.2。未与 JEB、Trustlook SECaaS 和 EtherSolve 比较,EtherVM、Porosity 与 Vandal 则因较弱或已停止维护而被排除。基于 Elipmoc 的漏洞发现被描述为端到端影响,并非系统性评测。
作者与引文 Elipmoc: Advanced Decompilation of Ethereum Smart Contracts
Neville Grech; Sifis Lagouvardos; Ilias Tsatiris; Yannis Smaragdakis
BibTeX ↓
5 个来源 · 复核于 2026-10-27 →
检验 OpenAI 的 Codex 模型 code-davinci-001 能否在零样本问答式提示中回答有关 C 代码的逆向工程问题。程序来自作者编写的模板,涵盖网络安全代码片段以及 PID 控制器、滤波器等工业控制算法,另有五个来自 vx-underground 的单文件 Linux 恶意软件样本。每个程序以原始或名称随机化的源码,或以 gcc -O1 构建(带调试信息、不带调试信息或剥离符号)经 Ghidra 反编译的形式呈现。在探索性的开放式提问之后,作者针对程序用途、能力与关键变量自动生成判断题和简答题,并依据答案标准评分;Codex 在 136,260 个问题中答对 72,754 个。
研究范围与作者 研究范围与局限 全部结果均来自单一模型 code-davinci-001,OpenAI 已于 2023-03-23 停用该模型,因此无法针对原模型重跑实验,结果也不代表当前的大语言模型。准确率依据自动生成的判断题与简答题测验衡量,判断题以正反两种表述成对提出以揭示回答偏向,并非真实分析任务;总体 53.4% 的正确率使作者得出大语言模型尚不能胜任零样本逆向工程的结论。程序均为可放入模型约 4,000 词元窗口的小型单文件 C 代码,且只以 -O1 编译;真实恶意软件类别仅有五个样本。答案标准结合了作者标注与 capa 工具的能力匹配结果。
作者与引文 Pop Quiz! Can a Large Language Model Help With Reverse Engineering?
Hammond Pearce; Benjamin Tan; Prashanth Krishnamurthy; Farshad Khorrami; Ramesh Karri; Brendan Dolan-Gavitt
BibTeX ↓
5 个来源 · 复核于 2026-10-27 →
BTC(Beyond The C)将反编译视为从编译器输出的 x86-64 汇编到源码的纯文本翻译,分别在汇编与源码上训练字节对编码分词器,并使用标准 fairseq Transformer。它借助编译器输出的 CFI 与行号指令配对函数,而非依赖特定语言的解析器、编译器插件或提升器,因此同一流程可针对 Go、Fortran、OCaml 与 C 重新训练。训练集规模从小型 C、Go 与 Fortran 语料的约 10,000 个函数,到基于 Debian 软件包构建的 200 万个 C 函数不等。在大型 C 数据集上训练的最佳模型,在留出函数上的归一化平均编辑距离为 0.46。
研究范围与作者 研究范围与局限 评测在函数层面覆盖四种语言,仅以与原始源码的归一化编辑距离评分;未报告编译、测试或语义等价检查,也未评估完整程序的反编译。作者指出该方法无法保证语义正确,尚不能用于真实代码:即便最佳分数也意味着大约一半的函数词元需要修改。输入是保留标签与 CFI 指令的编译器生成 x86-64 汇编,因此对去符号二进制的反汇编、其他架构以及不输出此类指令的编译器均不在评测范围内。序列长度限制排除了较长函数,小型语料主要来自编程竞赛题和小型工具代码。与 Katz 等人的比较引用的是该工作在更短代码片段上报告的分数,而非在相同数据上重新运行。
作者与引文 Beyond the C: Retargetable Decompilation using Neural Machine Translation
Iman Hosseini; Brendan Dolan-Gavitt
BibTeX ↓
6 个来源 · 复核于 2026-10-18 →
ASTERIA 使用 Tree-LSTM 编码函数的抽象语法树,以比较不同平台上的二进制函数。论文评估了函数对的相似性检测,并将其用于物联网固件漏洞搜索。
研究范围与作者 研究范围与局限 模型使用 1,022,616 对函数训练,并在 95,078 对函数上评估。跨平台范围涉及不同的物联网架构;固件搜索在 5,979 个镜像中识别出 75 个存在漏洞的函数。
作者与引文 Asteria: Deep Learning-based AST-Encoding for Cross-platform Binary Code Similarity Detection
Shouguo Yang; Long Cheng; Yicheng Zeng; Zhe Lang; Hongsong Zhu; Zhiqiang Shi
BibTeX ↓
2 个来源 · 复核于 2026-11-06 →
Trex 从函数微轨迹中学习执行语义,再利用所学知识匹配语义相似的二进制函数。
研究范围与作者 研究范围与局限 评估涵盖 13 个软件项目的 1,472,066 个二进制函数,涉及不同架构、编译器优化和混淆方式。
作者与引文 Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity
Kexin Pei; Zhou Xuan; Junfeng Yang; Suman Jana; Baishakhi Ray
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
Nero 为剥离符号的 x86-64 Linux 可执行文件中的过程预测名称,并不生成反编译代码。它通过静态分析重建调用点(包括导入的 API 名称),并沿控制流路径为参数补充具体值与抽象值。LSTM、Transformer 与图神经网络编码器处理由此得到的增强调用点图,再由解码器以子词序列生成名称。在 GNU 软件包测试集上,作者报告 Nero-GNN 的 F1 为 45.53,改造后的 DIRE 为 35.52,Debin 为 33.66。
研究范围与作者 研究范围与局限 评测使用来自纯 C 语言 GNU 软件包、构建为 x86-64 Linux 可执行文件的 67,246 个过程;在剔除 C++ 可执行文件、测试程序、静态链接软件包及同一软件包的重复版本后,按软件包划分为 60,403/2,034/4,809 个样本。标签取自剥离前的名称,F1 按名称子词计算,因此输出是模型学到的建议,而非恢复出的原始符号。模拟 API 名称混淆(将 .dynstr 节清零)会使 Nero-GNN 的 F1 降至 38.83;论文未处理加壳和更强的混淆。每个过程至少需要一个可静态检测的调用点,内联过程无法命名。数据生成依赖已授权的 IDA Pro(测试版本 6.95)识别过程边界并导出,另需 angr 与 LLVM 10;模型代码使用 TensorFlow 1.13.1。本条不对与当前工具版本的兼容性作任何判断。
作者与引文 Neural reverse engineering of stripped binaries using augmented control flow graphs
Yaniv David; Uri Alon; Eran Yahav
BibTeX ↓
10 个来源 · 复核于 2026-10-18 →
测试 C 反编译器能否保持程序行为。作者的 DecFuzzer 编译由 Csmith 生成的程序,反编译所得可执行文件,在源码中用反编译出的函数替换原函数后重新编译,并比较两个程序的输出;随后通过模输入等价(EMI)变异,从种子程序派生更多测试程序。作者在四种常用反编译器上报告了 1,423 个触发反编译错误的输入,并经人工分析在两个开源反编译器中确认 13 个缺陷。他们认为现代反编译器在功能正确性上取得了切实进展,但类型恢复与优化仍妨碍其输出准确的代码。
研究范围与作者 研究范围与局限 测试使用规模较小的生成程序,而非真实二进制;重新编译失败与行为不一致分开记录。在作者的产物中,测试程序以 GCC 在 -O0 下编译为 32 位 x86 代码,Csmith 被限制为生成单个函数,且不含数组、结构体、联合体、指针或 long long 类型,因此优化代码和更丰富的数据类型不在该配置范围内。四种反编译器(IDA Pro、JEB3、RetDec 及 Radare2 的 r2ghidra 插件)均按 2020 年时的版本测试;错误数量与缺陷针对这些版本,而非当前版本。IDA Pro 与 JEB3 属商业软件,未包含在产物中,产物只配置了 RetDec 与 r2ghidra。
作者与引文 How far we have come: testing decompilation correctness of C decompilers
Zhibo Liu; Shuai Wang
BibTeX ↓
6 个来源 · 复核于 2026-10-19 →
E9Patch 对 x86-64 二进制进行静态重写:插入跳转到跳板代码的指令,而不移动其他任何指令,从而保留原有跳转目标集合,无需控制流恢复、符号化或调试信息。当五字节跳转放不下时,它通过指令双关、填充以及后继或邻近指令驱逐,使跳转与已有字节重叠,或把邻近指令移入各自的跳板;物理页分组则降低分散跳板带来的内存与文件体积开销。指令位置由独立的前端提供,评测中使用的是基础线性反汇编器。作者评测了 SPEC2006、Ubuntu 16.04 系统二进制以及超过 100 MB 的 Chrome 与 Firefox,并演示了二进制修复和基于低胖指针的堆写加固。
研究范围与作者 研究范围与局限 这是静态二进制重写与插桩,而非反编译或源码恢复。它依赖前端提供正确的指令位置与长度,假定被修补的代码不会被当作数据读取或自修改,并假定输入本身未使用重叠指令。各项策略都可能失败:约 1,050 万个修补位置中有 1,098 个未能修补;仅用基线方法时,跳转指令覆盖率为 72.79%,堆写指令为 81.63%;非 PIE 二进制比 PIE 更难处理。由于 Chrome 的代码段混有数据,需从 ChromeMain 之后开始反汇编;Firefox 的代码则在 libxul.so 中修补。报告的开销(例如对堆写指令插桩后,在 Dromaeo DOM 基准上 Chrome 约 113%、Firefox 约 46%)是用 PLDI 原型测得的,SPEC2006 以 GCC 非 PIE 模式编译;这些数据不代表当前版本。
作者与引文 Binary Rewriting without Control Flow Recovery
Gregory J. Duck; Xiang Gao; Abhik Roychoudhury
BibTeX ↓
6 个来源 · 复核于 2026-10-19 →
RetroWrite 通过生成可重汇编的汇编代码,对 64 位位置无关的 Linux 二进制进行静态改写,从而像在编译时一样插入插桩代码。它不依赖启发式规则,而是依据二进制自身的元数据进行符号化:控制流操作数、位置无关代码必须使用的 PC 相对寻址以及数据重定位均被转换为汇编标签,从而区分引用与标量。作者在此基础上实现了 AFL 覆盖率插桩和仅针对二进制的 AddressSanitizer。他们报告其模糊测试吞吐量与编译器插桩相当,比 AFL 的 QEMU 模式快 4.5 倍,并在 LAVA-M 上发现更多缺陷;在 SPEC CPU2006 上,二进制 ASan 比 Valgrind memcheck 快 3 倍,并在作者的评测中多检测出 80% 的缺陷,其检测覆盖率测试采用 Juliet 内存破坏用例。
研究范围与作者 研究范围与局限 该方法依赖位置无关代码;论文的实现面向 Linux x86-64,并借助符号表确定函数起点与大小,因此去除符号的二进制需要由其他工具提供函数边界。由于未对 DWARF 栈展开信息进行符号化,它无法安全改写含异常处理的 C++ 二进制,也不处理混淆或对抗性二进制。二进制 ASan 对栈只按栈帧粒度插桩,也不在全局变量周围添加红区,因此会遗漏部分编译器 ASan 能发现的溢出,且仍慢于编译器 ASan。这些结果基于 2019—2020 年的工具版本和作者的基准。仓库中后来加入的 aarch64 改写器在另一篇学位论文中描述,采用不同的算法,论文中的 x86-64 结果不适用于它。
作者与引文 RetroWrite: Statically Instrumenting COTS Binaries for Fuzzing and Sanitization
Sushant Dinesh; Nathan Burow; Dongyan Xu; Mathias Payer
BibTeX ↓
7 个来源 · 复核于 2026-10-19 →
BinRec 依据动态执行轨迹而非静态反汇编,将可执行文件提升为 LLVM 中间表示,再将其降级为恢复出的二进制,从而可用编译器优化遍对其进行优化、加固或其他变换。追踪阶段在 S²E 中运行二进制,由 S²E 经 QEMU 将执行到的代码翻译为 LLVM 中间表示;BinRec 去除仿真插桩,将多个输入的轨迹合并为一个程序,并加入寄存器去别名、将仿真状态提升为局部变量等优化。恢复出的二进制若进入未被追踪的路径,可配置的处理程序会停止执行、回退到原始代码,或增量提升新路径。作者报告恢复了全部 SPEC CINT2006 基准程序(包括 C++ 程序),并将其用于重新优化、控制流完整性、AddressSanitizer 与 SafeStack 加固,以及对虚拟化混淆代码的部分去混淆。
研究范围与作者 研究范围与局限 原型只支持单线程的 32 位 x86 Linux ELF 二进制,也不支持自修改代码。恢复出的二进制只支持提升时观察到的控制流路径,因此在未被追踪的输入上的行为取决于所选的缺失处理程序及输入覆盖率。经由 S²E 的提升速度较慢,浮点指令在提升后的代码中以仿真方式执行;在 SPEC 基准上,恢复出的二进制运行时间的几何平均值为未优化输入的 0.98 倍、已优化输入的 1.29 倍。BinRec 不建立栈槽与变量之间的映射。去混淆案例使用的是由作者自己的虚拟化器混淆的两个小程序,而非商业混淆器。与 McSema 和 rev.ng 的比较反映的是 2020 年的版本。
作者与引文 BinRec: Dynamic Binary Lifting and Recompilation
Anil Altinay; Joseph Nash; Taddeus Kroes; Prabhu Rajasekaran; Dixin Zhou; Adrian Dabrowski; David Gens; Yeoul Na; Stijn Volckaert; Cristiano Giuffrida; Herbert Bos; Michael Franz
BibTeX ↓
6 个来源 · 复核于 2026-10-19 →
论文构建开放数据集和工具,用于识别二进制文件及目标代码的 CPU 架构和字节序,并使用可执行文件的代码段评估分类器,报告准确率超过 98%。
研究范围与作者 研究范围与局限 分类器结果基于可执行二进制文件的代码节。
作者与引文 Towards usable automated detection of CPU architecture and endianness for arbitrary binary files and object code sequences
Sami Kairajärvi; Andrei Costin; Timo Hämäläinen
BibTeX ↓
2 个来源 · 复核于 2026-11-06 →
Egalito 对去除符号的 x86-64 与 ARM64 二进制进行静态重编译,借助位置无关的可执行文件和库所携带的元数据,恢复完整的反汇编,使每一处代码与数据交叉引用都成为显式链接。其与布局无关的中间表示 EIR 贴近机器码,因此重新生成的输出可预测,同时提供更高层的视图用于分析;对于没有元数据的跳转表,则借助数据流分析推断。由于不受原始布局约束,工具可以自由移动或改写代码;作者构建了九种工具,包括由 Egalito 变换自身的持续代码随机化、retpoline 防御以及 Intel CET 的软件模拟。作者报告,在来自 172 个 Debian 软件包的 867 个可执行文件与库中,有 866 个的跳转表与编译器给出的真实结果一致;变换后的 149 个软件包中有 90 个通过全部测试;在 SPEC CPU 2006 上性能提升 1.7%。
研究范围与作者 研究范围与局限 Egalito 依赖位置无关代码提供足够的元数据;除非像作者对 Fuchsia 内核的实验那样提供完整重定位信息,非位置无关的输入不在该方法范围内。跳转表恢复依靠数据流分析和相邻性启发式,因此不能保证反汇编完整;Debian 研究中唯一的失败案例是深度嵌套的跳转表。作者列出的不支持情形包括混淆代码、将数据嵌入代码符号的内联汇编、C++ 异常、符号版本控制,以及 Go 或 V8 二进制。部分软件包测试失败即归因于这些特性。论文发表时 RISC-V 支持尚未完成。columbia/egalito 的主分支自 2020 年 6 月以来没有新提交,因此不代表项目仍在维护。
作者与引文 Egalito: Layout-Agnostic Binary Recompilation
David Williams-King; Hidenori Kobayashi; Kent Williams-King; Graham Patterson; Frank Spano; Yu Jian Wu; Junfeng Yang; Vasileios P. Kemerlis
BibTeX ↓
5 个来源 · 复核于 2026-10-19 →
结合反编译输出中的词法与结构信息预测有意义的变量名,并使用编译 C 项目构建训练和评估语料。
研究范围与作者 研究范围与局限 该工作研究学习式标识符命名,并非完整源码重建或自主智能体。报告结果针对 x86-64 C 代码语料,并依赖反编译器输出。原作者仓库已标记弃用,并指向后续项目。
作者与引文 DIRE: A Neural Approach to Decompiled Identifier Naming
Jeremy Lacomis; Pengcheng Yin; Edward J. Schwartz; Miltiadis Allamanis; Claire Le Goues; Graham Neubig; Bogdan Vasilescu
BibTeX ↓
7 个来源 · 复核于 2026-10-17 →
Manticore 使用动态符号执行分析二进制程序和以太坊智能合约。论文介绍其架构,并展示曾用于商业客户项目的漏洞发现和代码正确性验证能力。
研究范围与作者 研究范围与局限 论文涵盖框架架构、可定制的 API,以及针对二进制程序和以太坊智能合约的能力展示。
作者与引文 Manticore: A User-Friendly Symbolic Execution Framework for Binaries and Smart Contracts
Mark Mossberg; Felipe Manzano; Eric Hennenfent; Alex Groce; Gustavo Grieco; Josselin Feist; Trent Brunson; Artem Dinaburg
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
2019 Proceedings of the 17th Annual International Conference on Mobile Systems, Applications, and Services 会议论文
论文逆向分析博通蓝牙控制器,并提出用于修改其固件的 InternalBlue 框架。作者通过漏洞测试、漏洞修复和新增安全功能展示并评估该框架。
研究范围与作者 研究范围与局限 研究涵盖用于智能手机、可穿戴设备和物联网设备的多款博通蓝牙芯片,并在其控制器固件和蓝牙协议栈上开展实验。
作者与引文 InternalBlue - Bluetooth Binary Patching and Experimentation Framework
Dennis Mantz; Jiska Classen; Matthias Schulz; Matthias Hollick
BibTeX ↓
2 个来源 · 复核于 2026-11-06 →
论文利用编译器训练基于神经机器翻译的反编译器,并评估将 LLVM IR 和 x86 汇编转换为 C 代码的效果;两组基准的成功率分别超过 97% 和 88%。
研究范围与作者 研究范围与局限 评估范围是在论文使用的基准上,将 LLVM IR 和 x86 汇编转换为 C 代码。
作者与引文 Towards Neural Decompilation
Omer Katz; Yuval Olshaker; Yoav Goldberg; Eran Yahav
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
ICSREF 自动逆向分析由 CODESYS 编译的可编程逻辑控制器二进制文件。研究使用收集和自行开发的 PLC 二进制文件进行评估,并将其用于生成针对化工过程测试平台的攻击。
研究范围与作者 研究范围与局限 评估范围包括来自公共代码仓库和自行开发的 CODESYS 编译 PLC 二进制文件,以及由商用智能手机协调、针对化工过程测试平台的攻击。
作者与引文 ICSREF: A Framework for Automated Reverse Engineering of Industrial Control Systems Binaries
Anastasis Keliris; Michail Maniatakos
BibTeX ↓
2 个来源 · 复核于 2026-11-06 →
Coda 分两个阶段将短函数的汇编反编译为 C。首先由区分指令类型的 N 叉 Tree-LSTM 编码器与带注意力输入的 AST 解码器生成代码草图;随后由多个神经错误预测器的集成提出词元修正,只有当候选代码重新编译后与输入汇编的编辑距离不增加时,才保留该修正。在合成基准上,作者报告修正后的平均程序准确率为 82%,而带注意力的序列到序列基线为 12%。
研究范围与作者 研究范围与局限 训练与测试程序均为随机生成,涵盖 Karel 指令、math.h 调用及算术或逻辑表达式,分为短、长两种(平均长度 15 与 30),每项任务 50,000 对,并在不开启优化的条件下编译:主要 MIPS 结果使用 clang -O0,x86-64 附录使用 gcc -O0,且只报告草图词元准确率,平均约低 6%。真实场景检查仅包括小型 PyTorch C++ API 模型构建程序和 Hacker’s Delight 无循环程序。程序准确率要求与真实源码词元完全一致,论文正是在该指标下报告常规反编译器为 0%。错误修正假定已知编译器配置,程序变长时词元准确率下降。这些结果既不能说明优化代码、整程序或二进制等价的反编译能力,论文也未给出作者实现。
作者与引文 Coda: An End-to-End Neural Program Decompiler
Cheng Fu; Huili Chen; Haolan Liu; Xinyun Chen; Yuandong Tian; Farinaz Koushanfar; Jishen Zhao
BibTeX ↓
5 个来源 · 复核于 2026-10-18 →
论文学习指令嵌入,以捕捉架构内部及跨架构的指令语义关系,并将其用于基于语义的基本块比较;结果优于基于代码统计的方法。
研究范围与作者 研究范围与局限 在反汇编的二进制代码上,评估跨架构的基本块语义比较。
作者与引文 A Cross-Architecture Instruction Embedding Model for Natural Language Processing-Inspired Binary Code Analysis
Kimberly Redmond; Lannan Luo; Qiang Zeng
BibTeX ↓
1 个来源 · 复核于 2026-11-06 →
Debin 为 x86、x64 与 ARM 上去符号的 ELF 二进制预测调试信息。它先将代码提升为 BAP-IR,用极端随机树分类器判断哪些寄存器和内存偏移对应源码级变量;再借助 Nice2Predict 求解条件随机场,联合预测变量与函数的名称和类型,并将结果以 DWARF 节写回二进制。作者在每种架构 300 个留出二进制上报告,x64 名称与类型预测的精确率为 68.8%、召回率为 68.3%。
研究范围与作者 研究范围与局限 数据集为每种架构 3,000 个未去符号的可执行文件与共享库,来自 830 个 Linux 调试符号软件包,源码为 C 语言并按各包默认设置编译,按 2,700/300 划分训练与测试。准确率评估假定函数边界已知;对于完全去符号的输入,由 BAP 的 ByteWeight 推断函数边界,论文引用其准确率约为 93%。Debin 预测 17 种类型,struct 与 union 的内部内容、行号以及 PE 等其他格式不在评测范围内。只有与原始调试信息完全相同的预测才计为正确。基于编译器生成的良性代码学习的模型,在混淆二进制、手写汇编或恶意软件上可能准确率较低。针对 35 个恶意样本的研究是对反编译输出的人工检查,由于样本缺少调试信息真实标签,未报告准确率。
作者与引文 Debin: Predicting Debug Information in Stripped Binaries
Jingxuan He; Pesho Ivanov; Petar Tsankov; Veselin Raychev; Martin Vechev
BibTeX ↓
8 个来源 · 复核于 2026-10-18 →
rev.ng 借助 QEMU 的微型代码生成器(TCG)将二进制提升为 LLVM 中间表示,因此同一前端可覆盖 QEMU 支持的全部架构,输出的是可编译的中间表示。作者在此基础上构建与架构无关的分析,在没有符号或调试信息的情况下恢复程序的控制流图与函数边界。一种值域分析(OSRA)用于限定 switch 跳转表等间接跳转的目标,其他分析则处理谓词执行指令、noreturn 函数、尾调用以及依赖上下文的控制流。在为 MIPS、ARM 与 x86-64 构建、分别使用 GCC 与 clang 以 -O2、-O3 和 -Os 编译的 coreutils 上,其函数边界恢复的准确度接近 IDA Pro,并优于 BAP/ByteWeight 与 angr。
研究范围与作者 研究范围与局限 评测衡量的是函数边界,而非直接衡量控制流图:作者无法从 GCC 或 LLVM 获取控制流图的真实标签,因此以函数边界准确度(相对 ELF 函数符号的 Jaccard 指数)作为控制流图质量的下界。评测覆盖为 Linux 构建、静态链接并去除调试信息的 105 个 coreutils 程序,只涉及 QEMU 所支持架构中的三种;其他架构及动态链接二进制未经评测。原型会遗漏 x86-64 上部分嵌套 switch 的跳转表,以及 MIPS 上被溢出到栈中的跳转表地址;在 ARM 与 MIPS 上比其他工具占用更多内存;也不会报告 IDA Pro 凭借函数序言启发式找到的死代码,作者将此视为设计取舍。基线为 IDA Pro 6.6、BAP 0.9.9 以及 2016 年 11 月时的 angr。论文本身不涉及反编译为 C。
作者与引文 rev.ng: A Unified Binary Analysis Framework to Recover CFGs and Function Boundaries
Alessandro Di Federico; Mathias Payer; Giovanni Agosta
BibTeX ↓
5 个来源 · 复核于 2026-10-19 →
Ramblr 生成可重汇编的反汇编结果,即从去除符号的二进制中恢复出、可以修改并用现成汇编器重新汇编的汇编代码。它以 angr 的控制流图恢复为基础,对数据区内容进行分类,再判断哪些立即数和数据值是对代码或数据的引用、必须转换为符号。基址指针重归属用于处理经编译器优化后指向目标对象之外的引用;健全性检查则使 Ramblr 能够拒绝重汇编无法安全处理的二进制,例如对指针进行加密的程序。作者在为 x86 与 x86-64 编译的 106 个 GNU Coreutils 程序,以及 143 个 DARPA 网络超级挑战赛(CGC)二进制上,按六种优化级别进行评测。他们报告,Uroboros 会破坏 22.64% 的 -O0 及 56.61% 的 -O1 32 位 Coreutils 二进制,而 Ramblr 一个也未破坏;在 CGC 二进制上,Ramblr 在每种优化级别下的重汇编成功率均超过 98%。
研究范围与作者 研究范围与局限 原型适用于由 GCC 或 Clang 生成的 x86 与 x86-64 ELF 二进制,这类二进制的代码区不含内联数据;MSVC 等编译器会把跳转表放在代码中,处理其生成的二进制仍需进一步工作。作者强调静态内容分类在一般情况下不可行:Ramblr 是一种经验性方法,例如当二进制被链接到特定基址、使其地址与普通常量冲突时,很可能失败。与 Uroboros 的比较只覆盖 32 位二进制,在 Coreutils 上也只比较 -O0 与 -O1,因为 Uroboros 无法处理 64 位输入,且在高于 -O1 时的失败率已无比较意义。正确性依据相对链接器真实信息的符号化结果以及各程序的测试用例衡量,不能证明完全等价。这些结果基于 2017 年时的 angr 及所评测的工具链。
作者与引文 Ramblr: Making Reassembly Great Again
Ruoyu Wang; Yan Shoshitaishvili; Antonio Bianchi; Aravind Machiry; John Grosen; Paul Grosen; Christopher Kruegel; Giovanni Vigna
BibTeX ↓
4 个来源 · 复核于 2026-10-19 →
DREAM 是一种反编译器,其控制流结构化方法无需匹配预定义的区域模式,即可从恢复出的控制流图中还原循环、条件语句与 switch 语句。对于无环区域,它计算每个节点的可达条件,再将这些条件细化为 if-then-else 与 switch 结构;有环区域被结构化为循环,并推断循环类型及继续条件。语义保持变换先将具有多个入口或多个后继的有环区域改写为单入口、单后继区域;当重复测试的条件中变量可能被修改时,引入布尔变量以保持语义等价。作者在 GNU coreutils 上报告其输出不含 goto 语句,而 Hex-Rays 与 Phoenix 各产生数千个;在一对一比较中,DREAM 有 72.7% 的函数比 Hex-Rays 更紧凑,与 Phoenix 相比该比例为 98.8%。
研究范围与作者 研究范围与局限 正确性在源码级控制流图上评估:作者使用 joern 从经过预处理的 coreutils 8.22 源码中提取控制流图,对 joern 成功解析的 1,530 个函数重新结构化(1,738 个函数中有 208 个解析失败),重新编译后通过 coreutils 测试。该实验检验的是结构化算法,而不是对二进制的端到端反编译,也不涉及变量或类型恢复。结构化程度与紧凑度在 Phoenix 评测所用的 coreutils 8.17 二进制上测量,只统计三种工具都能反编译的函数,并以代码行数衡量紧凑度。Phoenix 当时尚未发布,其输出由其作者提供;2014 年的 Hex-Rays v2.0.0.140605 基线早已过时。恶意软件案例分析分别覆盖 ZeusP2P、SpyEye 与 Cridex 各一个样本,且只与 Hex-Rays 比较。作者也指出,更紧凑的代码是否总是更易理解仍有待研究。论文没有链接实现,这些结果也不代表当前反编译器的表现。
作者与引文 No More Gotos: Decompilation Using Pattern-Independent Control-Flow Structuring and Semantics-Preserving Transformations
Khaled Yakdan; Sebastian Eschweiler; Elmar Gerhards-Padilla; Matthew Smith
BibTeX ↓
3 个来源 · 复核于 2026-10-19 →