soot生成控制流图

本文介绍了如何使用Soot工具生成控制流图。首先,从指定网站下载soot.jar和rt.jar,确保使用JDK1.7。接着,替换系统中的JDK,并通过命令行运行Soot,但需要注意命令行参数的正确配置。在遇到错误时,尝试了多种解决方案,最终成功生成了.class文件。然后,参照教程安装graphviz以查看生成的CFG,通过执行特定命令,将.dot文件转换为PNG图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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. 修改环境变量

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

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

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

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

直接输入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偶尔第二种有用)

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才是冒号

生成一个文件夹

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

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

CFGViewer,emmmmm没找到

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

安装成功

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了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值