Soot可以对代码进行分析,提供了多种字节码分析和变换功能,通过它可以进行过程内和过程间的分析优化,以及程序流图的生成,还能通过图形化的方式输出。
http://www.brics.dk/SootGuide/上面有官方的guide
1. 环境准备:
a. 下载安装java7,不能用java8 (soot3.0.1可以用java8)
b. 下载soot jar包 https://www.sable.mcgill.ca/soot/soot_download.html
c. 设置好 JAVA_HOME
d. 将soot-2.5.0.jar和test.java文件放到同一个目录下,如 D:\\testflow
2. 运行步骤
a. 命令行方式进入D:\\testflow, 编译java源文件 javac test.java
b. java -cp soot-2.5.0.jar soot.tools.CFGViewer --soot-classpath .;"%JAVA_HOME%"\jre\lib\rt.jar test
,在当前目录下会生成sootOutput文件夹,生成test.dot文件
c. 下载graphviz(任意版本),解压后bin目录里运行dot -Tpng test.dot -o testflow.png
生成的控制流图如下: