代码属性图是结合AST,控制流图,数据流图而形成的新的一种图示结构,用于在一张图中综合藐视程序的运行过程,数据传递过程等。(本文仅限学术交流,转载标明出处),感谢JacksonZyy的安装分析过程。
首先是官网的安装方法,如下:
https://joern.readthedocs.io/en/latest/installation.html#system-requirements-and-dependencies(官网的安装)
其次给出我在网上查找的方法:
(补充:给出安装环境:Vbox 5.2,ubuntu16.04;安装前请先换源并且sudo apt update
另外:安装这个至少需要2G的内存,不足2G,会产生错误,或者无法分析,文件越大,需要的内存越多)
1 安装JDK,参考https://www.cnblogs.com/HHgy/p/7560561.html
注意,在配置路径环境时,一定好看清准确路径,或者使用 whereis java-8-openjdk-amd64来查找相关路径
2 安装 Neo4J
wget -O - https://debian.neo4j.org/neotechnology.gpg.key | sudo apt-key add -
echo 'deb https://debian.neo4j.org/repo stable/' | sudo tee /etc/apt/sources.list.d/neo4j.list
sudo apt-get update
sudo apt-get install neo4j=2.1.5(或者sudo apt-get install --fix-missing neo4j=2.1.5)
(补充:这儿安装了neo4j后,发现在后面是无法启动的,我在第二次安装的时候才发现,我是在以前接触neo4j的时候已经做了neo4j的2.1.8版本,大家可以参考https://www.cnblogs.com/zlslch/p/6933127.html 大神的博客,安装2.1.8版本的neo4j,原理上其他版本也没问题)
3 在ant之前,官网说明还需要提供一个lib.tar.gz的包(吐槽下:在西安尝试了好多次都没有成功下载,而在北京那边的同学一次就可以了)
3.1 这个包会提供给大家,这个也是参考:
https://blog.csdn.net/m0_37799509/article/details/75570851?utm_source=blogxgwz0
3.2 $ cd joern-0.3.1
再将lib.tar.gz这个包放在joern-0.3.1中
$ tar xfzv lib.tar.gz
4 安装ant
sudo apt-get install ant
5 运行
$ sudo ant
6 出现下图,就说明ant已经OK了,我并没有出现上文博主出现的问题,比较幸运吧!
7 创建符号链接
创建符号链接需要链接joern.jar文件,在6中,我们可以看到在sudo ant后,给出了joern.jar文件的地址,所以我们直接:
alias joern='java -jar /home/shy/joern-0.3.1/bin/joern.jar'
即可
8 安装 python-joern
首先安装依赖:sudo apt-get install python-setuptools python-dev
(在这儿,我重新安装的时候,遇见了新的错误,如下图:
该错误的原因是python2.7的版本不对,需要的是2.7.11的python-dev,而不是python2.7.12的。
解决方法:
1 sudo apt-get install aptitude
2 sudo aptitude install python-dev,注意,这儿第一步先选N,后面的选Y,这样可以对软件进行降级
具体的参考:https://blog.csdn.net/u013182960/article/details/53431460 )
其次:wget https://github.com/fabsx00/python-joern/archive/0.3.1.tar.gz
注意,在这儿,你要是没有删除前面joern的安装包的话,这个包会命名为0.3.1.tar.gz.1,如下图
之后:tar xfzv 0.3.1.tar.gz.1
最后:$ cd python-joern-0.3.1
$ sudo python2 setup.py install
这儿,可能会出现错误
这是因为相关依赖没有安装
运行:
sudo apt-get install python-dev \
build-essential libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev \
python-pip
来自
再运行:sudo python2 setup.py install
即可正常安装
结果:
9 安装joern-tools
首先安装:graphviz(可视化工具)
sudo apt-get install graphviz libgraphviz-dev
之后:
git clone https://github.com/fabsx00/joern-tools
cd joern-tools
sudo python2 setup.py install
10 验证
在joern-tools目录下输入joern-lookup
结果报错:
起初我还以为是gremlin位置问题,后来发现上文中的博主已经给出解决方法了
输入:
sudo pip install py2neo==2.0
原来是py2neo版本问题,最新的4.*版本并不能适应这个,需要重新安装py2neo
之后再joern-tools目录下运行joern-lookup:
到此,已经正常的安装好joern了,这个过程中,对一些库的版本要求比较严格,需要给定版本的库,大家在安装时一定要注意!