Skip to content
JVM Abstracting Abstract Machine
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
docs
examples
jars
licenses
project
resources
src/main
.gitignore
README.md
README.old.md
TODO.txt
Z3-readme.txt
build.sbt

README.md

Jaam: JVM Abstracting Abstract Machine

Jaam analyzes JVM bytecode to try to discover vulnerabilities and side channels.

Contents

Disclaimer

This is an early work in progress. There are a lot of rough edges and bugs.

License

This project is licensed under the Two-Clause BSD License with the exception of bundled files from external projects, which are distributed under the external project's license. See licenses/README.md for details.

Requirements

The only requirement is to have a copy of the Java JRE installed so that java can be run.

Building the tool automatically downloads the other parts that are needed.

Building

To compile the project for use, simply run the following from the top level of your Jaam directory:

./bin/sbt assembly

Usage

First, you need to prepare an .all.jaam file. If the application to be analyzed is in the <application> directory, then run the following commands.

./bin/jaam app       --input <application>/         --output <application>.app.jaam
./bin/jaam decompile --input <application>.app.jaam --output <application>.decompile.jaam
./bin/jaam loop3     --input <application>.app.jaam --output <application>.loop3.jaam
./bin/jaam taint3    --input <application>.app.jaam --output <application>.taint3.jaam
./bin/jaam cat       --input <application>.app.jaam \
                        --input <application>.decompile.jaam \
                        --input <application>.loop3.jaam \
                        --input <application>.taint3.jaam \
                        --output <application>.all.jaam

Now that you have an .all.jaam file, run the visualizer with the following.

./bin/jaam visualizer

Then click File -> Load loop graph and select your <application>.all.jaam file. After a few seconds you should see the loop graph in the visualizer.

You can’t perform that action at this time.