The Strengths and Behavioral Quirks of Java Bytecode Decompilers

08/19/2019
by   Nicolas Harrand, et al.
0

During compilation from Java source code to bytecode, some information is irreversibly lost. In other words, compilation and decompilation of Java code is not symmetric. Consequently, the decompilation process, which aims at producing source code from bytecode, must establish some strategies to reconstruct the information that has been lost. Modern Java decompilers tend to use distinct strategies to achieve proper decompilation. In this work, we hypothesize that the diverse ways in which bytecode can be decompiled has a direct impact on the quality of the source code produced by decompilers. We study the effectiveness of eight Java decompilers with respect to three quality indicators: syntactic correctness, syntactic distortion and semantic equivalence modulo inputs. This study relies on a benchmark set of 14 real-world open-source software projects to be decompiled (2041 classes in total). Our results show that no single modern decompiler is able to correctly handle the variety of bytecode structures coming from real-world programs. Even the highest ranking decompiler in this study produces syntactically correct output for 84 78

READ FULL TEXT

page 5

page 9

research
05/21/2020

Java Decompiler Diversity and its Application to Meta-decompilation

During compilation from Java source code to bytecode, some information i...
research
08/01/2020

The test set for the TransCoder system

The TransCoder system translates source code between Java, C++, and Pyth...
research
04/12/2018

The Java Build Framework: Large Scale Compilation

Large repositories of source code for research tend to limit their utili...
research
12/18/2022

JEMMA: An Extensible Java Dataset for ML4Code Applications

Machine Learning for Source Code (ML4Code) is an active research field i...
research
04/07/2021

DJXPerf: Identifying Memory Inefficiencies via Object-centric Profiling for Java

Java is the "go-to" programming language choice for developing scalable ...
research
11/09/2020

Pointing to Subwords for Generating Function Names in Source Code

We tackle the task of automatically generating a function name from sour...
research
06/17/2022

Evaluating the Impact of Source Code Parsers on ML4SE Models

As researchers and practitioners apply Machine Learning to increasingly ...

Please sign up or login with your details

Forgot password? Click here to reset