Jive: A JavaTM Decompiler

This paper describes a decompiler for JavaTM virtual machine instructions (bytecodes). It describes how the stack architecture of the JavaTM virtual machine and the symbolic contents of JavaTM class files, combine to make decompilation of JavaTM executables particularly straightforward. It describes the processing required to parse JavaTM machine instructions into JavaTM source, giving a parser organization and various semantic rules needed to guide the process. The paper then describes the implementation of the JavaTM decompiler Jive which is capable of reconstructing source code from a JavaTM class file retrieved from the local file system or from across the internet. The paper concludes with a discussion on the likely effectiveness of possible counter-measures to make decompilation harder.

By: Daniel Ford

Published in: RJ10022 in 1996

LIMITED DISTRIBUTION NOTICE:

This Research Report is available. This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). I have read and understand this notice and am a member of the scientific community outside or inside of IBM seeking a single copy only.

rj10022.pdf

Questions about this service can be mailed to reports@us.ibm.com .