友链:
- soot-GitHub官方文档
- Introduction: 在命令行使用soot
- soot的java api文档
- soot-guide
- https://blog.csdn.net/zlp1992/article/details/42023995
Soot是一款面向Java的优化框架,它能够通过“中间语言”转换以及分析Java字节码。Soot支持的“中间语言”(准确表述是中间表达形式)有四种:Baf、Jimple、Shimple以及Grimp。其中最常用的是Jimple,它是一种三位址码,在Java代码优化与分析方面应用相对广泛,这里主要介绍的就是Jimple。Soot既可以用做独立的工具使用,也可以在开发过程中当做框架。
Soot支持对.java、.class、.jimple文件进行处理。Jimple是Soot的首选“中间语言”,可以看做是Java代码的简化版本。Soot支持从.java或.class向.jimple双向转换,也可以在修改完.jimple后将其转换为.class。
在Soot中有个Main.java类,这个类主要是负责解析命令行的,在这里面可以找到命令与程序类的方法之间的对应关系(尤其注意Main中的run()方法)。
安装
在 Soot Software 中下载soot.jar。
使用
soot命令行使用 官方教程:
Soot通常可以处理许多类文件,这些类可以是下面这三种格式:
- Java源代码 即 Java文件
- Java字节码 即 类文件(class文件)
- Jimple 代码 即 jimple文件