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...

Full description

Saved in:
Bibliographic Details
Published inProceedings Eighth Working Conference on Reverse Engineering pp. 368 - 374
Main Authors Miecznikowski, J., Hendren, L.
Format Conference Proceeding
LanguageEnglish
Published IEEE 2001
Subjects
Online AccessGet full text
ISBN0769513034
9780769513034
ISSN1095-1350
DOI10.1109/WCRE.2001.957845

Cover

Abstract 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.
AbstractList 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.
Author Hendren, L.
Miecznikowski, J.
Author_xml – sequence: 1
  givenname: J.
  surname: Miecznikowski
  fullname: Miecznikowski, J.
  organization: Sch. of Comput. Sci., McGill Univ., Montreal, Que., Canada
– sequence: 2
  givenname: L.
  surname: Hendren
  fullname: Hendren, L.
BookMark eNotj0FLw0AUhBesYFO9i6fcJel72d0ke5TYqqUgiOKxvOy-lJU0Cd1U8N8bqaeZgY9hJhKzru9YiFuEFBHM8rN6W6UZAKZGF6XSFyKCIjcaJUg1E_OJ0QlKDVciCuELIANpYC7uH9n2h8G3vtvHG_qm-BT-bBhpzy7mztIQTi2Nvu-uxWVDbeCbf12Ij_XqvXpOtq9PL9XDNvEIakxKMgSQoyVpNGW5sqzcNANKcoUzzuRgUQE7zOQUWENTY83UGJBY5ywX4u7c65l5Nxz9gY4_u_Mv-Qu6_EKk
ContentType Conference Proceeding
DBID 6IE
6IL
CBEJK
RIE
RIL
DOI 10.1109/WCRE.2001.957845
DatabaseName IEEE Electronic Library (IEL) Conference Proceedings
IEEE Xplore POP ALL
IEEE Xplore All Conference Proceedings
IEEE Electronic Library (IEL)
IEEE Proceedings Order Plans (POP All) 1998-Present
DatabaseTitleList
Database_xml – sequence: 1
  dbid: RIE
  name: IEEE Electronic Library (IEL)
  url: https://proxy.k.utb.cz/login?url=https://ieeexplore.ieee.org/
  sourceTypes: Publisher
DeliveryMethod fulltext_linktorsrc
Discipline Engineering
Computer Science
EndPage 374
ExternalDocumentID 957845
GroupedDBID 23M
29P
6IE
6IF
6IH
6IK
6IL
6IN
AAJGR
AAWTH
ADZIZ
ALMA_UNASSIGNED_HOLDINGS
BEFXN
BFFAM
BGNUA
BKEBE
BPEOZ
CBEJK
CHZPO
IEGSK
IPLJI
M43
OCL
RIE
RIL
RNS
ID FETCH-LOGICAL-i104t-8a9a0061ca395a264ce4d30308ad7d9d960c140ed123d96e50fb1beaf9031b6e3
IEDL.DBID RIE
ISBN 0769513034
9780769513034
ISSN 1095-1350
IngestDate Tue Aug 26 17:33:02 EDT 2025
IsPeerReviewed false
IsScholarly true
Language English
LinkModel DirectLink
MergedId FETCHMERGED-LOGICAL-i104t-8a9a0061ca395a264ce4d30308ad7d9d960c140ed123d96e50fb1beaf9031b6e3
PageCount 7
ParticipantIDs ieee_primary_957845
PublicationCentury 2000
PublicationDate 20010000
PublicationDateYYYYMMDD 2001-01-01
PublicationDate_xml – year: 2001
  text: 20010000
PublicationDecade 2000
PublicationTitle Proceedings Eighth Working Conference on Reverse Engineering
PublicationTitleAbbrev WCRE
PublicationYear 2001
Publisher IEEE
Publisher_xml – name: IEEE
SSID ssj0020390
ssj0000396114
Score 1.5368432
Snippet The paper presents an approach to program structuring for use in decompiling Java bytecode to Java source. The structuring approach uses three intermediate...
SourceID ieee
SourceType Publisher
StartPage 368
SubjectTerms Computer science
Constraint optimization
Data mining
Design optimization
Encapsulation
High level languages
Java
Pattern matching
Tree graphs
Visualization
Title Decompiling Java using staged encapsulation
URI https://ieeexplore.ieee.org/document/957845
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
link http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwjV1NS8NAEF1sT3qp1orf7MHrpgnZTbLn0lIKiojF3srs7qQUoRVNPfjrnc2m9QMPQg6ZQAjZTWbe2515w9gNIMhCKhAIkPgWZk5oCrTCZCZVBZYSrC9wvr3LxlM5malZo7Nd18IgYp18hpE_rffy3dpu_FJZX9PnJVWLtfIiC6Vau-WUONVZ4iNNw7XIDkIEWokkVXFg7AQnyGXLRnhnZ2-3L2Pdfxo8DD1rTKLwsB9NV-qYM-qEYu63WqrQp5o8R5vKRPbjl5DjP1_nkPW-ivv4_S5sHbE9XHVZZ9vdgTc_e5cdfJMqPGbkmHz2-dJXr_MJvAP3GfMLTuBygY7TLUB8OyTW9dh0NHwcjEXTaEEsiY1VogANHstYSLUCgkgWpUu9kg243GlHLMcSEUNHYY4MVHFpEoNQanIJJsP0hLVX6xWeMm7LBBygyYjIyTy24KRzsbMuJhify_KMdf1AzF-ClsY8jMH5n1cv2H7I-PLHJWtXrxu8IghQmet68j8BZaaqDw
linkProvider IEEE
linkToHtml http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwjV1NT8JAEN0oHtQLihi_7cHrljbdLeyZQFCBGAORG5ndnRJiAkaLB3-9s92CH_Fg0kNnk6bpZjvz3u7MG8ZuAEG0hASOALFrYWa5okDLdaoT2cJMgHEFzoNh2huLu4mclDrbRS0MIhbJZxi62-Is3y7Nym2VNRQtLyG32Y4UQkhfrLXZUIkSlcYu1pRsi2wvRaAkjxMZec5OgIKctiildzb2-gAzUo2n9mPH8cY49K_70XaliDrdqi_nfivECl2yyXO4ynVoPn5JOf7zgw5Y_au8L3jYBK5DtoWLGquu-zsE5e9eY_vfxAqPGLkml38-d_XrwR28Q-By5mcBwcsZ2oAeAWLcPrWuzsbdzqjd42WrBT4nPpbzFihwaMZAoiQQSDIobOK0bMA2rbLEcwxRMbQU6MhAGWU61giZIqegU0yOWWWxXOAJC0wWgwXUKVE50YwMWGFtZI2NCMg3RXbKam4ipi9eTWPq5-Dsz9FrttsbDfrT_u3w_pzt-fwvd12wSv66wksCBLm-KhbCJ4aVrVw
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=proceeding&rft.title=Proceedings+Eighth+Working+Conference+on+Reverse+Engineering&rft.atitle=Decompiling+Java+using+staged+encapsulation&rft.au=Miecznikowski%2C+J.&rft.au=Hendren%2C+L.&rft.date=2001-01-01&rft.pub=IEEE&rft.isbn=9780769513034&rft.issn=1095-1350&rft.spage=368&rft.epage=374&rft_id=info:doi/10.1109%2FWCRE.2001.957845&rft.externalDocID=957845
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=1095-1350&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=1095-1350&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=1095-1350&client=summon