目录
写在前面
看完这个有了基础之后有需要的话可以参考我的另外一篇在python中批量生成CPG等图的文章
参考文章
JOERN后续可能会有更新,如果本文和官方文档有冲突的地方建议参考最新官方文档
joern官方文档
CSDN 破落之实用户的一些文章
破落之实
破落之实
Install
Prerequisites:Java 8 or higher
Link: https://openjdk.java.net/install/
JOERN运行环境需要Java8或者以上版本支持,需要提前安装。在有Java环境之后,最简单的办法就是安装预编译的joern-cli。预编译我理解的就是类似windows下的.exe
文件,可以一键安装应用
注意Joern官方目前很活跃,在持续更新,有朋友补充了自己踩的坑:Joern只支持jdk11,不支持其他jdk,大家可以作为参考。博文里面的内容执行起来有问题的话建议大家去看一下最新版的Joern官方文档,博客里面有地址。
这里我直接安装的预编译版本的joern-cli
# Install pre-built binaries of the joern-cli
git clone https://github.com/ShiftLeftSecurity/joern
cd joern
sudo ./joern-install.sh
启动joern
如下图,启动joern,进入命令行界面
生成CPG(常用)
使用importCode生成CPG(最常用,在命令行端解析c/java代码为属性图等)
进入目录/joern-cli/,执行下列指令下载示例程序x42
git clone git@github.com:ShiftLeftSecurity/x42.git
# 上面的git clone命令不好使的话,写下面的
git clone https://github.com/ShiftLeftSecurity/x42.git
使用importCode指令为程序x42 下的c代码文件创建一个代码属性图
注意:joern解析c语言文件的时候,导入到指令的是folder,而不是.c或者.cpp文件,这里的"./x42/c"内容如下:
从上图可以看出,./x42/c
是一个包含4个.c
文件的文件夹
importCode(inputPath="./x42/c", projectName="x42-c"