ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux下Joern环境配置

2022-02-22 19:34:36  阅读:254  来源: 互联网

标签:Joern 配置 graphviz sh install Linux joern 安装


一、Joern简介

       Joern 是一个用于静态代码分析的命令行工具。Joern 可以帮助您找到并纠正具有数十万行代码的程序中的安全漏洞,包括难以通过模糊测试检测到的缺陷。它包括以代码属性图为中心的交互式外壳和自动化功能。

二、环境配置

1.jdk配置

注意jdk版本要是jdk11,jdk8亲测不可用。jdk配置可参考Linux下安装JDK11 - 小毅同学 - 博客园

2.安装预构建的二进制文件

要安装最新版本,只需执行以下命令

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 将安装在~/bin/joern.

可以按如下方式测试你的安装:

有可能出现No java installation was detected的错误,输入source /etc/profile解决。进行joern测试时,一定要到joern的路径测试,我的joern路径是/home/lh/bin/joern/joern-cli

3.要从源代码构建 joern-cli,您需要安装 Scala 构建工具 (sbt),您可以按照sbt - Download上的说明进行安装。

三、实例

在开始 Joern 之前,您应该准备好一个可供分析的程序。克隆以下 git 存储库,其中包含一个名为的简单程序X42:

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

其中c程序是这样的:

// X42.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
  if (argc > 1 && strcmp(argv[1], "42") == 0) {
    fprintf(stderr, "It depends!\n");
    exit(42);
  }
  printf("What is the meaning of life?\n");
  exit(0);
}

启动joern

导入代码,inputPath是c程序所在的路径;projectName是项目名,可以随便命名,方便以后打开该项目。

importCode(inputPath="/home/lh/桌面/x42/c",projectName="x42-c")

得到以下结果,证明环境配置没有问题。

 查看含有“stderr”的代码:

cpg.call.argument.code("stderr").toList

生成代码的抽象语法树AST,需要有graphviz的支持,输入以下指令安装graphviz。

sudo apt-get install graphviz

sudo apt-get install graphviz graphviz-doc

 安装成功后,需要以下指令,生成AST。

cpg.method("main").plotDotAst

 生成的AST如下图所示,图片太宽,只放了部分。

先输入close指令关闭项目,再输入exit,再输入y,保存修改并退出joern。

 其他常用的操作,可以参考Joern的手册,Quickstart | Joern Documentation

标签:Joern,配置,graphviz,sh,install,Linux,joern,安装
来源: https://blog.csdn.net/swust512017/article/details/123072706

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有