論文の概要: Refining Decompiled C Code with Large Language Models
- arxiv url: http://arxiv.org/abs/2310.06530v1
- Date: Tue, 10 Oct 2023 11:22:30 GMT
- ステータス: 処理完了
- システム内更新日: 2023-10-23 03:44:32.330426
- Title: Refining Decompiled C Code with Large Language Models
- Title(参考訳): 大規模言語モデルによる非コンパイルCコードの書き換え
- Authors: Wai Kin Wong, Huaijin Wang, Zongjie Li, Zhibo Liu, Shuai Wang, Qiyi
Tang, Sen Nie, Shi Wu
- Abstract要約: Cデコンパイラは、実行可能ファイルをソースコードに変換する。
一度再コンパイルされたC言語のソースコードは、元の実行ファイルと同じ機能を持つ実行ファイルを生成することが期待されている。
- 参考スコア(独自算出の注目度): 15.76430362775126
- License: http://arxiv.org/licenses/nonexclusive-distrib/1.0/
- Abstract: A C decompiler converts an executable into source code. The recovered C
source code, once re-compiled, is expected to produce an executable with the
same functionality as the original executable. With over twenty years of
development, C decompilers have been widely used in production to support
reverse engineering applications. Despite the prosperous development of C
decompilers, it is widely acknowledged that decompiler outputs are mainly used
for human consumption, and are not suitable for automatic recompilation. Often,
a substantial amount of manual effort is required to fix the decompiler outputs
before they can be recompiled and executed properly.
This paper is motived by the recent success of large language models (LLMs)
in comprehending dense corpus of natural language. To alleviate the tedious,
costly and often error-prone manual effort in fixing decompiler outputs, we
investigate the feasibility of using LLMs to augment decompiler outputs, thus
delivering recompilable decompilation. Note that different from previous
efforts that focus on augmenting decompiler outputs with higher readability
(e.g., recovering type/variable names), we focus on augmenting decompiler
outputs with recompilability, meaning to generate code that can be recompiled
into an executable with the same functionality as the original executable.
We conduct a pilot study to characterize the obstacles in recompiling the
outputs of the de facto commercial C decompiler -- IDA-Pro. We then propose a
two-step, hybrid approach to augmenting decompiler outputs with LLMs. We
evaluate our approach on a set of popular C test cases, and show that our
approach can deliver a high recompilation success rate to over 75% with
moderate effort, whereas none of the IDA-Pro's original outputs can be
recompiled. We conclude with a discussion on the limitations of our approach
and promising future research directions.
- Abstract(参考訳): cの逆コンパイラは実行ファイルをソースコードに変換する。
再コンパイルされたcのソースコードは、元の実行ファイルと同じ機能を持つ実行ファイルを生成することが期待されている。
20年以上の開発を経て、cデコンパイラはリバースエンジニアリングアプリケーションをサポートするためにプロダクションで広く使われている。
Cデコンパイラの発達にもかかわらず、デコンパイラの出力は主に人間の消費に使われており、自動再コンパイルには適していないことが広く認識されている。
多くの場合、再コンパイルされ適切に実行される前に逆コンパイラ出力を修正するためにかなりの手作業が必要となる。
本論文は, 自然言語の高密度コーパスの理解において, 大規模言語モデル (LLM) が最近成功したことによる。
逆コンパイラ出力の修正における退屈でコストがかかり、しばしばエラーが発生しやすい手作業を軽減するため、再コンパイル可能な逆コンパイラ出力をLLMで拡張する可能性を検討する。
より高い可読性(例えば、型/変数の名前の復元)でデコンパイラの出力を増やすことに注力する以前の取り組みとは違って、再コンパイル性のあるデコンパイラの出力を増やすことに重点を置いている。
我々は、事実上の商用CデコンパイラであるIDA-Proの出力を再コンパイルする際の障害を特徴づけるパイロット研究を行う。
次に、LLMを用いてデコンパイラ出力を増大させる2段階のハイブリッド手法を提案する。
我々は、人気のあるcテストケースのセットに対するアプローチを評価し、我々のアプローチが中程度の労力で高い再コンパイル成功率を75%以上達成できることを示す一方で、ida-proのオリジナルの出力は再コンパイルできないことを示した。
我々は,我々のアプローチの限界と将来的な研究の方向性について論じる。
関連論文リスト
- Self-Constructed Context Decompilation with Fined-grained Alignment Enhancement [43.2637367483626]
逆コンパイルは、ソースコードが利用できない場合、コンパイルされたコードをハイレベルなプログラミング言語に変換する。
これまでの研究は主に、モデルパラメータのスケールや事前トレーニングのためのトレーニングデータを増やすことで、デコンパイル性能の向上に重点を置いてきた。
これら2つの手法を統合することで、Decompile-Evalベンチマークで約3.90%の再実行可能性向上を実現し、新しい最先端性能52.41%を確立した。
論文 参考訳(メタデータ) (2024-06-25T02:37:53Z) - LLM4Decompile: Decompiling Binary Code with Large Language Models [10.346311290153398]
Decompilationはバイナリコードを高レベルのソースコードに変換することを目的としているが、Ghidraのような従来のツールでは読み書きが難しい場合が多い。
LLM4Decompileは,バイナリコードのデコンパイルを訓練した最初の,かつ最大のオープンソースLLMシリーズ(1.3Bから33B)である。
結果、GPT-4oとGhidraをHumanEvalとExeBenchのベンチマークで100%以上上回った。
論文 参考訳(メタデータ) (2024-03-08T13:10:59Z) - StepCoder: Improve Code Generation with Reinforcement Learning from
Compiler Feedback [58.20547418182074]
2つの主要コンポーネントからなるコード生成の新しいフレームワークであるStepCoderを紹介します。
CCCSは、長いシーケンスのコード生成タスクをCurriculum of Code Completion Subtaskに分割することで、探索課題に対処する。
FGOは、未実行のコードセグメントをマスクすることでのみモデルを最適化し、Fine-Grained Optimizationを提供する。
提案手法は,出力空間を探索し,対応するベンチマークにおいて最先端の手法より優れた性能を発揮する。
論文 参考訳(メタデータ) (2024-02-02T13:14:31Z) - ReGAL: Refactoring Programs to Discover Generalizable Abstractions [59.05769810380928]
Generalizable Abstraction Learning (ReGAL)は、再利用可能な関数のライブラリをコード化して学習する手法である。
ReGALによって発見された共有関数ライブラリは、プログラムが様々な領域で容易に予測できることを示している。
CodeLlama-13Bでは、ReGALはLOGOで11.5%、日付理解で26.1%、TextCraftで8.1%という絶対精度が向上し、3つのドメインのうち2つでGPT-3.5を上回った。
論文 参考訳(メタデータ) (2024-01-29T18:45:30Z) - Revisiting Deep Learning for Variable Type Recovery [3.075963833361584]
DIRTYはトランスフォーマーベースのデコーダアーキテクチャで、変数名と型でデコンパイルされたコードを拡張することができる。
我々は、オープンソースのGhidraデコンパイラによって生成されたデータセット上で、DIRTYモデルを再学習することで、元のDIRTY結果を拡張する。
論文 参考訳(メタデータ) (2023-04-07T22:28:28Z) - Beyond the C: Retargetable Decompilation using Neural Machine
Translation [5.734661402742406]
我々は,新しい言語に容易に再ターゲティング可能なプロトタイプ・デコンパイラを開発した。
トークン化やトレーニングデータ選択などのパラメータが逆コンパイルの品質に与える影響について検討する。
トレーニングデータ、トレーニングされた逆コンパイルモデル、そして将来の言語に依存しない逆コンパイルの研究を促進するためのコードをリリースします。
論文 参考訳(メタデータ) (2022-12-17T20:45:59Z) - ReACC: A Retrieval-Augmented Code Completion Framework [53.49707123661763]
本稿では,語彙のコピーと類似したセマンティクスを持つコード参照の両方を検索により活用する検索拡張コード補完フレームワークを提案する。
我々は,Python および Java プログラミング言語のコード補完タスクにおけるアプローチを評価し,CodeXGLUE ベンチマークで最先端のパフォーマンスを実現する。
論文 参考訳(メタデータ) (2022-03-15T08:25:08Z) - Improving type information inferred by decompilers with supervised
machine learning [0.0]
ソフトウェアリバースエンジニアリングでは、逆コンパイルはバイナリファイルからソースコードを回復するプロセスである。
関数によって返される高レベルな型を推測できる異なる分類モデルを構築する。
私たちのシステムは、79.1%のF1測定で関数戻り型を予測できますが、最良の逆コンパイラは30%のF1測定を得ます。
論文 参考訳(メタデータ) (2021-01-19T11:45:46Z) - Extending C++ for Heterogeneous Quantum-Classical Computing [56.782064931823015]
qcorはC++とコンパイラの実装の言語拡張で、異種量子古典プログラミング、コンパイル、単一ソースコンテキストでの実行を可能にする。
我々の研究は、量子言語で高レベルな量子カーネル(関数)を表現できる、第一種C++コンパイラを提供する。
論文 参考訳(メタデータ) (2020-10-08T12:49:07Z) - PolyDL: Polyhedral Optimizations for Creation of High Performance DL
primitives [55.79741270235602]
本稿では,Deep Learningプリミティブの高性能実装を自動的に生成するコンパイラアルゴリズムを提案する。
我々は多面体モデルを用いた新しいデータ再利用分析アルゴリズムを開発した。
また、このようなハイブリッドコンパイラとライブラリ使用の最小限のアプローチが、最先端のパフォーマンスをもたらすことを示す。
論文 参考訳(メタデータ) (2020-06-02T06:44:09Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。