soot生成控制流图

https://www.sable.mcgill.ca/soot/soot_download.html中下载soot.jar

http://www.onlinedown.net/soft/1162507.htm下载rt.jar

  1. 将jdk换成1.7版本的

http://www.pc6.com/softview/SoftView_384691.html

  1. 修改环境变量

soot生成控制流图

  1. 删除C:\Windows\System32下的三个文件

soot生成控制流图

至此jdk替换完成,但是我的eclipse需要jdk1.8,所以只能用命令行运行soot

  1. 在链接https://www.bodden.de/2008/08/21/soot-command-line/中下载三个文件

soot生成控制流图

和要用的java文件放在同一个文件夹(注意此处不要放.Class文件,放了接下来反而会报错)

soot生成控制流图

直接输入java -cp sootclasses-2.3.0.jar:jasminclasses-2.3.0.jar:polyglotclasses-1.3.5.jar soot.Main -cp . Triangle会报错

链接里有三种解决方案,我都试过,只有第三种有用(C:\Users\April\Desktop\test2>java -cp soot-2.5.0.jar soot.tools.CFGViewer -pp -cp . NextDate偶尔第二种有用)

soot生成控制流图

C:\Users\April\Desktop\test1>java -cp jasminclasses-2.3.0.jar;polyglotclasses-1.3.5.jar;sootclasses-2.3.0.jar  soot.Main -allow-phantom-refs -cp . Triangle

此处注意一个细节:windows下引入多个包应该用分号,Linux和Mac osx才是冒号

soot生成控制流图

生成一个文件夹

soot生成控制流图

这个文件夹里只有一个.class文件,让人头大

然后参考了这个https://www.cnblogs.com/Danning1996/p/6701692.html教程

CFGViewer,emmmmm没找到

下载graphviz参考https://www.cnblogs.com/shuodehaoa/p/8667045.html链接

安装成功

soot生成控制流图

C:\Users\April\Desktop\test1>java -cp soot-2.5.0.jar soot.tools.CFGViewer -allow-phantom-refs -cp . Triangle

然后在sootOutput文件夹目录下dot -Tpng -o Triangle.png "void main(java.lang.String[]).dot"

就能看到生成的png了

 

soot生成控制流图