Skip to content

ShiftLeftSecurity/soot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0eaa2cc · Jan 27, 2025
Nov 25, 2016
Nov 25, 2016
Mar 3, 2023
Nov 18, 2016
Jan 27, 2025
Nov 4, 2005
Jan 30, 2017
Apr 10, 2015
Nov 18, 2016
Feb 10, 2017
Dec 14, 2012
Sep 18, 2014
Jun 3, 2003
Dec 15, 2016
Feb 14, 2022
Jun 20, 2004
Sep 21, 2016
No commit message
Jan 22, 2012
Nov 17, 2003
Jan 22, 2012
Nov 18, 2016
Nov 18, 2016
Oct 4, 2000
Feb 10, 2017
Aug 18, 2014
Jun 22, 2012
Jan 16, 2016
Jan 16, 2016
Jan 1, 2015
No commit message
Jan 22, 2012
Jan 27, 2025
Apr 1, 2014
No commit message
Jan 22, 2012
Apr 5, 2006

Repository files navigation

Build Status

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.

Including Soot in your Project

A Soot "release" is currently built for each commit to the develop branch. You can include Soot as a dependency via Maven, Gradle, SBT, etc using the following coordinates:

<dependencies>
  <dependency>
    <groupId>ca.mcgill.sable</groupId>
    <artifactId>soot</artifactId>
    <version>RELEASE</version>
  </dependency>
</dependencies>
<repositories>
  <repository>
    <id>bedatadriven</id>
    <name>bedatadriven public repo</name>
    <url>https://nexus.bedatadriven.com/content/groups/public/</url>
  </repository>
</repositories>

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/