Soot - A Java optimization framework
Java TeX HTML XSLT Shell Limbo
Latest commit 4ec07bd Aug 25, 2016 Steven Arzt now that we have a thread-safe iterator in chains, we can be more agg…
…ressive when resolving fields
Permalink
Failed to load latest commit information.
doc added an option to silently ignore invalid entries on the classpath so Aug 3, 2016
eclipse added an option to silently ignore invalid entries on the classpath so Aug 3, 2016
generated added an option to silently ignore invalid entries on the classpath so Aug 3, 2016
libs added more dependencies in case we are using herosclasses.jar Aug 8, 2016
src now that we have a thread-safe iterator in chains, we can be more agg… Aug 25, 2016
systests - new test case for string constants wih null literals Nov 4, 2005
tests fixed a few tests to use Soot's prependClasspath option instead of Aug 3, 2016
tutorial fixing documentation issue, fixes #359 Apr 10, 2015
.classpath updated to new dexlib version, adapted de-odexing accordingly Aug 8, 2016
.gitignore Added descriptions to build.xml tasks, added Eclipse .settings to .gi… Feb 7, 2016
.project project name = soot Dec 14, 2012
CHANGES CHANGES Sep 18, 2014
COPYING-LESSER.txt Changed from Library General Public License 2 to Lesser General Publi… Jun 3, 2003
README.coding_rules Update README.coding_rules to reflect switch from make to ant, Jun 20, 2004
README.md Update README.md Dec 25, 2015
Release_Notice No commit message Jan 22, 2012
TODO - made nop eliminator run before jb phase for java to jimple Nov 17, 2003
TODO.txt updated web page; Jan 22, 2012
ant.settings.jenkins allow for guava to be included explicitly so that we can build agains… Aug 8, 2016
ant.settings.template fixed missing dependencies Aug 8, 2016
background6.gif prcs 1.2.0.dev.4: Oct 4, 2000
build.xml fixed missing dependencies Aug 8, 2016
credits docs Aug 18, 2014
index.html git Jun 22, 2012
ivy.xml Added ant task to publish soot to local maven repo using ivy Jan 16, 2016
ivysettings.xml Added ant task to publish soot to local maven repo using ivy Jan 16, 2016
local-nightly-build Add self-contained nightly build script "local-nightly-build". Jan 1, 2015
nightly No commit message Jan 22, 2012
soot.psf Corrected github project references in soot.psf Apr 1, 2014
soot_download.html No commit message Jan 22, 2012
soot_in_eclipse_howto.html Improve the wording of the previous change Apr 5, 2006

README.md

What is Soot?

Soot is a Java optimization framework. It provides four intermediate representations for analyzing and transforming Java bytecode:

  • Baf: a streamlined representation of bytecode which is simple to manipulate.
  • Jimple: a typed 3-address intermediate representation suitable for optimization.
  • Shimple: an SSA variation of Jimple.
  • Grimp: an aggregated version of Jimple suitable for decompilation and code inspection.

See http://www.sable.mcgill.ca/soot/ for details.

How do I get started with Soot?

We have some documentation on Soot in the wiki and also a large range of tutorials on Soot.

How do I obtain the nightly builds

Note that the nightly build server has moved

Nightly builds of soot can be obtained from nightly build. The "soot-trunk.jar" file is an all-in-one file that also contains all the required libraries. The "sootclasses-trunk.jar" file contains only Soot, allowing you to use manually pick dependencies as you need them.

About Soot's source code

Soot follows the git-flow convention. Releases and hotfixes are maintained in the master branch. Development happens in the develop branch. To catch the bleeding edge of Soot, check out the latter. You will also need the projects jasmin and heros. In case of any questions, please consult the Soot mailing list at: http://www.sable.mcgill.ca/mailman/listinfo/soot-list/