目录

3.1 第一部分:数据切片——测试

0. 准备项目文件

1.第一步:导入测试数据

2.第二步:get_cfg_relation.py

3.第三步:complete_PDG.py

4.第四步:python access_db_operate.py

5.第五步:python  points_get.py

6.第六步:python  extract_df.py

7.第七步:python  make_label.py


参考博客:大神博客

3.1 第一部分:数据切片——测试

0. 准备项目文件

anwenyan@grin:~$ git clone https://github.com/SySeVR/SySeVR.git

重命名,加上时间

anwenyan@grin:~$ mv SySeVR/ SySeVR_2020.6.10/

1.第一步:导入测试数据

(1)如果之前运行过joern,在导入之前需要删除joernIndex,即要删除之前导入的数据(必须要在joern-0.3.1目录下 因为joernIndex在此目录下)

anwenyan@grin:~/JOERN/joern-0.3.1$ sudo rm -rf .joernIndex/

(2)将测试数据(安装joern的测试数据)放入SySe文件夹中:

anwenyan@grin:~/JOERN/joern-0.3.1$ cp -r testCode/ /home/anwenyan/SySeVR_2020.6.10

(3)导入测试数据:

sudo java -jar /home/anwenyan/JOERN/joern-0.3.1/bin/joern.jar /home/anwenyan/SySeVR_2020.6.10/testCode

(4)开启neo4j服务器:

anwenyan@grin:~/JOERN/usr/Neo4j/neo4j-community-2.1.8/bin$ sudo ./neo4j console

2.第二步:get_cfg_relation.py

在implementation/source2slice/文件夹中打开终端,执行命令:

 anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice$ python get_cfg_relation.py # 请运行该命令前,检查一下当前环境是否是python2.7

(1)问题1:如下

解决:根据大神博客的分析,直接安装python-igraph

anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice$  sudo apt-get install python-igraph

安装成功后,再次运行:python get_cfg_relation.py

(2)问题2:如下

解决:

anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice$ mkdir cfg_db

再次运行,成功


 

最后结果:都在cfg_db里

 

3.第三步:complete_PDG.py

问题:

解决:

最后结果:都在pdg_db里

4.第四步:python access_db_operate.py

问题:

解决:新建dict_call2cfgNodeID_funcID文件夹

最后结果:都在dict_call2cfgNodeID_funcID文件夹里

 

5.第五步:python  points_get.py

直接运行,没有问题

输出结果为:

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

sensifunc_slice_points.pkl

pointuse_slice_points.pkl

arrayuse_slice_points.pkl

integeroverflow_slice_points_new.pkl
 

6.第六步:python  extract_df.py

错误:

解决:新建那些文件夹

anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice$ mkdir -pv C/test_data/4

再次运行:

 

输出结果:

理论上是有4个txt文件的

api_slices.txt

pointersuse_slices.txt

arraysuse_slices.txt

integeroverflow_slices.txt

 

这个只有两,估计是测试代码太少的缘故

 

7.第七步:python  make_label.py

错误1:

重新修改了缩进  再次运行

 

错误2:

自己想把上一步缺的两个都补上

anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice/C/test_data/4$ touch arraysuse_slices.txt
anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice/C/test_data/4$ touch integeroverflow_slices.txt
anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice/C/test_data/4$ ll
total 24
drwxrwxr-x 2 anwenyan anwenyan 4096 6月  10 11:12 ./
drwxrwxr-x 3 anwenyan anwenyan 4096 6月  10 10:57 ../
-rw-rw-r-- 1 anwenyan anwenyan  612 6月  10 11:07 api_slices_label.pkl
-rw-rw-r-- 1 anwenyan anwenyan  382 6月  10 10:57 api_slices.txt
-rw-rw-r-- 1 anwenyan anwenyan   18 6月  10 11:07 api_slices_vulline.pkl
-rw-rw-r-- 1 anwenyan anwenyan    0 6月  10 11:11 arraysuse_slices.txt
-rw-rw-r-- 1 anwenyan anwenyan    0 6月  10 11:12 integeroverflow_slices.txt
-rw-rw-r-- 1 anwenyan anwenyan  586 6月  10 10:57 pointersuse_slices.txt
anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice/C/test_data/4$ sudo rm -rf api_slices_label.pkl 
anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice/C/test_data/4$ sudo rm -rf api_slices_vulline.pkl 
anwenyan@grin:~/SySeVR_2020.6.10/Implementation/source2slice/C/test_data/4$ 

错误3:运行还是出错了

肯定是因为新建的那两个文件是空文件导致的

不想再改源代码了

用正式数据试一下

至此,测试数据结束....

 

正式代码运行见下一篇博客!

 

 

 

 

 

 

 

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐