本文介绍: vim操作查看https://blog.csdn.net/weixin_43366437/article/details/123295845。参考https://blog.csdn.net/weixin_43366437/article/details/123295845。跟据系统自带JAVA JDK来安装参考:https://www.jianshu.com/p/5a25b9535016。这里点开的是1-pdg.dot(点开0-pdg.dot空白文件,有懂哥知道是为啥吗)然后将以下内容粘贴进去。

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

安装Vmware Workstation(可略过)

参考

VMware Workstation安装
脚本之家

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

配置Ubuntu环境(可略过)

备份
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

按下esc, 输入:wq

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

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

配置Joern环境

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

$ 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

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

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

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

法一(不进入Joern控制台

在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子图,即,此代码不同数据不同流向

方法二(使用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

原文地址:https://blog.csdn.net/wfwp_/article/details/129735156

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41270.html

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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注