プログラミング
Kuna: コーディングエージェント時代のデコンパイラ開発
Kuna: Decompiler Development in the Age of Coding Agents (noelo.org)
要約
本記事は、LLM(大規模言語モデル)によってほぼ全てのコードが書かれた実験的なデコンパイラ「Kuna」のリリースについて紹介しています。Kunaは、IDA Proのような業界標準と比較して、Cプログラムの制御フロー構造化において同等の性能を示し、LLMが過去数年で登場した新しい指標に基づいて自律的に改善する能力を示しています。このプロジェクトは、科学的洞察に基づいた自動改善によるツール開発の可能性を探る実験です。
全文翻訳
本日、夏の間、空軍研究所(AFRL)での客員教員研究員およびMetalwareでのリサーチフェローとして働きながら開発してきた実験的なデコンパイラ「Kuna」をリリースします。
しかし、開発してきたと言うとき、このプロジェクトのほぼ全てのコードはLLMによって書かれたことを明確にする必要があります。
それでも、現状では、このデコンパイラはCプログラムにおける制御フロー構造化において、業界標準であるIDA Pro(9.2)に匹敵します。最近のベンチマーク結果では、Kunaは関数の44.4%で完璧な構造化を達成したのに対し、IDAは45.7%でした。
これは主に自律的な洗練によって達成されました。LLMは、過去数年で登場した基本的な指標においてIDA Proよりもパフォーマンスが低い例を学習します。この戦略を使用することで、試行錯誤を通じて別のデコンパイラが難しい問題をどのように解決するかを効果的に学ぶことができます。
この改善プロセスで研究されたデコンパイラはIDA Proだけではありませんでした。この大規模な洗練実験には、Ghidraおよびangrデコンパイラも含まれていました。私は、後者のコア開発者として博士課程の全期間を費やしました。
この学習方法により、LLMはangrの20以上の基本的な機能をKunaに再実装することができました。これは、デコンパイルにおける科学的進歩を通じて、私たちに数年かかった設計でした。
このプロジェクトが単なる代物ではなく、自動的に改善される科学的に興味深いツールを開発するための真に実験的なアプローチであることを明確にするために、これを強調します。
KunaとHex-Raysが人気のあるangrのスイッチ機能をどのように示しているかのスニペット
さて、このアプローチの限界と、この研究が研究コミュニティにどのような影響を与える可能性があるかについても認識しておきたいと思います。
第一に、Kunaは、デコンパイラ研究を前進させてきた科学者やエンジニアの数十年にわたる努力があって初めて可能になりました。Kunaは、実際にはNSAのGhidraのRustポートであり、angrのパイプラインにより近くなるように改変されています。そのため、私はangrデコンパイラをすぐに離れるつもりはありません。
angrデコンパイラは、デコンパイルにおける最先端のアルゴリズムを開発する際に、私が最初に行く場所であり続けています。それは、単にそのように設計されているからです。一方、Kunaは、高レベルの科学的フィードバックのみで何ができるかを見るための実験です。
この時点で、Kunaで手書きで何かを書くことは著しく困難になります。Kunaはangr(およびその他のオープンソース研究)を必要としており、私の希望は、さらに時間が経てば、angrがKunaを必要とするようになることです(実験が成功した場合)。
第二に、Kunaは「自動」洗練を開始するためにも科学的洞察を必要とします。これはおそらく、他のデコンパイラが(私が知る限り)これを行っていない理由を説明しています。この段階に到達するには、新しい基本的な指標を発見し、人間のリバースエンジニアリングの値に合致するものを研究し、意味のあるベンチマークに必要なデータを理解するために長年の洞察を集める必要がありました。
要するに、これも自動研究ではありません。人間主導の研究が必要です。
第三に、そして最後に、このデコンパイラにはまだ大幅な進歩が必要です。構造化はうまくいっていますが、デコンパイルは構造化だけではありません!型、最適化、再コンパイル可能性、変数識別などを改善する必要があります。
結局のところ、これは、Kunaを開発するために使用しているフレームワーク内でそれらすべてを達成することが可能かどうかを確認するための実験です。そして、私(私たち)はあなたの助けを本当に必要としています。
Kunaの内部、プロジェクトの目標、または自動改善の仕組みに興味がある場合は、コードをチェックするか、より技術的なフォローアップ投稿をお待ちください。
いつものように、私のアイデアを洗練し、研究を前進させるのを助けてくれた人々に感謝したいと思います。私の博士課程の指導教員であるFishとYanは、私の研究の最大のインスピレーションの源です。
また、私の研究に影響を与えるのに役立つMetalware、AFRL、および国防総省からの洞察にも感謝しています。
実験の次のチェックポイントで皆さんにお会いしましょう!