当前位置:   article > 正文

JOERN 2023最新版本 从安装到CPG绘制_joern画图

joern画图

因为想复现Devign代码,因此决定安装Joern进行图的生成,但是看了很多文章,说是很难安装好。
所以特意安装了个虚拟机(其实按照我这个步骤来,同学们可以直接在自己的服务器上部署Joern)

安装Vmware Workstation(可略过)

参考:

VMware Workstation安装
脚本之家

Bug:安装成功后可以共享文件,重装了N次VMware tools,看了各种文章,还是无法复制粘贴(有同学教教吗)
  • 1

配置Ubuntu环境(可略过)

备份
cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 1
换源

参考:https://blog.csdn.net/weixin_43366437/article/details/123295845
首先查看一下VIM编辑器是否支持复制粘贴

$vim --version | grep "clipboard"
#-clipboard代表不支持+clipboard代表支持。
  • 1
  • 2

打开路径将原本所有内容删除

$vim /etc/apt/sources.list
  • 1

然后将以下内容粘贴进去

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

## Not recommended
# deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
按下esc, 输入:wq

vim操作可查看:https://blog.csdn.net/weixin_43366437/article/details/123295845

更新
$ sudo gedit /etc/apt/sources.list
$ sudo apt update
  • 1
  • 2

配置Joern环境

查看Java环境(目前最新Joern文档中要求JDK11

$ java -version
  • 1

因为我装的是Ubuntu 18
跟据系统自带JAVA JDK来安装,参考:https://www.jianshu.com/p/5a25b9535016

$apt install openjdk-11-jre-headless
$apt install openjdk-11-jdk-headless
  • 1
  • 2

设置JAVA_HOME环境变量

$ sudo update-alternatives --config java
$ sudo vim /etc/environment

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/bin/java"

#重新加载环境
$ source /etc/environment

#验证
$ echo $JAVA_HOME
"/usr/lib/jvm/java-11-openjdk-amd64/bin/java"
其他用户需要执行命令source /etc/environment或注销并重新登录才能应用此设置
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

下载最新版本Joern
https://github.com/joernio/joern/releases
在这里插入图片描述

使用unzip 命令解压后,可以看到有很多文件
在这里插入图片描述
运行Joern

$ sudo ./joern
  • 1

在这里插入图片描述

二、使用Joern

因为本人主要的诉求是用Joern来生成代码属性图,因此以下内容只关于如何生成代码属性图
首先下载文档中提供的案例

git clone https://github.com/ShiftLeftSecurity/x42.git
  • 1

进入x42文件夹,可以看到里面只有一个.c文件
在这里插入图片描述

法一(不进入Joern控制台)

在Linux命令行中

joern-parse /src/directory
#生成cpg.bin
  • 1
  • 2

在这里插入图片描述

joern-export [cpg-name] --repr pdg --out outdir
#基于cpg.bin文件生成别的图
  • 1
  • 2

举个例子,下图根据代码生成了PDG
在这里插入图片描述
也可以使用别的命令生成其他的代码属性图,如下图所示
在这里插入图片描述
这里生成的是DDG

安装可视化工具

sudo apt-get install graphviz
sudo apt-get install xdot
  • 1
  • 2

安装好后,进入.dot文件所在的目录,可以点开看下
在这里插入图片描述
这里点开的是1-pdg.dot(点开0-pdg.dot是空白文件,有懂哥知道是为啥吗)
明明x42文件夹里,明明只有一个.c文件但是joern生成了9个.dot文件,也可以点开看下
在这里插入图片描述
原来剩下的7张图都是1-pdg.dot的子图,即,此代码中不同数据的不同流向

方法二(使用Joern控制台命令)

还在摸索。。。

参考博客:
https://blog.csdn.net/qq_36281420/article/details/114526209
https://blog.csdn.net/qysh123/article/details/117005421
https://blog.csdn.net/lockhou/article/details/123300572
https://blog.csdn.net/u013648063/article/details/112311392

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/807873
推荐阅读
相关标签
  

闽ICP备14008679号