Decompiling Java using staged encapsulation
The paper presents an approach to program structuring for use in decompiling Java bytecode to Java source. The structuring approach uses three intermediate representations: (1) a list of typed, aggregated statements with an associated exception table, (2) a control flow graph, and (3) a structure en...
Saved in:
Published in | Proceedings Eighth Working Conference on Reverse Engineering pp. 368 - 374 |
---|---|
Main Authors | , |
Format | Conference Proceeding |
Language | English |
Published |
IEEE
2001
|
Subjects | |
Online Access | Get full text |
Cover
Loading…
Summary: | The paper presents an approach to program structuring for use in decompiling Java bytecode to Java source. The structuring approach uses three intermediate representations: (1) a list of typed, aggregated statements with an associated exception table, (2) a control flow graph, and (3) a structure encapsulation tree. The approach works in six distinct stages, with each stage focusing on a specific family of Java constructs, and each stage contributing more detail to the structure encapsulation tree. After completion of all stages the structure encapsulation tree contains enough information to allow a simple extraction of a structured Java program. The approach targets general Java bytecode including bytecode that may be the result of front-ends for languages other than Java, and also bytecode that has been produced by a bytecode optimizer. Thus, the techniques have been designed to work for bytecode that may not exhibit the typical structured patterns of bytecode produced by a standard Java compiler. The structuring techniques have been implemented as part of the Dava decompiler which has been built using the Soot framework. |
---|---|
ISBN: | 0769513034 9780769513034 |
ISSN: | 1095-1350 2375-5369 |
DOI: | 10.1109/WCRE.2001.957845 |