SySeVR环境复现及测试

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

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换源

可以选用:

#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
 
#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
 
#浙大
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

sudo -i
vim /etc/apt/sources.list //
编辑源的文件

2.查看python版本

因为SySeVR系统需要python3和python2(joern-0.3.1的运行环境为python2.7)kali已经安装过python2和python3了。

python2 -V
Python 2.7.18

python -V
Python 3.11.2

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

cd /usr

修改环境变量:

vim /etc/zsh/zshrc

#java install
export JAVA_HOME=/usr/jdk1.7.0_07
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATN/bin:$PATH

红色部分是下载的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
update-alternatives  --install /usr/bin/javac javac /usr/jdk1.7.0_07/bin/javac 1

切换java版本:

update-alternatives  --config java

手动选择1.7版本的java

跳转到./jdk1.7.0_7/bin/目录,在本目录下查看java和javac的版本,中间需要改文件权限;

./java -version //查看java版本
chmod 777 java  //修改java文件权限
./javac -version
chmod 777 javac

跳转目录查看java版本:

java -version
javac -version

如果显示找不到java时路径可能是出现了问题,请先检查路径。

4.安装neo4j

将从github上下载的文件传到虚拟机上,将解压出来的SySeVR文件夹移动到/home下(保证与源码相同的路径):

mv SySeVR /home/
cd /home/SySeVR
ls

修改环境变量:

vim /etc/zsh/zshrc
 
#install neo4j
export NEO4J_HOME=/home/SySeVR/neo4j
export PATH=$PATH/bin:$PATH

更新配置文件:

source /etc/zsh/zshrc

进入neo4j的conf目录,修改neo4j-server.properties:

vim neo4j-server.properties

确保location指向./joernIndex文件。如果按照之前的配置路径应该是相同的。

进入bin文件夹,修改neo4j的权限,开启neo4j:

chmod neo4j //修改权限
./neo4j start //运行neo4j

如果报错是可能是路径问题,检查路径。

打开链接:

5.安装ant

设置环境变量:

vim /etc/zsh/zshrc
 
export ANT_HOME=/home/SySeVR/softdir/apache-ant-1.9.14
expoer PATH=$ANT_HOME/bin:$PATH

更新环境:

source /etc/zsh/zshrc

查看ant版本:

ant -version

6.安装joern

设置环境变量并更新:

vim /etc/zsh/zshrc

export JOERN_HOME=/home/SySeVR/joern-0.3.1
source /etc/zsh/zshrc

 在joern-0.3.1文件下,输入"ant" :

cd /home/SySeVR/joern-0.3.1
ant

在用一个目录下,输入"ant tools":

ant tools

7.py2neo安装

cd /home/SySeVR/softdir/py2neo-py2neo-2.0
python2 setup.py install

8.安装python-joern-0.3.1

cd /home/SySeVR/softdir/python-joern-0.3.1
python2 setup.py install

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

参考文章:

SySeVR环境配置SySeVR环境配置下

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

开始切片

1get_cfg_relation.py

cd source2slice
python2 get_cfg_relation.py

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
./configure
make
make install

重新下载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 这个共享库文件

  1. 找到 libigraph.so.0 这个文件

sudo find / -name libigraph.so.0

  1. 通过命令将其添加到库路径中

echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf 
#
将 /usr/local/lib 添加到 /etc/ld.so.conf 文件的末尾
sudo ldconfig         #更新库路径

  1. 重新运行脚本

bug3:没有‘cfg_db/testCode’目录。

mkdir cfg_db

2complete_PDG.py

python2 complete_PDG.py

bug1:没有pdg_db/testCode文件夹

解决方法:

mkdir pdg_db

3access_db_operate.py

python2 access_db_operate.py

bug1:报错:没有dict_call2cfgNodeID_funcID/testCode文件夹

解决方法:

mkdir dict_call2cfgNodeID_funcID

4points_get.py

python2 points_get.py

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

sensifunc_slice_points.pkl

pointuse_slice_points.pkl

arrayuse_slice_points.pkl

integeroverflow_slice_points_new.pkl

5extract_df.py

python2 extract_df.py

bug1No such file or directory: C/test_data/4/api_slices.txt

解决方法:

 mkdir -pv C/test_data/4

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

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下跳跳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值