Zion Basque 发布 Kuna,一款几乎完全由 LLM 构建的反编译器

该开源项目利用基准测试失败来引导代码代理采用来自 Ghidra、angr 和 IDA Pro 的技术。

By · Published

Primary source: Noelo Lab

Why it matters

Kuna tests a practical model for agent-built scientific software: experts define metrics and architecture, while coding agents implement and iteratively refine the system.

Illustration of Kuna, Zion Basque's LLM-built decompiler, visualized as deconstructed machine code with exposed circuit traces and inner logic

Zion Leonahenahe Basque 于 7 月 29 日发布了 Kuna,公开了这个实验性反编译器的代码,他表示该反编译器几乎完全由一个大型语言模型编写。

该项目是 Basque 对关于编码代理的一个具体主张的检验:研究人员可以用度量和失败示例来指导它们,然后让代理处理大部分实现工作。在 他的发布文章 中,Basque 写道,一个 LLM“几乎编写了 Kuna 中的每一行代码”。他的贡献位于该代码生成循环之上:选择架构、制定度量、汇编基准数据并决定代理应当解决哪些缺陷。

这种分工反映了 Basque 投身该项目的路径。他在 Arizona State University 完成了题为 "Toward a Science of Software Reverse Engineering" 的博士论文,主张逆向工程需要更清晰的目标和可测量的成功定义。他在博士期间作为 angr 反编译器的核心开发者,并研究度量如何指导反编译器设计。Noelo Lab(Basque 将在 University of Georgia 担任主任)将于 8 月 1 日正式启动。

Kuna 将那套研究议程转化为一个可工作的工具。Basque 在夏季担任 Air Force Research Laboratory 的访问教员研究员和来自 Y Combinator 2023 年夏季批次的旧金山固件安全开发商 Metalware 的研究员期间构建了它。Kuna 仍是 Noelo Lab 的研究项目,而非 Metalware 的产品。

A decompiler designed for its own coding agents

反编译器将机器码转换为人类和软件代理可以检查的更高级别表示。它们的输出支撑着恶意软件分析、漏洞研究以及无法获得源代码程序的相关工作。

Kuna's source code 最初是 National Security Agency 的 Ghidra 反编译器的 Rust 移植版本。Basque 随后围绕 angr 和其他反编译研究中的思想重塑了管道。该 Apache-2.0 项目可从命令行运行、通过 WebAssembly 在浏览器内运行,并作为 Ghidra 图形界面内的反编译核心运行。

它的架构旨在让代理更容易进行后续更改。管道阶段是分离的,重要算法具有自然语言规范,反编译器功能可以在运行时切换。这样,当基准暴露出糟糕输出时,代理的搜索空间更小。它可以定位相关阶段,检查文档化的行为,修改某个功能并再次运行测试。

Basque 表示,该过程让代理能够重新实现先前为 angr 开发的超过 20 项功能。这种历史依赖很重要。Kuna 借鉴了多年以人为主导的研究产生的技术(包括 Basque 本人的工作),并将它们打包到一个为反复由代理修改而设计的代码库中。

项目仓库明确了预期的运行模型。编码代理预计将执行大部分代码分析和创建工作,而人类提供设计判断、数据集、提示词和验收标准。Kuna 的优先级也不同于传统的逆向工程工具:反编译文本的质量和速度优先于图形界面,因为 Basque 预计软件代理将成为反编译器输出的重要消费者。

The benchmark result comes with a controlled denominator

Basque 的主要结果既足够引人注意,也足够局限需要谨慎对待。根据 Basque 的发布文章,在 DecBench 的 C 程序上,Kuna 在控制流结构化方面对 44.4% 的函数产生了完美结果,而 IDA Pro 9.2 的该比例为 45.7%。

控制流结构化决定了如何将低级跳转和分支重构为可读的结构,如循环、条件语句和 switch 语句。它是反编译质量的一个组成部分。Kuna 的结果并不能证明其作为完整逆向工程系统已经与 IDA Pro 并驾齐驱,Basque 也没有这样宣称。他列举了类型、优化、可重新编译性和变量识别等仍需大量工作的领域。

该基准也来自 Basque 自己的研究环境。DecBench 自称是一个实验性、动态的基准,并承认缺陷或过度代表的项目可能影响其结果。截至 2026 年 7 月 30 日,DecBench 列出 了跨 803 个二进制文件的 94,575 个函数和 9 个反编译器,并在三个度量上评分:代码结构(Code Structure)、类型(参数和变量,Types)和字节匹配可重新编译性(Byte-match Recompilability)。能否独立复现实验将决定 Kuna 的结构化结果在该设置之外的稳健性。

尽管如此,这一比较展示了关于代理主导工程的一些有用之处。代理被提供了 Kuna 在何处不如 IDA Pro、Ghidra 或 angr 的具体示例,然后被要求通过试错来改进实现。反馈来自可测量的输出,而不是一个笼统的改进反编译器的指令。

这一循环将艰难的人类工作置于开始阶段。研究人员必须决定质量的含义,构建代表性数据集并识别与逆向工程师需求对应的度量。Basque 的论文和相关研究在代理能够开始进行有用更改之前提供了这些要素。

Basque is keeping the research loop open

Basque 也将 angr 保持在他工作的中心。他将其描述为开发新反编译算法时偏好的环境,而 Kuna 则测试代理如何吸收并改进已确立的技术。这种关系是故意互惠的。今天 Kuna 依赖于 angr 和其他开源研究;Basque 的目标是通过 Kuna 产生的改进最终回馈到那一研究基础中。

Metalware 为这项工作提供了相邻的商业环境。Metalware 在不需要源代码、硬件或测试夹具的情况下分析固件二进制文件,然后返回崩溃、堆栈跟踪、可复现的输入和根本原因分析。更好的自动化反编译可以为正在测试二进制文件的安全代理提供更清晰的表示,尽管 Kuna 与 Metalware 的产品是分开的。

Kuna 的直接价值在于 Basque 使该实验可供检查。代码、规范和测试结构展示了他认为编码代理能承担实现工作的地方,以及领域专家仍然不可或缺的方面。早期的基准结果为这一论点提供了一个可测量的检验点。更艰难的测试还在前方:代理是否能改进反编译器那些不够成熟的部分、外部研究者是否能复现这些提升,以及 Kuna 是否能产出值得上游采纳的技术。

Reader comments

Conversation for this story loads after sign-in.