JVM Bytecode tools


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

:: A Survivors guide to Soot.


BCEL verifier

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

java -cp bcel-5.3-beta-694866.jar \
                   org.apache.bcel.verifier.GraphicalVerifier \


Kersten's Verifier for Java Byte Codes


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

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


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.

Online JVM reference

JVM specification.

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.


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

Last modified 6 years ago Last modified on 05/24/12 08:23:06

Attachments (1)

Download all attachments as: .zip