Page 24 - 《软件学报》2026年第6期
P. 24
李玉璋 等: BinDec: 面向 RISC-V 的 LLM 与符号执行协同反编译方法 2343
的工程可用性 (例如可被项目直接集成), 而非纯粹的语义正确性. 此外, 单元测试正确率依赖于数据集中测试用例
的功能覆盖完备性, 尤其是 ExeBench 所构建的测试集只关注输入输出的匹配情况. 为验证单元测试集的可靠性,
我们在审查评估 ExeBench 数据集中单元测试构造方法论的基础上, 在最终实验数据中随机抽取 100 个样本进行
人工复核, 结果未发现大范围的、隐蔽的逻辑不一致问题, 这表明单元测试正确率作为评估指标是有效的. 对于可
读性, 本文选择文本相似度 (BLEU 和 ES) 作为其代理指标, 由于文本相似度主要衡量代码的表面特征, 因此对于
功能语义完全正确但实现风格 (如变量命名、代码格式) 与参考代码不同的反编译结果, 其评分可能不公平地偏
低. 鉴于此, 我们在预实验中对可读性进行了小规模的人工评估, 斯皮尔曼相关性分析表明, 人工评分与文本相似
度 (采用 BLEU 和 ES 的均值) 得分呈显著中等程度正相关 (ρ=0.53, p<0.05), 即将文本相似度作为可读性的代理指
标在本文采用的数据集上是有效的. 总之, 尽管本文采用的评估指标存在其固有的局限性, 但通过前文中详述的验
证措施, 这些指标在实验中能够有效地服务于其主要目的, 即为各种反编译方法的输出提供一个公平、一致且可
复现的排序依据. 因此, 该评估体系能够稳健地支撑本文的比较分析.
外部效度关注于实验结论的泛化能力, 具体包括本文所提方法是否能够推广至其他指令集架构的二进制反编
译任务, 以及是否可适配于其他 LLM 进行代码生成与修复. 首先, BinDec 方法依赖于现有反汇编工具来将 RISC-V
二进制程序转换为汇编指令序列, 再输入后续流程. 与反编译器不同, 反汇编器在不同架构上的技术成熟度较为一
致, 并且根据本文实验测试, LLM 对不同架构汇编代码的理解能力也较为接近. 因此, 我们认为 BinDec 方法可扩
展至其他指令集架构的反编译任务. 其次, 尽管本文选用当前主流模型 DeepSeek-V3 作为实验所用的 LLM, 但现
有许多 LLM 均面向代码任务进行了专门训练, 并具备类似的交互接口与代码生成能力. 因此我们推断, 替换为其
他 LLM 仍可顺利完成 BinDec 工作流中的各项任务. 此外, 由于本文采用了符号执行技术对 LLM 输出结果进行
验证与约束, 因此在不同模型下该方法仍能保持相对较高的可靠性.
6 总 结
反编译是信息安全和软件工程领域中的一项重要技术. 传统反编译器通常难以有效恢复在编译过程中丢失的
高级语义信息, 因此大多仅能作为资深工程人员的辅助工具. 此外, 由于传统方法依赖大量人工定义的专家规则,
其完善过程需要投入显著的开发工作量, 导致对新兴硬件架构 (如 RISC-V) 的支持往往存在滞后. 随着深度学习
技术的发展, 研究者开始尝试将反编译任务建模为代码翻译问题, 并构建相应的反编译模型. 在 LLM 取得突破后,
部分研究开始利用其强大的代码理解与生成能力来辅助反编译. 然而, 由于 LLM 本身存在不确定性与幻觉现象,
其输出结果的可靠性难以保证. 针对上述问题, 本文提出了一种面向 RISC-V 架构二进制代码的反编译框架 BinDec,
该框架将 LLM 技术与程序分析技术深度融合. BinDec 方法在充分利用 LLM 代码生成能力的基础上, 引入符号执
行技术以验证和增强生成结果的可靠性, 从而实现更可信的反编译. 与现有反编译器相比, BinDec 方法所产生的
代码具有更高的可读性与规范性, 有助于降低工程人员的代码分析负担, 甚至可直接将反编译结果用于重编译及
新的软件工程项目.
尽管当前 LLM 在代码相关任务中表现出色, 但其不可解释性与输出不稳定性限制了其在复杂任务中的进一
步应用. 本文研究了如何利用既有程序分析技术提升 LLM 输出的可靠性, 并验证了该策略在支持 RISC-V 等新兴
指令集架构的系统软件开发中的可行性. 未来的研究工作将致力于探索更高效的 LLM 与程序分析协同机制, 以充
分发挥双方优势, 并支持更复杂的反编译及其他软件工程任务.
References
[1] Dinesh S, Burow N, Xu DY, Payer M. RetroWrite: Statically instrumenting COTS binaries for fuzzing and sanitization. In: Proc. of the
2020 IEEE Symp. on Security and Privacy (SP). San Francisco: IEEE, 2020. 1497–1511. [doi: 10.1109/SP40000.2020.00009]
[2] Nagy S, Nguyen-Tuong A, Hiser JD, Davidson JW, Hicks M. Breaking through binaries: Compiler-quality instrumentation for better
binary-only fuzzing. In: Proc. of the 30th USENIX Security Symp. USENIX Association, 2021. 1683–1700.
[3] Lee J, Avgerinos T, Brumley D. TIE: Principled reverse engineering of types in binary programs. In: Proc. of the 18th Network and
Distributed System Security Symp. San Diego: The Internet Society, 2011.

