soot生成控制流图

Java静态分析神器Soot实战:从HelloWorld到LeetCode难题的控制流图生成 本文通过实战演练,详细介绍了如何使用Java静态分析框架Soot生成控制流图。从HelloWorld程序入手,解析Jimple中间表示,再到分析LeetCode难题的复杂算法逻辑,逐步展示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. 修改环境变量

  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了

 

soot生成java程序的控制流图例子 在java工程中利用soot-jar包,生成java程序的dot文件,再利用graphviz画出java程序的控制流图。 立即下载

相关推荐

Soot的Java程序控制流分析及图形化输出

Soot是一个Java编译优化框架,可以利用它实现Java字节码程序的数据流分析和控制流分析。在深入分析Soot控制流生成机制的基础上,详细叙述了利用Soot分析Java类的控制流并生成其控制流图的方法和过程,同时提出了将Soot生成的抽象的控制流图进行图形化输出的方法。

soot简介及安装运行

soot简介及安装运行

myw_katrina的博客 1万+

SootTest:使用Soot生成调用图和过程间控制流程图

SootTest:使用Soot生成调用图和过程间控制流程图

Soot初使用

运行“sootclasses-trunk-jar-with-dependencies.jar”时,输入文件Test.class文件的位置与sootclasses-trunk-jar-with-dependencies.jar在同一目录下。sootclasses-trunk-jar-with-dependencies.jar这个包含了soot使用所需要的全部依赖。soot默认输入是class文件,输出也是class文件,如果需要输出jimple文件,可以使用参数-f J。

weixin_53622982的博客 589

【没有网络,安装python包】如何从 PyPI 下载并安装 Plotly 的离线包

在某些情况下,您可能需要在没有互联网连接的环境中安装 Python 包,例如在飞机上、在某些受限制的网络环境中或在需要离线安装的场景下。以下是如何在 PyPI(Python Package Index)下载 Plotly 包并进行离线安装的详细步骤。

赖德发的博客 1103

Zemax非序列模式微透镜阵列仿真:从建模到优化完整指南

光线追迹是光学系统仿真的核心技术,其原理基于几何光学与物理光学的光线传播模型,通过精确计算光线在光学元件中的折射、反射与散射路径,实现对系统性能的预测与评估。在微透镜阵列等复杂多通道光学系统中,传统序列模式因光线路径受限而难以准确模拟串扰与杂散光,非序列光线追迹技术则凭借其灵活的空间传播机制成为关键手段。该技术广泛应用于激光整形、光束匀化、3D传感及光场成像等领域,能够有效支持阵列结构设计与优化。Zemax非序列模式为微透镜阵列仿真提供了完整的建模、优化与公差分析流程,是光学工程师进行复杂系统设计的核心工具

weixin_29967003的博客 328

使用Soot生成控制流图

Soot是一个很有效的程序分析工具,最基本的一个功能就是生成程序控制流图(Control Flow Graph,CFG)。作为一些不了解Soot的初学者,一般都会先通过命令行试一下Soot的这一功能。下面这条命令就给出了使用最新的JAR包生成CFG的方法: 1 java -cp soot-2.5.0.jar soot.tools.CFG

gnefniu的专栏 5991

自动驾驶感知融合算法拆解:从华为MDC案例看前融合与大融合的工程实现

本文深度解析了华为MDC平台在自动驾驶感知融合算法中的前沿工程实践,重点探讨了Camera-Lidar前融合与多传感器大融合的架构设计。通过异构融合架构、数据流优化和场景化应用,华为MDC平台实现了高效、安全的感知能力,显著提升了自动驾驶系统的性能与可靠性。

weixin_29198045的博客 534

Soot生成控制流图

Soot生成控制流图

qq_42308741的博客 1591

Allegro PCB设计小技巧:如何用Shift键快速平移复制走线和过孔?

本文深入解析了Allegro PCB设计中利用Shift键进行平移复制的核心技巧。通过对比传统复制粘贴流程,详细演示了如何高效、精准地批量复制走线和过孔,尤其适用于创建等间距电源总线、过孔阵列等场景,能显著提升PCB设计效率与准确性。

pz89012345的博客 554

基于树莓派5的AR头显开发:从硬件选型到Unity整合全解析

增强现实(AR)技术通过将虚拟信息叠加到真实世界,为用户提供沉浸式交互体验。其核心原理依赖于计算机视觉进行环境感知与空间定位,并结合实时3D渲染实现虚实融合。在工程实践中,嵌入式平台因其低成本、低功耗特性,成为探索AR应用边界的重要载体。本项目以树莓派5为核心,通过集成OpenCV进行ArUco标记识别实现精准空间定位,并利用MediaPipe完成手势交互,最终在Unity引擎中完成虚实场景的实时渲染与融合,为开发者提供了一个完整的、可亲手实践的AR系统开发方案。

weixin_32430941的博客 254

java soot_Soot生成控制流图

Soot是McGill大学的Sable研究小组自1996年开始开发的Java字节码分析工具,它提供了多种字节码分析和变换功能,通过它可以进行过程内和过程间的分析优化,以及程序流图的生成,还能通过图形化的方式输出,让用户对程序有个直观的了解。尤其是做单元测试的时候,可以很方便的通过这个生成控制流图然后进行测试用例的覆盖,显著提高效率。如果是将Soot当作简单工具来分析的人,可以直接使用Soot自带的...

weixin_28914101的博客 1576

windows exe爬虫:exe抓包

在不知情所拦截应用使用的流量时,所以建议用Wireshark。本文利用python代码,实现自动拦截,写入pcap包,并用代码分析流量的协议。这样会在本地目录下生成capture_inbound.pcap,可以用wireshark分析,也可以利用python代码进行分析,如果使用python代码进行分析,需要借助pyshark或者scapy。使用的python WinDivert的包,当然前提也是需要安装Wireshark软件,设置环境变量,并安装pydirvert包。

youbingchen的博客 616

画出java代码控制流图_软件测试:Soot生成控制流图

Soot生成控制流图1.下载jdk1.7并配置环境变量(下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html),下载eclipsekepler(下载地址:http://www.eclipse.org/downloads/packages/ecl...

weixin_28909503的博客 2068

Python调用CANoe(2)(测试模块配置)

本节内容在Python和CANoe的数据交互(1)的基础认知上,继续探索Python如何加载TestSetup,以及运行tse测试文件

蚂蚁小兵 1万+

MATLAB 基于 Baker 映射和 Logistic 混沌序列的图像加解密实现

图像加密是信息安全领域的重要研究方向,在数字版权保护、隐私保护等领域有着广泛应用。本文将介绍基于 MATLAB 的 Baker 映射和 Logistic 混沌序列的图像加解密算法,该算法利用混沌系统的初值敏感性和伪随机性,能够有效地对图像进行加密和解密。基于 Baker 映射和 Logistic 混沌序列的图像加解密算法是一种有效的方法,可以应用于数字版权保护、隐私保护等领域。MATLAB 提供了强大的工具和函数,可以方便地实现该算法。

走向CTO的路上... 935

soot生成java代码的控制流图

Soot是McGill大学的Sable研究小组自1996年开始开发的Java字节码分析工具,它提供了多种字节码分析和变换功能,通过它可以进行过程内和过程间的分析优化,以及程序流图的生成,还能通过图形化的方式输出,让用户对程序有个直观的了解。尤其是做单元测试的时候,可以很方便的通过这个生成控制流图然后进行测试用例的覆盖,显著提高效率。 如果是将Soot当作简单工具来分析的人,可以直接使用Soot自

云华100的专栏 5802

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Soot生成代码控制流图

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_HOM...

Globalizationa的博客 1092

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Ubuntu下Soot+Graphviz生成程序控制流图

在Ubuntu下安装并使用Soot 下载soot.jar,网址为:https://www.sable.mcgill.ca/soot/soot_download.html. 使用soot 将下载的soot的jar包、jre/lib/下的rt.jar、待分析的程序文件放到一个特定的文件中,如图 。特别注意,soot对应的系统的jdk是1.7版本 进入该文件目录的终端,运行两行命令 java -cp ...

sinat_36505108的博客 789

软件测试:Soot生成控制流图

Soot生成控制流图 1.下载jdk1.7并配置环境变量(下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html), 下载eclipsekepler(下载地址:http://www.eclipse.org/downloads/packa...

询昵的博客 312

用Soot生成控制流图(dot语言描述)+Graphviz生成png格式图片

基本参考这一篇完成:Soot生成控制流图 在程序内用代码跑,失败了。。。然后迫不得已另辟蹊径,在java直接调用cmd命令生成.dot文件 主要操作步骤如下: 将Soot-2.5.0.jar放在项目的bin目录下 用cmd命令进入bin目录,使用Soot自带的工具soot.tools.CFGViewer分析类中的每个方法的控制流并生成DOT语言描述的控制流图 String cmd2 = "cmd /c java -cp soot-2.5.0.jar soot.tools.CFGViewer --soot

weixin_43201090的博客 1229

Soot实战:从Jimple生成到控制流图分析

本文是Soot静态分析框架的实战指南,详细介绍了如何从Java字节码生成Jimple中间表示,并进一步构建和分析控制流图。通过Hello World等具体案例,手把手演示了环境配置、命令使用及可视化分析,帮助Java开发者深入理解代码底层逻辑,为程序优化和缺陷检测奠定基础。

sony5的博客 645
上一篇: Pict使用教程
下一篇: 输出流方法out.write()不能换行
csdnApril
博客等级 码龄9年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值