論文の概要: Demystifying and Assessing Code Understandability in Java Decompilation
- arxiv url: http://arxiv.org/abs/2409.20343v1
- Date: Mon, 30 Sep 2024 14:44:00 GMT
- ステータス: 処理完了
- システム内更新日: 2024-10-02 07:56:35.964452
- Title: Demystifying and Assessing Code Understandability in Java Decompilation
- Title(参考訳): Javaのデコンパイルにおけるコードの理解可能性の最小化と評価
- Authors: Ruixin Qin, Yifan Xiong, Yifei Lu, Minxue Pan,
- Abstract要約: 機械レベルのコードを可読性のあるソースコードに変換するプロセスである逆コンパイルは、リバースエンジニアリングにおいて重要な役割を果たす。
本稿では,Javaの非コンパイルコードの可読性に関する最初の実証的研究を提案する。
- 参考スコア(独自算出の注目度): 3.2671789531342457
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Decompilation, the process of converting machine-level code into readable source code, plays a critical role in reverse engineering. Given that the main purpose of decompilation is to facilitate code comprehension in scenarios where the source code is unavailable, the understandability of decompiled code is of great importance. In this paper, we propose the first empirical study on the understandability of Java decompiled code and obtained the following findings: (1) Understandability of Java decompilation is considered as important as its correctness, and decompilation understandability issues are even more commonly encountered than decompilation failures. (2) A notable percentage of code snippets decompiled by Java decompilers exhibit significantly lower or higher levels of understandability in comparison to their original source code. (3) Unfortunately, Cognitive Complexity demonstrates relatively acceptable precision while low recall in recognizing these code snippets exhibiting diverse understandability during decompilation. (4) Even worse, perplexity demonstrates lower levels of precision and recall in recognizing such code snippets. Inspired by the four findings, we further proposed six code patterns and the first metric for the assessment of decompiled code understandability. This metric was extended from Cognitive Complexity, with six more rules harvested from an exhaustive manual analysis into 1287 pairs of source code snippets and corresponding decompiled code. This metric was also validated using the original and updated dataset, yielding an impressive macro F1-score of 0.88 on the original dataset, and 0.86 on the test set.
- Abstract(参考訳): 機械レベルのコードを可読性のあるソースコードに変換するプロセスである逆コンパイルは、リバースエンジニアリングにおいて重要な役割を果たす。
逆コンパイルの主な目的は、ソースコードが利用できないシナリオにおけるコードの理解を促進することにあるので、逆コンパイルの可視性は非常に重要である。
本稿では,Java の非コンパイルコードの可理解性に関する最初の実証的研究を提案し,(1) Java の非コンパイルの可理解性は,その正しさと同じくらい重要であり,非コンパイルの可理解性問題は,非コンパイルの失敗よりもさらに一般的に発生する。
2) Javaデコンパイラでデコンパイルされたコードスニペットの顕著な割合は、元のソースコードと比較して、理解可能性のレベルが著しく低いか高いかを示す。
(3) 残念ながら、認知複雑度は、逆コンパイル中に様々な理解性を示すコードスニペットを認識する際に、低いリコールをしながら比較的受け入れられる精度を示す。
さらに悪いことに、パープレキシティはそのようなコードスニペットを認識する際の精度とリコールのレベルを低くする。
この4つの知見に触発されて、さらに6つのコードパターンと、非コンパイルコードの可読性を評価するための最初の指標を提案しました。
このメトリクスはCognitive Complexityから拡張され、さらに6つのルールが、徹底的なマニュアル分析から1287のソースコードスニペットとそれに対応する逆コンパイルコードに抽出された。
このメトリクスは、元のデータセットと更新されたデータセットを使って検証され、元のデータセットでは0.88、テストセットでは0.86という印象的なマクロF1スコアを得た。
関連論文リスト
- WaDec: Decompiling WebAssembly Using Large Language Model [5.667013605202579]
WebAssembly(略してWasm)がWeb開発の基礎として登場した。
その利点にもかかわらず、Wasmのバイナリの性質は開発者と研究者に重大な課題をもたらしている。
We introduced a novel approach, WaDec, which is a first use of a fine-tuned LLM to interpret and decompile Wasm binary code。
論文 参考訳(メタデータ) (2024-06-17T09:08:30Z) - Uncovering LLM-Generated Code: A Zero-Shot Synthetic Code Detector via Code Rewriting [78.48355455324688]
そこで本研究では,コードと書き直された変種との類似性に基づいて,ゼロショット合成符号検出器を提案する。
以上の結果から,既存のテキスト用合成コンテンツ検出装置よりも顕著な向上が見られた。
論文 参考訳(メタデータ) (2024-05-25T08:57:28Z) - How Far Have We Gone in Stripped Binary Code Understanding Using Large Language Models [51.527805834378974]
バイナリコード理解におけるLarge Language Models(LLM)の有効性を評価するためのベンチマークを提案する。
評価の結果、既存のLLMはバイナリコードをある程度理解でき、それによってバイナリコード解析の効率が向上することが明らかとなった。
論文 参考訳(メタデータ) (2024-04-15T14:44:08Z) - SparseCoder: Identifier-Aware Sparse Transformer for File-Level Code
Summarization [51.67317895094664]
本稿では,大規模なソースコードプロジェクトの理解と維持を支援するファイルレベルのコード要約について検討する。
長いコードシーケンスを効果的に処理するための識別子対応スパース変換器であるSparseCoderを提案する。
論文 参考訳(メタデータ) (2024-01-26T09:23:27Z) - CodeComplex: A Time-Complexity Dataset for Bilingual Source Codes [6.169110187130671]
CodeComplexは、新しいソースコードデータセットで、各コードが手動でアノテートされ、最悪の場合の複雑さに対応する。
私たちの知る限りでは、CodeComplexは複雑さを予測するのに適した、最も広範なコードデータセットである。
コード理解における最先端のニューラルモデルを利用して,様々なベースラインモデルを用いた実験の結果を示す。
論文 参考訳(メタデータ) (2024-01-16T06:54:44Z) - Binary Code Summarization: Benchmarking ChatGPT/GPT-4 and Other Large
Language Models [37.8941430624661]
本研究では,バイナリコード理解のための大規模言語モデル (LLM) の可能性について検討する。
BinSumは557K以上のバイナリ関数の包括的なベンチマークとデータセットである。
また,従来の完全マッチング手法を超越した意味的類似度尺度を提案する。
論文 参考訳(メタデータ) (2023-12-15T08:32:28Z) - On the Relationship between Code Verifiability and Understandability [2.5728707125824735]
ソフトウェア検証の支持者は、より単純なコードは検証し易いと主張した。
我々は,Javaコードの211スニペット上で,最先端の4つの検証ツールが生成する警告数と,対象者からのコード理解度に関する20の指標を比較した。
論文 参考訳(メタデータ) (2023-10-31T03:54:35Z) - Enhancing Semantic Code Search with Multimodal Contrastive Learning and
Soft Data Augmentation [50.14232079160476]
コード検索のためのマルチモーダルコントラスト学習とソフトデータ拡張を用いた新しい手法を提案する。
我々は,6つのプログラミング言語を用いた大規模データセットにおけるアプローチの有効性を評価するために,広範囲な実験を行った。
論文 参考訳(メタデータ) (2022-04-07T08:49:27Z) - 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) - A Transformer-based Approach for Source Code Summarization [86.08359401867577]
コードトークン間のペア関係をモデル化することにより,要約のためのコード表現を学習する。
アプローチは単純であるにもかかわらず、最先端技術よりもかなりの差があることが示される。
論文 参考訳(メタデータ) (2020-05-01T23:29:36Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。