SySeVR环境复现及测试

1、SySeVR环境配置(上) kali切换中文 kali换源 kali安装并切换Java版本 阅读详情

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

开始切片

1、get_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

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文件:

Sysver论文复现2--切片级别思路与joern、neo4j使用 如果不是按照csv或者pkl文件,大体思路就是分为两类,一类是有漏洞、一类是没有漏洞的。在docker中joern少一个bin文件,我们需要从别的地方替换一个,同样是李珍老师的论文,下载,然后在docker中替换。1.打标签,我们将整个数据集(函数级)分为两类,第一类,有漏洞的,第二类,没有漏洞的。最后进行,打乱,分为训练集和测试集。Sysver中的sard数据集和nvd数据集,有其自己的xml文件和diff文件(为了打标签),2.函数级,先按照他的代码,切为四种切片,然后拼成一个函数,去掉没有用的代码。 阅读详情

相关推荐

4、SySeVR复现——Generating slices

SySeVR复现

qq_55202378的博客 4585

SySeVR复现指南

4、SySeVR复现——Generating slices-优快云博客SySeVR复现_sysevr复现。

qq_51507718的博客 3994

SySeVR论文复现1----使用docker配置环境

对于李珍老师sysver切片项目进行函数级别的复现为了方便使用,而省去复杂环境配置的步骤,我们使用docker对此论文进行复现。需要root权限。

leimeili的博客 1226

SySe复现-----测试 2020.6.10

参考博客:大神博客 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目录下 因为joernIn

weixin_42072280的博客 3368

5、SySeVR复现——Data preprocess(上)

SySeVR复现

qq_55202378的博客 2738

SySeVR-master_SySeVR_

SySeVR源码,用于漏洞挖掘检测,需在linux系统下解压实现

Sysver论文复现4--生成模型输入

例如:第一章 Python 机器学习入门之pandas的使用。

leimeili的博客 616

Python实战:基于PyG和Stable-Baselines3复现柔性车间调度算法(附数据集)

本文提供了一份基于图神经网络与深度强化学习的柔性车间调度实战指南。通过PyTorch Geometric构建异构图表示车间状态,并利用Stable-Baselines3中的PPO算法训练调度智能体,详细介绍了从环境建模、网络设计到训练评估的完整代码实现,帮助开发者构建可复用的工业级智能调度系统。

ansible6ops的博客 608

第12章 代码修复智能助手

随着软件开发规模扩大和项目复杂性增加,代码质量管理成为核心挑战。传统代码缺陷修复依赖开发者经验和手工调试,效率低下且易遗漏问题。在开源项目和大型企业应用中,每天产生海量issue,涵盖功能缺陷、性能瓶颈、安全漏洞等,人工处理难以满足时效性和准确性需求。近年来,大语言模型在代码理解与生成上展现潜力,通过学习海量代码库和文档,能理解代码语义、识别错误模式、生成修复方案。基于此构建的代码修复智能助手,可提升效率、降低成本,为软件工程智能化奠定基础,本章介绍的此类助手可自动化处理代码托管平台的issue,意义重大。

夏天又到了的专栏 33

从零配置到批量处理:FaceFusion 3.1完整使用指南(含hififace_256模型测试)

本文详细介绍了FaceFusion 3.1的完整使用指南,包括环境配置、模型选择(特别是hififace_256模型的深度测试)以及批量处理技巧。通过AI驱动的脸部替换技术,帮助用户高效实现高质量的面部处理,适用于影视制作、广告设计等多种场景。

weixin_29056865的博客 655

DDR4 硬件设计笔记

DDR4-DRAM是第四代支持双倍数据读取,支持随机位置存取的静态存储器。DDR4-DRAM的工作原理。DDR之T拓扑和Fly-by拓扑。DDR的硬件设计。DDR4 PCB设计要点介绍。DDR4之PCB走线间距的串扰评估。DDR4之内存通道(channel)和内存列(rank)。

qq_26815321的博客 1万+

SySeVR中SARD数据集漏洞类型以及对应漏洞代码位置分析

最近看了几篇相关的论文,发现开源的数据集虽然大都来自SARD和NVD,但是每个数据集的组织形式和内容形式都不太一样,加上漏洞种类繁多,最近在复现提取漏洞标签算法时,不知道该如何去匹配到多种漏洞token,目前最简单的方案是让漏洞特征集H},然后再进行字符串逐行逐个单词匹配。但是类似的工作五六年前便已经有人做过,并且和导师讨论确实发现对数据集以及漏洞本身没有一个深刻的理解和认识。SySeVR这篇论文中数据集相对较全面,因此借助这篇论文中数据集进行学习分析,希望可以深入了解漏洞表征形式。

qq_48301637的博客 2241

关于VS2022创建winform窗体后择项或选择工具箱项加载visionPro控件卡住,窗口未响应解决方法

解决winform加载工具箱选择项卡死问题

xiaokiss_的博客 3213

Sysver论文复现3--source2lice切片

首先需要创建cfg_db文件夹(要开启数据库neo4j)至此我们的source2lice结束,即将进入下一个阶段。比如说对于api切片,首先创建process.py文件。如果发生报错,删除No_Vul107这个数据。然后对extract_df.py进行处理。再再再然后重新获取运行joern。这里会报错,我们自己写脚本进行处理。只要我们运行,就可以对文件进行处理。再然后要切到joern中,删除。其次,创建process.sh。首先关闭数据库neo4j。再再然后,删除这个元素。

leimeili的博客 931

一文读懂 SAP Web Dispatcher 配置参考:让 Gateway、OData 与后端服务各走各路

SAP Web Dispatcher在Fiori项目中常被低估,实际上它作为企业系统的HTTP(s)入口,承担着流量分发和安全防护双重职责。该组件通过URL路径规则(如/sap/opu/odata/转发至Gateway系统)实现多系统路由,隐藏后端复杂性,提供统一访问入口。配置要点包括HTTPS参数设置、客户端证书转发、端口定义以及系统冲突处理策略。合理的配置能确保前端统一访问、网络边界清晰可控,同时降低跨团队协作成本。生产环境需根据实际网络架构调整官方示例配置。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 157

详细推导波特图增益和相位曲线

最近因为项目需求,在回看波特图方面的内容。大三那会,《自动控制原理》这本书里面就讲过这些东西,但是那时候总感觉学这些没啥用,反正以后也用不到,对这种课程的重视度不是很高。 工作后发现,只要你从事的是和本专业相关的工作,大学学过的很多理论课程在后面大概率都会用到。曾经那些我们在学校以为用不上的东西,熟不知在后面用处还多着呢。所以啊,仅仅只是我们的以为而已! 现在还在学校的同学,对待《自动控制理论》、《信号与系统》、《通信原理》这样的核心专业课,建议还是好好学习一下,认真听听课。哪怕是考试完以后就会忘掉,但当我

D_Katter的博客 3936

6、SySeVR复现——Data preprocess(下)

SySeVR复现

qq_55202378的博客 2286

GRCNN抓取网络学习2【自制Jacquard数据集训练】

请先完成【机械臂视觉抓取从理论到实战】,这样有利于下面操作的理解!然后第二步是GRCNN抓取网络1【Jacquard数据集等效抓取集制作】,有了自己的数据集输入到GRCNN中是三种文件,接下来就是准备训练GRCNN网络啦!grasps.txtRGB.png本文帮大家根据自制Jacquard数据集训练GRCNN抓取网络,其中包含数据格式的对齐,列举了常见的几种训练方法,相信能坚持到这里的都应该试试顺利了吧!接下来会针对GRCNN调优,期待一下下吧,那就别宁色你的三连。

vor234的博客 2799

SySeVR: A Framework for Using Deep Learning to Detect Software Vulnerabilities(翻译)

深度学习框架检测软件漏洞——翻译记录 深度学习不需要人类专家定义特征 本文首先提出框架SySeVR——基于语法Syntax-based、基于语义Semantics-based和向量表示Vector Representations,侧重于获得能够容纳与漏洞相关的语法和语义信息的程序表示。 基于源代码的静态分析是检测漏洞的很重要方法包括 基于代码相似性:主要检测代码克隆引起的漏洞 和基于模式的方法:人类专家定义特征 深度学习包括:递归神经网络RNN,卷积神经网络CNN深度置信网络DBN(主要应用于图

qq_38217427的博客 2387

小龙虾OpenClaw卸载全攻略,彻底清理缓存和配置,干净无残留!

不想要的小龙虾OpenClaw怎么彻底卸载?🦞本文教你如何彻底的卸载OpenClaw⚡️,Windows/macOS/Linux通用,干净无残留🧹

XiaoqiangClub的博客 314

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

7、SySeVR复现——Deep learning model

SySeVR复现

qq_55202378的博客 2211

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文献阅读09-SySeVR框架-漏洞检测领域首个深度学习应用框架

如果一个语法元素(例如,令牌)出现在易受攻击(例如:非易受攻击的sevc比非易受攻击的sevc出现的频率要高得多。SySeVR-BLSTM可以检测与函数调用、数组使用、指针使用和算术表达式相关的漏洞,在检测库/API函数调用相关漏洞时,与VulDeePecker相比,FPR降低3.4%,FNR降低5.0%对于一个程序中,易受攻击的代码只有部分行,将整个程序区分为多个在语义(数据依赖和控制依赖)上关联的片段,检查这个片段是否是易受攻击的。中的所有节点都满足(i)节点可能属于一个或多个PDG;

m0_51173898的博客 2245

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SySeVR复现

ningan@ubuntu:~/JOERN/usr/Neo4j/neo4j-community-2.1.8$ ls bin conf hs_err_pid3325.log LICENSES.txt NOTICE.txt README.txt UPGRADE.txt CHANGES.txt data lib LICENSE.txt ...

weixin_42072280的博客 4025

SySeVR:使用深度学习来检测软件漏洞

SySeVR:使用深度学习检测软件漏洞

m0_56222998的博客 1164

python学习记录(一)

1.python为动态语言,代码不会被编译,由解释器程序来解释执行。2.为什么选择python1.可读性强 2.学习曲线平滑 3.简洁的语法 3.python2与python31.python2为过去式,python3才是未来。 2.最明显的区别为调用print的方式,最重要的区别为处理Unicode字符的方式 4.python 环境变量的设置 默认情况下,windows安装python之后不

hbltjdw的专栏 300

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

weixin_53637133的博客 177
下一篇: VulDeePecker复现
在下跳跳
博客等级 码龄5年 152粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

在下跳跳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值