article · 1997
Krakatoa: Decompilation in Java (Does Bytecode Reveal Source?)
Todd A. Proebsting, Scott A. Watterson
Cited by 0Abstract and details only
Abstract
This paper presents our technique for automatically decompiling Java bytecode into Java source. Our technique reconstructs source-level expressions from bytecode, and reconstructs readable, high-level control statements from primitive goto- like branches. Fewer than a dozen simple coderewriting rules reconstruct the high-level statements. 1 Introduction Decompilation transforms a low-level language into a high-level language. The Java Virtual Machine (JVM) specifies a low-level bytecode language for a stack-based machine [LY97]. This language defines 203 operators, with most of the control flow specified by simple explicit transfers and labels. Compiling a Java class yields a class file that contains type information and bytecode. The JVM requires a significant amount of type information from the class files for object linking. Furthermore, the bytecode must be verifiably well-behaved in order to ensure safe execution. Decompilation systems can exploit this type information and well...
Cite this paper
Proebsting, T. A., & Watterson, S. A. (1997). Krakatoa: Decompilation in Java (Does Bytecode Reveal Source?).
Proebsting, Todd A., and Scott A. Watterson. “Krakatoa: Decompilation in Java (Does Bytecode Reveal Source?).” 1997.
Proebsting, Todd A., and Scott A. Watterson. 1997. “Krakatoa: Decompilation in Java (Does Bytecode Reveal Source?).”
Proebsting, T.A. and Watterson, S.A. (1997) ‘Krakatoa: Decompilation in Java (Does Bytecode Reveal Source?)’.
@article{proebsting1997krakatoa,
title = {{Krakatoa: Decompilation in Java (Does Bytecode Reveal Source?)}},
author = {Proebsting, Todd A. and Watterson, Scott A.},
year = {1997}
}Made from the index record. Check names, capitalisation and page numbers against the paper. Need another style? AI for Research has over 10,000.