核心概念
大規模言語モデルとプログラム解析の相乗効果を活用することで、バイナリから変数名を効率的に復元することができる。
要約
本論文は、バイナリ実行ファイルからソースコードの形式を復元するデコンパイルの課題に取り組んでいる。デコンパイルには多くの課題があるが、その中でも変数名の復元は特に重要である。本論文では、大規模言語モデル(LLM)とプログラム解析の相乗効果を活用した新しい手法を提案している。
LLMは豊富な多様なモダリティの知識をエンコードしているが、入力サイズが限られているため、グローバルな文脈を十分に提供できない。そこで本手法では、多数のLLMクエリを分割し、プログラム解析を用いて結果を相関させ伝播させることで、LLMのパフォーマンスを向上させている。
具体的には、以下のような手順を踏む:
LLMに対して、関数ごとに変数名の予測を求める
予測された変数名を関数間で伝播させ、文脈情報を蓄積する
蓄積された文脈情報を活用して、次のLLMクエリを生成する
収束後、最終的な変数名を選択する
実験の結果、ユーザによる主観評価では75%の変数名が適切だと判断された。また、自動評価指標では、従来手法と比べて精度が16.5%、再現率が20.23%向上した。1つの関数の変数名を予測するのに平均8回のLLMクエリを必要とし、実験の総費用は30ドルのみであった。
統計
変数名の予測精度は33.85%
変数名の予測再現率は31.12%
1つの関数の変数名を予測するのに平均8回のLLMクエリを必要とした
実験の総費用は30ドルのみ
引用
"LLMsは通常、Wikipedia、デジタル書籍、GitHub、StackOverflow等の膨大なデータセットを用いて訓練されており、その規模がキーとなっている。"
"既存のLLMはまだ入力サイズの制限を抱えているため、我々は複数のクエリを分割し、プログラム解析を用いて結果を連携させることを提案する。"
"我々の名前伝播アルゴリズムは型推論と似た性質を持ち、ある変数の良い名前を他の変数の名前導出に活用する。"