joern的安装与使用

基本是对joern主页的一个搬运工作,并且这篇年代久远,可能工具已经更新了好几个版本,仅作参考吧。
joern是一个C/C++代码分析工具,主要功能是从源码生成抽象语法树,控制流图和程序依赖,合成一个叫做代码属性图(Code Property Graph, 擅自翻译了)的东西,存入图形数据库neo4j。
joern主要分为三个部分:joern(-core),python joern,joern tools。joern(-core)主要用来进行代码的解析以及以代码属性图形式进行存储。python joern是joern数据库的接口。joern tools是针对python joern的一个命令行工具,便于简单的分析在shell进行。


安装要求和依赖

  • Windows/Mac/Linux操作系统,此处记录在linux下的安装
  • 30GB硬盘和8GB RAM

需要软件

  • JVM1.7及以上
  • Neo4J 2.X社区版
  • Gremlin for Neo4J 2.X.,Gremlin语言的图遍历组件
    关于Gremlin,joern开发者提供neo4j的gremlin插件,然而出于某种奇怪的原因一直没装上,这里是利用了neo4j自带的cypher查询语言对于代码属性图进行查询,因此直接安装了py2neo 2.0
  • 其他的一些依赖,已打包为lib.tar.gz

步骤

  • 安装Neo4j:
    下载完毕后进行解压
tar -zxvf neo4j-community-2.0.1.tar.gz

修改conf/neo4j-server.properties配置文件,将org.neo4j.server.webserver.address=0.0.0.0注释字符去掉

  • 下载joern的最新版本并解压
wget https://github.com/fabsx00/joern/archive/0.3.1.tar.gz
tar xvf 0.3.1.tar.gz
  • 进入joern-0.3.1目录,下载依赖包lib.tar.gz并解压,若想构建开发版则需从官网下载其他依赖
cd joern-0.3.1
wget http://mlsec.org/joern/lib/lib.tar.gz
tar xfzv lib.tar.gz
  • 命令行输入ant来build此工程
  • 创建符号连接(可选),将joern-0.3.1/bin/joern.jar复制到磁盘中的任意位置,如果使用bash,则在~/.bashrc中添加如下代码,其中$JOERN代表joern的安装路径:
alias joern='java -jar $JOERN/bin/joern.jar'
  • 构建附加工具(可选)
ant tools

至此joern就基本安装完毕,可以使用了,然而强烈建议安装python-joern和joern-tools。

安装python-joern

  • 安装python-dev:
sudo apt-get install python-setuptools python-dev
  • 安装python-joern:
wget https://github.com/fabsx00/python-joern/archive/python-joern-0.3.1.tar.gz
tar xfzv python-joern-0.3.1.tar.gz
cd python-joern-0.3.1
sudo python2 setup.py install

安装joern-tools

git clone https://github.com/fabsx00/joern-tools
cd joern-tools
sudo python2 setup.py install

至此就全部安装结束,可以输入joern-lookup查看是否安装成功。

joern使用基本步骤

  • 导入代码
java -jar $JOERN/bin/joern.jar $CodeDirectory

其中$CodeDirectory代表你的代码的存放目录,这一步会创建一个neo4j的目录.joernIndex,注意,如果此目录已经存在,则joern.jar就会在其中添加代码,因此在每次你想要创建一个新的数据库之前需要删除.joernIndex,然后重复此步骤。

  • 配置neo4j数据库位置
    进入neo4j目录,找到conf/neo4j-server.properties,找到并修改以下代码:
# neo4j-server.properties
org.neo4j.server.database.location=/$path_to_index/.joernIndex/

其中$path_to_index为joern的安装位置。

  • 尝试运行neo4j,若失败,则修改conf/neo4j.properties,找到并修改以下代码:
# neo4j.properties
allow_store_upgrade=true

使得neo4j能够更新数据。

  • 运行joern
    在运行之前,确保neo4j关闭,在joern安装路径下键入:./joern $CodeDirectory
    注意,若添加CodeDirectory时此目录非空,则其中代码已经存入数据库,无需此步。

  • 运行neo4j
    在neo4j安装路径下键入bin/neo4j console,在控制台下运行neo4j,浏览器中网址输入localhost:7474即可查看你的代码的代码属性图。

  • 利用neo4j server命令行或在程序中插入对代码属性图的遍历。

你可能感兴趣的:(漏洞挖掘)