joern安装

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

 纪念一下花费四天才安装好的joern

目录

 

1 为什么要安装joern?

2 joern工具简介

3 joern安装步骤及可能遇到的问题

3.1 预准备

3.2 joern的系统需求和依赖

3.3 安装joern

4 joern的使用


 

1 为什么要安装joern?

运行一个项目,该项目的数据预处理要求把C/C++源码转换为代码属性图(不能跳过这一步???)

 

2 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进行。(此处借鉴https://blog.csdn.net/m0_37924639/article/details/78783592

 

3 joern安装步骤及可能遇到的问题

安装joern之前,建议仔细查看官方文档的安装教程

 

3.1 预准备

  1. 操作系统:linux

  2. python环境:2.7(注意:如果你有多个python版本,可以上网查找切换python版本的方法——可能会用得到)

  3. 配置“System Settings”中的“Software&Update”的“Download from:”

    1. 此时你有两种选择:

      1. 选择"Server for United States"(优点:包全都有;缺点:需要科学上网,否则下载速度很慢)

      2. 选择国内的某个镜像源(优点:下载速度快;缺点:有一些包可能找不到,还得科学上网下载)

 

3.2 joern的系统需求和依赖

  1. 操作系统:建议在linux或者mac中安装joern,windows下鲜有人安装joern(但是官方说只要系统支持jvm,就可以运行joern)

  2. python环境:2.7(重点!!!)

  3. 网络建议:全程“科学上网”

  4. 软件需求:

    1. java virtual machine 1.7:

      1. jdk1.7安装方法,参见如下链接:

      2. https://www.cnblogs.com/HHgy/p/7560561.html

      3. 方法二:废弃!!!此方法安装的jdk不能被系统正确的识别

        1. 即安装jdk,先检查一下linux中有没有装过jdk:

         打开终端,输入命令
         java -version

         

        1. 去官网找适合你的系统的版本,此处提供jdk7下载链接: https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u80-oth-JPR

        2. linux下如何安装jdk7?参见如下链接:http://jingyan.baidu.com/article/e2284b2b61a2efe2e6118d39.html(此链接中也包括环境变量的配置,请仔细查看)

        3. 注意在环境变量里面JAVA_HOME路径得是自己安装包所在路径。

        4. 安装成功,截图如下:

        5. 注意:在安装成功后,查看jdk文件夹里的内容,有可能会少一些文件(原因:在linux中解压tar.gz时,一些文件不能正确的解压出来,导致这些文件会消失)

          1. 解决方法:在windows下提前解压好tar.gz文件,得到jdk文件夹,将该文件夹覆盖linux中残缺的jdk文件

          2. windows中jdk内含文件,截图如下:

          1. linux解压出来的jdk文件夹内容,截图如下:

          1. 可以看到linux中的jdk文件夹中少了很多文件,请补全这些文件,否则之后使用ant时会报错

    2. Neo4j 2.1.5(好像不安装neo4j 2.1.5也没问题,只要配置neo4j-community-2.1.5?大家可以尝试一下)(P.S.我下载neo4j 2.1.5花了6h):

      1. 因为2.1.5版本太老,官网找不到安装包,因此只能使用apt-get install安装,具体安装命令如下所示:

      2.  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
         ​
      3. 注意:下载速度很慢,一般至少需要一个小时(而且还会由于下载速度过慢而中断很多次,建议每隔十分钟看看下载进度),下载时可以做点其他事情

         //如果中断了,则运行如下命令
         sudo apt-get install neo4j=2.1.5 --fix-missing
      4. 下载可能遇到的问题:

        1. 问题1:

          1.  终端报错:
             GnuTLS recv error (-9): A TLS packet with unexpected length was received.
             ​
             之后,再尝试一次,有可能会提示:
             Back-end Server is at capability
          2. 解决方案:重启一下,等待服务器空闲,再尝试下载

        2. 问题2:

        3.  终端报错:
           Internal Error, ordering was unable to handle the media swap
          1. 解决方案:

             sudo rm -fR /var/lib/apt/lists/*
             sudo apt-get update
             ​
             尝试重新运行如下命令:
             sudo apt-get install neo4j

           

    3. 安装完成截图:

    4. gremlin

      1. 听前辈说,安装很麻烦,所以前辈留下了一个已经配置好gremlin的数据库neo4j,见neo4j-community-2.1.8.zip。解压,直接可用(具体怎么用可以看这篇博客:https://blog.csdn.net/water_likly/article/details/89378623)(建议把neo4j-community-2.1.8放到/usr/Neo4j/文件夹中,解压到其他文件夹也可以)

    5. 如何判断gremlin安装成功?等joern完全安装之后判断。

 

3.3 安装joern

  1. 按照官网的安装步骤,按顺序!!!,安装即可。

  2. 此为官网安装教程地址:http://joern.readthedocs.io/en/latest/installation.html

  3. Building joern

    1. 可能遇到的问题:

    2. 问题1:未安装ant

      1. 解决方案:

         sudo apt-get install ant
    3. 问题2:如果你更改了jdk的版本,建议重新build,即重新执行命令ant

    4. 由于一些文件的下载较慢,前辈给大家提供了lib.tar.gz安装包,但是接下来的一些文件下载也挺慢的,所以耐心等待下载完成吧

    5. 结果:ant成功之后,会在/joern-0.3.1/bin文件夹中生成一个文件joern.jar(这个文件很重要)

    6.  build成功:终端会显示
       BUILD SUCCESSFUL
       否则,失败会显示:
       BUILD FAILURE
       (请仔细查看报错信息,先分析报错信息,再想解决方案)

       

  4. 注意:

    1. 安装python-joern之前,执行如下命令,安装py2neo(2.0)

       pip2 install py2neo==2.0
       // 注意:一定是py2neo2.0版本的,否则之后运行joern-lookup的时候会提示找不到对应的module
    2. 安装py2neo可能出现的问题:

      1. 问题1:

        1. 问题描述:

        2. TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

        3. 问题分析:由于没有开代理(访问外网),因此在执行pip install py2neo时,pip由于没能一次连接上服务器,准备retry,再次连接。但是因为'retry.py'有问题,所以在尝试重连时会报错

        4. 解决方案:更换pip的镜像源,让本地无阻碍的连上服务器端

        5.  1、在用户目录下(/home/XXX)创建.pip文件夹,并创建pip.conf文件
               mkdir .pip
               cd .pip
               touch pip.conf
               sudo gedit pip.conf
           ​
           2、在pip.conf下输入:(注意:这里更换的是阿里云镜像源)
           ​
                [global]
           ​
                trusted-host = mirrors.aliyun.com
           ​
                index-url = http://mirrors.aliyun.com/pypi/simple
           ​
           3、 sudo apt-get  update

          最后再次使用pip install py2neo,国内镜像源有这个包,下载速度挺快的

  5. python-joern

    1. 运行sudo python2 setup.py install可能遇到的问题:

    2. 问题1:python2.7没有装setuptools

      1. 解决方案:

      2.  wget -q http://peak.telecommunity.com/dist/ez_setup.py
         ​
         wget  http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c8-py2.4.egg
         ​
         python ez_setup.py
         ​
         //注意:第三步的url是根据第二步得到的url.
         ​
         //关键:是要准备好2个东西:ez_setup.py和setuptools-0.6c8-py2.4.egg
    3. 问题2:需要依赖项:py2neo-gremlin(国内镜像源没有这个包!!!)

      1. 问题描述: https://github.com/fabsx00/py2neo-gremlin/tarball/master/#egg=py2neo-gremlin-0.1 需要科学上网

      2. 解决方案1:使用pip安装py2neo-gremlin

        1. 出现问题:HTTPError: 404 Client Error: Not Found for url: http://mirrors.aliyun.com/pypi/simple/py2neo-gremlin/

        2. 问题分析:国内没有同步资源包,应该使用国外的源(但是使用国外的源要科学上网!!!)

        3. 解决方案:使用解决方案2,如下所示

      3. 解决方案2:建议科学上网,先把这个tar.gz压缩包下下来,再解压,cd到该文件夹内,运行如下命令:

         sudo python2 setup.py install

        然后再运行

         cd python-joern-0.3.1
         sudo python2 setup.py install

         

    4. 问题3:待续

  6. joern-tools

    1. 运行sudo python2 setup.py install可能遇到的问题:

    2. 问题1:

      1. 问题描述:依赖项:chardet(不知道国内镜像源有没有)下载过慢

      2. 解决方案:退出当前进程,下载对应的whl文件,执行命令

         pip install chardet-3.0.4-py2.-y3-noe-any.whl

        安装好这个包之后,再运行sudo python2 setup.py install

    3. 问题2:

      1. 问题描述:依赖项:pygraphviz(国内镜像源有这个包)下载过慢

      2. 解决方案:执行命令

         pip install pygraphviz

        安装好这个包之后,再运行sudo python2 setup.py install

     

  7. 配置完所有的内容后,在joern-tools目录下,输入如下命令,可查验是否安装成功

     joern-lookup
    1. 注意:一定要在python2.7环境下执行该命令,否则可能会报错:no module 'xxx'

  8. 安装成功截图(花了四天终于装好了):

  9. 如果遇到其他问题,建议多问问有linux使用经验的人,或者去博客查找解决方案

4 joern的使用

官方文档为全英,建议有一定的英语基础的人去看官方文档,英语基础不太好的人可以去博客找找教程

或者看我的下一篇博客呀!

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值