Kuna:LLM 自主生成的反编译器

Kuna: Decompiler Development in the Age of Coding Agents

Kuna:LLM 自主生成的反编译器

我发布了 Kuna,一款在 Air Force Research Lab 和 Metalware 期间开发的实验性反编译器。这个项目几乎完全由 LLM 编写代码,却能在 C 语言控制流结构化测试中媲美行业标杆 IDA Pro。通过让 LLM 自主分析自身与 IDA Pro、Ghidra 及 angr 的差距,Kuna 实现了自动化的性能迭代,甚至复现了 angr 团队耗时数年设计的 20 多项核心功能。但这并非完全自动化的研究,它依然依赖人类对基础指标和逆向工程价值的深刻洞察。Kuna 本质上是基于 Ghidra 的 Rust 移植版,旨在探索仅凭高层科学反馈能走多远,未来仍需在类型推断和变量识别上持续突破。

我强调这一切是为了澄清,这个项目绝不仅仅是垃圾代码,而是一种真正实验性的方法,旨在开发一个能够自动变好的、具有科学趣味的工具。
  1. gopalraja

    没错——基于我自己的经验,我同意你的观点。这个循环之所以能跑通,是因为你有一套评估标准(rubric)可以用来衡量。

    我也遇到过类似的问题,不过不是在反编译器模式下。Agent 在解释某些东西时可能会极具欺骗性(而且我太懒了,没仔细读也没亲自验证)。让我栽跟头的是,一位测试者指出了一些根本不存在的引用。所以我加了一道检查机制:Agent 可以自由提出建议,但未确认的内容默认失败(fail closed),我的评估标准拥有否决权。这和你描述的情况如出一辙。Agent 可以不断打磨优化,但正是评估指标防止了它只是变得“流利却偏离方向”。如果没有这个人在环(human in the loop),自主改进主要靠运气。另一方面,我越来越多地看到新模型的推理能力,如果再用另一个 LLM 进行评估(前提是该 LLM 也有评估标准作为参照),确实能减少虚假内容的产生。

  2. saidnooneever

    这真是令人惊叹的工作,非常感谢。在我看来(正如文中所述),这是一个非常棒的案例,展示了如何利用 AI 驱动的开发和研究来推进我们现有的工具。反编译真的很难,而更好的反编译算法对于许多技术领域来说都是非常有价值的贡献。

  3. fishfasell

    如果能看到 Agent 对函数名和变量名进行语义解读,那就太酷了。它比人类能更快地观察和追踪数据流,所以如果给它一些上下文,也许它就能为这些函数和变量合成出合适的名称。

同日更多故事

2026-07-30