1. LLM4Decompile および Decompile-Eval の紹介
- 私たちの目標は、初の逆コンパイル専用オープンソース LLM を作成・公開し、再コンパイル可能性と再実行可能性に焦点を当てた初の逆コンパイルベンチマークを構築して、その性能を評価すること。
- AnghaBench で収集した 100 万件の C コードサンプルを GCC を使ってアセンブリコードにコンパイルし、これにより 40 億トークンのアセンブリ-ソース対データセットを構築した。
- このデータセットを用いて、先進的なコード LLM である DeepSeek-Coder モデルをファインチューニングし、HumanEval の問題とテストサンプルに基づく評価ベンチマーク Decompile-Eval を構築した。
- 評価は、逆コンパイルされたコードが正常に再コンパイルできるか、テストケースのすべてのアサーションを通過できるかという 2 つの観点から行われる。
2. 評価結果
メトリクス
- 再コンパイル可能性と再実行可能性は、逆コンパイル過程の有効性を検証する重要な指標である。
- 逆コンパイルされたコードが再コンパイル可能であれば、構文的完全性の強力な証拠となる。
- 構文だけでは元のプログラムと意味的に同一であることは保証されないため、再実行可能性は意味的正確性を評価する重要な尺度である。
- 再コンパイル可能性と再実行可能性は、構文の復元と意味の保持を示しており、これは実用的で堅牢な逆コンパイルに不可欠である。
3. モデルの使用方法
- LLM4Decompile には 13 億から 330 億パラメータのモデルが含まれており、これらのモデルは Hugging Face で利用できる。
- モデル例: llm4decompile-1.3b, llm4decompile-6.7b, llm4decompile-33b, llm4decompile-6.7b-nsp, llm4decompile-6.7b-uo
- NSP モデルはアセンブリコードで訓練されており、平均再実行可能性は約 0.17 である。
- UO モデルは最適化レベル (O0~O3) に関する事前知識なしで訓練されており、平均再実行可能性は約 0.21 である。
- モデル使用例: C コードをバイナリにコンパイルし、バイナリをアセンブリ命令に逆アセンブルし、LLM4Decompile を使ってアセンブリ命令を C に変換する。
4. Decompile-Eval の使用方法
- データは
llm4decompile/decompile-eval/decompile-eval.json に JSON リスト形式で保存されている。
- 単一 GPU・単一プロセスで評価を実行する方法と、TGI(10 倍高速、マルチ GPU およびマルチプロセス対応)を使う方法が提供されている。
5. 進行中
- LLM4Binary: アセンブリコードと C コードでモデルを事前学習するため、より大規模なデータセットを含める予定。
- Decompiler-ALL: より多くの言語・プラットフォーム・設定に対応する計画(例: 複数関数の逆コンパイル)。
6. ライセンス
GN⁺の意見
- LLM4Decompile は、既存のバイナリ逆コンパイル方式と比べて革新的なアプローチを提示しており、とくに大規模言語モデルを活用することで、より正確で効率的な逆コンパイルを可能にしている。
- この技術はソフトウェアセキュリティ分野で非常に有用となる可能性があり、マルウェア解析やレガシーシステムの保守に役立つ可能性がある。
- 逆コンパイルされたコードの再実行可能性が完全ではない点は、この技術にまだ改善の余地があることを示している。実環境での正確性と効率を高めるための追加研究が必要である。
- 類似機能を提供する既存ツールとしては、Ghidra や IDA Pro のような商用・オープンソース逆コンパイラがあるが、LLM4Decompile は機械学習ベースの新しいアプローチを提供している。
- この技術を導入する際には、学習データの質と範囲、モデルの精度、実行速度などを考慮する必要があり、導入によって得られる利点は高い精度と柔軟性だが、大規模モデルの複雑さと計算資源の要求量が欠点となりうる。
1件のコメント
Hacker Newsのコメント
「再実行可能性」の結果についての意見:
デコンパイル結果の信頼性に関する疑問:
LLMのファインチューニングにとって優れたユースケース:
開発者ベースのデコンパイルモジュール学習への関心:
デコンパイラの理想的なユースケースとデータセット生成への関心:
個人で進めているLLMベースのデコンパイラプロジェクトの紹介:
AIベースのアプローチとの比較がないベンチマークへの懸念:
再コンパイル可能性と再実行可能性スコアの大きな差への関心:
LLM以外のデコンパイラとの比較への疑問:
6bモデルが33bモデルより優れた性能を示したことへの興味: