一 序
代碼屬性圖是結合AST,控制流圖,數據流圖而形成的新的一種圖示結構,用於在一張圖中綜合藐視程序的運行過程,數據傳遞過程等。(本文僅限學術交流,轉載標明出處),感謝JacksonZyy的安裝分析過程。
二 安裝
首先是官網的安裝方法,如下:
https://joern.readthedocs.io/en/latest/installation.html#system-requirements-and-dependencies(官網的安裝)
其次給出我在網上查找的方法:
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)
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
其次: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
來自 <https://github.com/scrapy/scrapy/issues/2115>
再運行: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了,這個過程中,對一些庫的版本要求比較嚴格,需要給定版本的庫,大家在安裝時一定要注意!