Joern安装与使用

环境准备

Joern需要在Linux环境中运行,所以在Windows系统中需要借助WSL或虚拟机安装。

JDK安装

Joern的运行需要JAVA环境的支持,本次采用的是JDK17,其他版本建议看一下Joern官方文档。

apt install openjdk-17-jre-headless

配置JAVA环境变量

安装Vim
sudo apt-get install vim
添加环境变量
sudo vim /etc/environment
在文件最后添加
JAVA_HOME=“/usr/lib/jvm/java-17-openjdk-amd64/bin/java”
重新加载环境
source /etc/environment

安装Joern(用时较久)

sudo snap install curl
mkdir joern && cd joern
curl -L “https://github.com/joernio/joern/releases/latest/download/joern-install.sh” -o joern-install.sh
chmod u+x joern-install.sh
./joern-install.sh --interactive

启动Joern

在这里插入图片描述

可视化

Joern的可视化依赖于对应工具

sudo apt-get install graphviz
sudo apt-get install graphviz graphviz-doc
sudo apt-get install xdot

在启动的控制台中,需要先导入项目

importCode(inputPath=“./planning”, projectName=“planning”)
下次可以使用以下命令打开
open(“planning”)
注:导入JAVA文件时目标是jar,C文件时目标是文件夹

利用不同命令可以绘制对应图形
Abstract Syntax Trees (抽象语法树)
Control Flow Graphs (控制流图)
Control Dependence Graphs (控制依赖图)
Data Dependence Graphs (数据依赖图)
Program Dependence graphs (程序依赖图)

cpg.method($name).plotDotAst…
输出文本形式

cpg.method($name).dotAst.l…

在这里插入图片描述

常用命令

在这里插入图片描述列出分析结果
在这里插入图片描述一些方法统计可能存在错误,测试的时候虽然传入了完整的Planning模块代码,但对照函数似乎只解析了Common中的文件(可能支持拓展)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/172721.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

shell脚本之条件语句

条件语句 linux测试 test 测试 测试表达式是否成立(用echo $? 检测是否正确) 语法:test [选项] [文件名] 选项作用-e测试文件是否存在-r查看文件有无读的权限-d测试是否为目录-f测试是否为文件-w测试当前用户有无写的权限-x测试是否有执…

EANet:用于医学图像分割的迭代边缘注意力网络

EANet: Iterative edge attention network for medical image segmentation EANet:用于医学图像分割的迭代边缘注意力网络背景贡献实验方法Dynamic scale-aware context module(动态规模感知上下文模块)Edge attention preservation module&a…

【Java】java | CacheManager | redisCacheManager

一、说明 1、查询增加缓存,使用Cacheable注解 2、项目中已经用到了ehcache,现在需求是两个都用 二、备份配置 1、redisConfig增加代码 Bean("redisCacheManage")Primarypublic CacheManager redisCacheManager(RedisConnectionFactory fact…

Matlab通信仿真系列——图形处理函数

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、plot函数 (1)绘制一…

SystemV

一、共享内存 1、直接原理 进程间通信的本质是:先让不同的进程,看到同一份资源!! 我们要把这句话奉若圭臬一般 到了共享内存了支持双向通信能读也能写,但是一般都是一个读一个写 要想通信先看到同一个份资源&#xff0…

Lifecyle的原理

1、Lifecycle是典型的观察者模式,被观察者的继承关系如上图所示。 2、LifeCycleRegistry是Lifecycle的子类。 3、观察者通过LifeCycle对象的addObserver注册监听生命周期的变化,通过removeObserver移除监听生命周期的变化。 4、Activity或Fragment的生命…

HDFS的Shell操作

文章目录 一、HDFS的Shell介绍二、了解HDFS常用Shell命令(一)三种Shell命令方式(二)FileSystem Shell文档(三)常用HDFS的Shell命令 三、HDFS常用命令操作实战(一)创建目录&#xff0…

深度学习之基于Pytorch的昆虫分类识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介系统架构技术亮点 二、功能三、系统四. 总结 一项目简介 # 深度学习基于 Pytorch 的昆虫分类识别系统介绍 深度学习在图像分类领域取得了显著的成就&#…

windows上 adb devices有设备 wsl上没有

终于解决了!!!! TAT,尝试了很多种办法。 比如WSL中的adb和Windows中的adb版本必须一致,一致也没用,比如使用 ln 建立链接也没用。 这个解决办法的前提是windows中的abd是好用的。 ●在windows…

计算机显示msvcp140.dll丢失的解决方法,实测有效的5个方法分享

在日常的电脑操作中,常常遭遇某些错误讯息,如“缺少xxx.dll文件”,这些dll文件即为动态链接库文件,内含诸多可执行的程序码及数据。当启动某款应用时,系统将会自动调用与其相关的dll文件,其中msvcp140.dll便…

pycharm 控制台中文乱码处理

今天使用pycharm,发现控制台输出又中文乱码了,看网上很多资料说把编码改为UTF-8,设置为并未生效,特此在此记录下本地设置。 1. 修改文件编码:Setting -> Editor ->File Encodings,修改配置如下: 2. …

深入了解Java 8 新特性:Stream流的实践应用(一)

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概一万多字,预计阅读时间长需要10分钟(不要害怕字数过多,其中有一大部分是示例代码,读起…

Kotlin 核心语法,为什么选择Kotlin ?

Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性。 Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于 Android开发者&#…

用百度AI大模型给头像换风格

心血来潮想尝试尝试AI小应用,给图片加个风格(例如微信头像),于是有了这篇简短的教程 目录 1. 领取免费资源2. 在应用列表创建应用3. 在线API调试4. 效果对比 1. 领取免费资源 网站:百度智能云 百度给提供了很多AIGC的…

手搓js轮播图_JavaScript进阶

手搓js轮播图 逻辑解析html结构图片切换方法圆点导航切换效果左右箭头点击切换圆点导航点击切换自动播放,介入暂停 完整代码 逻辑解析 css的样式我就不再进行讲述,如果有需求可以评论区告诉我,我再出一篇文章进行详细讲解 js轮播图最主要的核…

执行npm的时候报权限问题的解决方案

我们在执行npm操作的过程中,会出现以下权限问题,解决方案: 管理员身份 运行cmd 切换目录到要执行命令的文件下 再进行npm操作即可

openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值

文章目录 openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值129.1 操作步骤129.2 示例 openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值 openGauss安装后,有一套默认的运行参数,为了使openGauss与业务的配合度更高&…

轿车5+1汽车变速器变速箱同步器操纵机构机械结构设计CAD汽车工程

wx供重浩:创享日记 对话框发送:汽车变速器 获取完整论文报告说明书工程源文件 变速器工程图 操纵机构3D图 一、机械式变速器的概述及其方案的确定 1.1 变速器的功用和要求 变速器的功用是根据汽车在不同的行驶条件下提出的要求,改变发动机…

【paddlepaddle】

安装paddlepaddle 报错 ImportError: /home/ubuntu/miniconda3/envs/paddle_gan/bin/../lib/libstdc.so.6: version GLIBCXX_3.4.30 not found (required by /home/ubuntu/miniconda3/envs/paddle_gan/lib/python3.8/site-packages/paddle/fluid/libpaddle.so) 替换 /home/ubu…