赞
踩
因为想复现Devign代码,因此决定安装Joern进行图的生成,但是看了很多文章,说是很难安装好。
所以特意安装了个虚拟机(其实按照我这个步骤来,同学们可以直接在自己的服务器上部署Joern)
Bug:安装成功后可以共享文件,重装了N次VMware tools,看了各种文章,还是无法复制粘贴(有同学教教吗)
cp /etc/apt/sources.list /etc/apt/sources.list.bak
参考:https://blog.csdn.net/weixin_43366437/article/details/123295845
首先查看一下VIM编辑器是否支持复制粘贴
$vim --version | grep "clipboard"
#-clipboard代表不支持+clipboard代表支持。
打开路径将原本所有内容删除
$vim /etc/apt/sources.list
然后将以下内容粘贴进去
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
vim操作可查看:https://blog.csdn.net/weixin_43366437/article/details/123295845
$ sudo gedit /etc/apt/sources.list
$ sudo apt update
$ java -version
因为我装的是Ubuntu 18
跟据系统自带JAVA JDK来安装,参考:https://www.jianshu.com/p/5a25b9535016
$apt install openjdk-11-jre-headless
$apt install openjdk-11-jdk-headless
设置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或注销并重新登录才能应用此设置
下载最新版本Joern
https://github.com/joernio/joern/releases
使用unzip 命令解压后,可以看到有很多文件
运行Joern
$ sudo ./joern
因为本人主要的诉求是用Joern来生成代码属性图,因此以下内容只关于如何生成代码属性图
首先下载文档中提供的案例
git clone https://github.com/ShiftLeftSecurity/x42.git
进入x42文件夹,可以看到里面只有一个.c文件
在Linux命令行中
joern-parse /src/directory
#生成cpg.bin
joern-export [cpg-name] --repr pdg --out outdir
#基于cpg.bin文件生成别的图
举个例子,下图根据代码生成了PDG
也可以使用别的命令生成其他的代码属性图,如下图所示
这里生成的是DDG
sudo apt-get install graphviz
sudo apt-get install xdot
安装好后,进入.dot文件所在的目录,可以点开看下
这里点开的是1-pdg.dot(点开0-pdg.dot是空白文件,有懂哥知道是为啥吗)
明明x42文件夹里,明明只有一个.c文件但是joern生成了9个.dot文件,也可以点开看下
原来剩下的7张图都是1-pdg.dot的子图,即,此代码中不同数据的不同流向
还在摸索。。。
参考博客:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。