pysoot is a lifter from JAR/APK files to a Soot-like Python IR.
The master branch supports Python 3, the py2k branch supports Python2.
pip install .
from pysoot.lifter import Lifter
input_file = "tests/test_samples/simple1.jar" # the jar/apk you want to analyze
lifter = Lifter(input_file) # the default IR is Shimple, the default input_format is jar
classes = lifter.classes # get the IR of all the classes (as a dict of classes)
print(classes[list(classes.keys())[0]]) # print the IR of one of the translated classesMany other examples are in tests/test_pysoot.py
- Java. Currently tested using OpenJDK 8 (
sudo apt-get install openjdk-8-jdk).
Other components used by pysoot are:
jpype, used for accessing Java from Python.soot-trunk.jar. This is a slightly modified version of the pre-compiled Soot JAR. At some point, I will upload its source code and the compilation script somewhere.pysootshould also work with a normal version ofsoot-trunk.jar.
pysoot works by running Soot (compiled in the embedded soot-trunk.jar) using jpype, in soot_manager.py.
lifter.py uses soot_manager.py to translate the JAR/APK file to a Soot-like Python IR.
Classes in pysoot.sootir provide the exposed IR.