JVM Bytecode tools

Soot

A frightenly comprehensive framework for the analysis of Java Bytecode. Soot has four intermediate representations of bytecode of various levels of abstraction, has extensive flow graph analysis, and can output in Jasmine format.

:: Main Soot site

 http://www.sable.mcgill.ca/soot/

:: A Survivors guide to Soot.

 http://www.brics.dk/SootGuide/

BCEL

 http://bcel.sourceforge.net/downloads/BCEL.jar

BCEL verifier

java -cp bcel.jar \
   org.apache.bcel.verifier.Verifier <CLASSFILE-TO-BE-VERIFIED>

 http://www.jresearchsoft.com:9091/nexus/content/repositories/thirdparty/org/apache/bcel/bcel/5.3-beta-694866/bcel-5.3-beta-694866.jar

java -cp bcel-5.3-beta-694866.jar \
                   org.apache.bcel.verifier.GraphicalVerifier \
                   <CLASSFILE-TO-BE-VERIFIED>

jvm-verifier

 Kersten's Verifier for Java Byte Codes

can

 http://classfileanalyzer.javaseiten.de/

After building classfileanalyzer.jar, classes can be decompiled into Jasmin assembler format ("*.j") via

java -jar ~/work/classfileanalyzer/classfileanalyzer.jar -file 144c_1.class 

jasmin-mode

Jasmine is the defacto assembler format for JVM bytecode.

An Emacs mode  jasmin.el exists for visiting these files.

Some funkiness in the highlighting can be fixed in the attachment:jasmin-line-numbers.diff Download.

Online JVM reference

 http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.doc.html::

JVM specification.

 http://www.daimi.au.dk/dOvs/jvmspec/ref-Java.html::

Annotation of JVM instructions from  J. Meyer and T. Downing, __Java Virtual Machine__, O'Reilly Associates, 1997. Some errors [unverified], but often more understandable than the JVM specification as it comes with short examples.

JustIce

 http://bcel.sourceforge.net/justice/justice.html

A command line tool that produces diagnostics about incorrect bytecode. Now folded as part of BCEL.

Attachments