Soot入门(1): 安装与生成Jimple文件
这学期选修了程序分析课,作业是基于soot进行一些java程序的静态分析,发现目前不管国内国外对于soot的教程都不太多,要么不太清晰要么太老,打算一边学习一遍记下笔记,方便未来入坑的铁子们少踩坑
0: JAVA配置
建议使用JDK1.8/1.7
,版本过高的JDK似乎与soot存在不兼容问题
这一步很简单网上教程很多,主要在于设置$JAVA_HOME
Mac
我的是 MacBook Air (M1 2020): MacOS Monterey version 12.3.1
设置方法很简单
# 修改 .zshrc
sudo vim .zshrc
# 在 .zshrc文件中加上以下这行, 版本号可能不同,请自行修改
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home"
# 也有可能是这个路径, 自行check
export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
# 保存 source一下
source ~/.zshrc
然后测试下是否OK
java -version
# java version "1.8.0_321"
# Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
# Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
javac -version
# javac 1.8.0_321
echo $JAVA_HOME
# /Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home
Windows
我没有在win上进行配置,我的舍友在win11上按照这篇指南配置成功
Linux
应该和Mac类似, 路径可能有所不同自行确认
1: 安装soot
命令行使用
首先下载soot的jar包,选择v4.3.0/下的soot-4.3.0-jar-with-dependencies.jar, 其他文件按自己需要下载
为了方便我把下载下来的jar重命名为了soot.jar
并放在了/Applications
目录下, 并且像上面设置JAVA_HOME
一样设置了SOOT_HOME="/Applications/soot.jar"
接着检验下是否安装成功
java -cp $SOOT_HOME soot.Main -h
# General Options:
# -coffi Use the good old Coffi front end for parsing
# Java bytecode (instead of using ASM).
# -jasmin-backend Use the Jasmin back end for generating Java
# bytecode (instead of using ASM).
# -h, -help Display help and exit
# ...
IntelliJ IDEA使用
Maven方式导入
在项目下pom.xml
文件中加入以下
<dependency>
<groupId>org.soot-oss</groupId>
<artifactId>soot</artifactId>
<version>4.3.0</version>
<scope>compile</scope>
</dependency>
直接导入 soot.jar
进入File -> Project Structure -> Modules
,右侧Module SDK
下面的+ -> 1 JARs or Directories
,找到你下的soot.jar
即可
2: 生成Jimple
Jimple<