一、准备

1、将测试代码放在/home/test目录下;

 2、将测试数据导入joern

        在/home/SySeVR/joern-0.3.1查看是否存在.joernIndex文件,有的话,需要删除。

         删除之后,将测试数据导入joern:

java -jar /home/SySeVR/joern-0.3.1/bin/joern.jar /home/test/testCode

         开启neo4j数据库:

        直接使用以下命令打开neo4j数据库:

neo4j start

        如果上述命令不可以,跳转到neo4j的bin目录下使用该命令:

         

 

 二、数据切片

        确保你的python版本为python2.7

         如上图,我在执行切片代码的时候,应该用“python2 xxx.py”,而不是“python xxx.py”。

1、get_cfg_relation.py

python2 get_cfg_relation.py

         会出现如下图所示的报错:

         解决方法:

                (1)需要去官网下载python-igraph/0.7.1-post6:

https://pypi.org/project/python-igraph/0.7.1.post6/#filesicon-default.png?t=M85Bhttps://pypi.org/project/python-igraph/0.7.1.post6/#files                (2)安装python-igraph

         会报错显示没有Python.h这个文件或目录:

                解决办法:

apt-get update && upgrade  //更新
apt-get install python2-dev //因为我的python默认指向python3

         完成python2-dev的安装之后,再次跳转到python-igraph目录下,安装python-igraph:

                 python-igraph安装结果:

 

        (3)再次跳转到切片程序目录下,执行:

python2 get_cfg_relation.py

        报错:没有‘cfg_db/testCode’目录。

        解决办法:在/home/test/source2slice目录下创建“cfg_db”这一文件夹。

         最后结果都保存在cfg_db文件夹里。

 2、complete_PDG.py

python2 complete_PDG.py

         解决方法:
                在‘./source2slice’目录下创建pdg_db文件夹

        最后结果都保存在pdg_db文件夹

 3、access_db_operate.py

python2 access_db_operate.py

         解决办法:

                在‘./source2slice’目录下创建"dict_call2cfgNodeID_funcID"文件夹

         最后结果都保存在dict_call2cfgNodeID_funcID文件夹下。

 4、points_get.py

python2 points_get.py 

         这一步输出文件在source2slice目录下,有四个输出文件,分别为:

  • sensifunc_slice_points.pkl
  • pointuse_slice_points.pkl
  • arrayuse_slice_points.pkl
  • integeroverflow_slice_points_new.pkl

 5、extract_df.py

python2 extract_df.py 

         解决方法:

                在“./source2slice”下创建文件夹:(我之前依据创建了C文件夹,所以没有显示“mkdir:已创建目录‘C’”)

 mkdir -pv C/test_data/4 

                在目标文件夹里生成了两个txt文件:

        至此,已经获取了测试数据的切片文件,待续。。。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐