1.实验清单
操作系统版本: kali-linux-2022.3
软件版本:在github上提供的软件:joern-0.3.1、neo4j-2.1.5、ant-1.9.14、python-joern-0.3.1、py2neo-2.0,python2和python3的版本均用kali自带,jdk用jdk1.7.0_07.
2.虚拟机搭建
参考文章:kali搭建,在官网下载kali,用virtual box的注册功能,选择蓝色小盒子图标文件。然后就可以直接打开kali,账号密码都为kali。
1.kali换源
可以选用:
| #中科大 |
| sudo -i |
2.查看python版本
因为SySeVR系统需要python3和python2(joern-0.3.1的运行环境为python2.7)kali已经安装过python2和python3了。
| python2 -V |
3.安装JDK
本系统所用的neo4j对应的JDK版本为1.7。
选择直接下载 jdk-7u7-linux-x64.tar.gz。
解压文件:
| sudo tar -zxvf jdk-7u7-linux-x64.tar.gz |
将jdk目录复制到/usr目录下:
| cp -r jdk1.7.0_07 /usr |
修改环境变量:
| vim /etc/zsh/zshrc |
红色部分是下载的java的地址,按照自己下载的版本配置。
更新配置环境:
| source /etc/zsh/zshrc |
安装注册JDK,目的是让系统知道我们已经安装了jdk1.7.0_07:
| update-alternatives --install /usr/bin/java java /usr/jdk1.7.0_07/bin/java 1 |
切换java版本:
| update-alternatives --config java |
手动选择1.7版本的java
跳转到./jdk1.7.0_7/bin/目录,在本目录下查看java和javac的版本,中间需要改文件权限;
| ./java -version //查看java版本 |
跳转目录查看java版本:
| java -version |
如果显示找不到java时路径可能是出现了问题,请先检查路径。
4.安装neo4j
将从github上下载的文件传到虚拟机上,将解压出来的SySeVR文件夹移动到/home下(保证与源码相同的路径):
| mv SySeVR /home/ |
修改环境变量:
| vim /etc/zsh/zshrc |
更新配置文件:
| source /etc/zsh/zshrc |
进入neo4j的conf目录,修改neo4j-server.properties:
| vim neo4j-server.properties |
确保location指向./joernIndex文件。如果按照之前的配置路径应该是相同的。
进入bin文件夹,修改neo4j的权限,开启neo4j:
| chmod neo4j //修改权限 |
如果报错是可能是路径问题,检查路径。
打开链接:

5.安装ant
设置环境变量:
| vim /etc/zsh/zshrc |
更新环境:
| source /etc/zsh/zshrc |
查看ant版本:
| ant -version |
6.安装joern
设置环境变量并更新:
| vim /etc/zsh/zshrc |
在joern-0.3.1文件下,输入"ant" :
| cd /home/SySeVR/joern-0.3.1 |
在用一个目录下,输入"ant tools":
| ant tools |
7.py2neo安装
| cd /home/SySeVR/softdir/py2neo-py2neo-2.0 |
8.安装python-joern-0.3.1
| cd /home/SySeVR/softdir/python-joern-0.3.1 |
9.验证joern是否安装成功
因为新版的压缩包里,没joern-tool这个安装包,因此再joern-tools目录下用joern-lookup不可行。
查看joern目录下的全部文件:
| ls -all |
删除.joernIndex文件,因为你每次进行新的实验,都需要将该文件删除,这个文件是joern与neo4j之间的"桥梁"。
| rm -rf .joernIndex |
将测试数据导入joern:
| java -jar /home/SySeVR/joern-0.3.1/bin/joern.jar /home/SySeVR/testcode |
参考文章:
3.测试
使用github上文件本身提供的测试样例。
将测试数据导入joern:
在/home/SySeVR/joern-0.3.1查看是否存在.joernIndex文件,有的话,需要删除。
| rm -rf .joernIndex |
删除之后,将测试数据导入joern:
| java -jar /home/SySeVR/joern-0.3.1/bin/joern.jar /home/test/testCode |
查看.JoernIndex

打开neo4j
| neo4j start |
开始切片
1、get_cfg_relation.py
| cd source2slice |
bug1:报错显示找不到igraph库
| pip2 install python-igraph==0.7.1.post6 |
报错显示没有c core
下载igraph-0.7.1
在https://github.com/igraph/igraph/releases?page=3下载igraph-0.7.1.tar.gz
解压缩:
| tar -zxvf igraph-0.7.1.tar.gz |
安装:
| cd igraph-0.7.1 |
重新下载python-igraph
| pip2 install -v python-igraph==0.7.1.post6 --install-option="--c-core-url=home/kali/igraph-0.7.1.tar.gz" |
bug2:python 无法找到 libigraph.so.0 这个共享库文件
- 找到 libigraph.so.0 这个文件
| sudo find / -name libigraph.so.0 |
- 通过命令将其添加到库路径中
| echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf |
- 重新运行脚本
bug3:没有‘cfg_db/testCode’目录。
| mkdir cfg_db |
2、complete_PDG.py
| python2 complete_PDG.py |
bug1:没有pdg_db/testCode文件夹
解决方法:
| mkdir pdg_db |
3、access_db_operate.py
| python2 access_db_operate.py |
bug1:报错:没有dict_call2cfgNodeID_funcID/testCode文件夹
解决方法:
| mkdir 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 |
bug1:No such file or directory: C/test_data/4/api_slices.txt
解决方法:
| mkdir -pv C/test_data/4 |
在目标文件夹里生成了两个txt文件:

本文详细介绍了在Kali Linux环境下,搭建SySeVR系统的过程,包括虚拟机搭建、Python版本检查、JDK1.7安装、Neo4j配置与启动、Ant、Joern及其相关模块的安装,以及测试阶段遇到的问题与解决方案,如igraph库的安装与依赖问题等。
2161

被折叠的 条评论
为什么被折叠?



