論文の概要: Refining Decompiled C Code with Large Language Models
- arxiv url: http://arxiv.org/abs/2310.06530v2
- Date: Tue, 28 Nov 2023 19:09:54 GMT
- ステータス: 処理完了
- システム内更新日: 2023-12-01 00:41:51.367695
- 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のオリジナルの出力は再コンパイルできないことを示した。
我々は,我々のアプローチの限界と将来的な研究の方向性について論じる。
関連論文リスト
- LLM4Decompile: Decompiling Binary Code with Large Language Models [11.302601810557315]
Decompilationは、コンパイルされたコードを可読性のあるソースコードに復元することを目的としている。
大規模言語モデル(LLM)は、プログラムタスクの約束を示し、そのアプリケーションを非コンパイルに動機付ける。
C ソースコードの40億個のトークンと対応するアセンブリコードで事前訓練された 1B から 33B までの,最初のオープンアクセス逆コンパイル LLM をリリースする。
論文 参考訳(メタデータ) (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 [66.37493420911979]
Generalizable Abstraction Learning (ReGAL)は、コードカプセル化によって再利用可能な関数のライブラリを学ぶ方法である。
ReGALによって発見された共有関数ライブラリは、プログラムが様々な領域で容易に予測できることを示している。
CodeLlama-13Bでは、ReGALはグラフィックスで11.5%、日付理解で26.1%、MinecraftベースのテキストゲームであるTextCraftで8.1%という絶対的な精度向上を実現している。
論文 参考訳(メタデータ) (2024-01-29T18:45:30Z) - SparseCoder: Identifier-Aware Sparse Transformer for File-Level Code
Summarization [51.67317895094664]
本稿では,大規模なソースコードプロジェクトの理解と維持を支援するファイルレベルのコード要約について検討する。
長いコードシーケンスを効果的に処理するための識別子対応スパース変換器であるSparseCoderを提案する。
論文 参考訳(メタデータ) (2024-01-26T09:23:27Z) - Revisiting Deep Learning for Variable Type Recovery [3.075963833361584]
DIRTYはトランスフォーマーベースのデコーダアーキテクチャで、変数名と型でデコンパイルされたコードを拡張することができる。
我々は、オープンソースのGhidraデコンパイラによって生成されたデータセット上で、DIRTYモデルを再学習することで、元のDIRTY結果を拡張する。
論文 参考訳(メタデータ) (2023-04-07T22:28:28Z) - Extending Source Code Pre-Trained Language Models to Summarise
Decompiled Binaries [4.0484792045035505]
ソースコードの事前訓練済み言語モデルを拡張して、逆コンパイルされたバイナリ関数を要約する。
このようなモデルの性能に及ぼす入力特性とデータ特性の影響について検討する。
BinT5は最先端のBLEU-4スコアを60.83、58.82、44.21で達成し、ソースを要約し、逆コンパイルし、合成的に削除した。
論文 参考訳(メタデータ) (2023-01-04T16:56:33Z) - 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)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。