目录
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
参考博客:大神博客
anwenyan@grin:~$ git clone https://github.com/SySeVR/SySeVR.git
重命名,加上时间
anwenyan@grin:~$ mv SySeVR/ SySeVR_2020.6.10/
(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
在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里
问题:
解决:
最后结果:都在pdg_db里
问题:
解决:新建dict_call2cfgNodeID_funcID文件夹
最后结果:都在dict_call2cfgNodeID_funcID文件夹里
直接运行,没有问题
输出结果为:
输出文件在source2slice目录下,有四个输出文件,分别为:
sensifunc_slice_points.pkl
pointuse_slice_points.pkl
arrayuse_slice_points.pkl
integeroverflow_slice_points_new.pkl
错误:
解决:新建那些文件夹
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
这个只有两,估计是测试代码太少的缘故
错误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:运行还是出错了
肯定是因为新建的那两个文件是空文件导致的
不想再改源代码了
用正式数据试一下
至此,测试数据结束....
正式代码运行见下一篇博客!