一、准备
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/#fileshttps://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文件:
至此,已经获取了测试数据的切片文件,待续。。。