自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿航的博客

热爱生活

  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 C/C++漏洞检测数据集汇总

漏洞检测这个方向最近几年尤为热门,尤其是与深度学习技术相结合的研究,同时一些公开可用的数据集的出现也进一步推动了这些技术的发展。本篇文章总结归纳了目前在 C/C++ 源代码漏洞检测方向的一些公开数据集以及相关文献。

2024-09-13 21:36:15 1198 4

原创 关于 Embedding 的个人粗略见解

首先举一个简单的例子:我爱吃饭。如何将 “我爱吃饭” 这句话转化为可供神经网络输入的数值向量呢?最终 “我爱吃饭” 这句话就被编码为一个特征矩阵,且这个矩阵唯一表示这句话。为了解决上述问题,Embedding(嵌入层)随之而来。Embedding,在某种程度上可以理解为,就是用来降维的,而降维的原理就是矩阵乘法。

2024-09-13 11:00:54 671

原创 DeepDFA: 受控制流分析驱动的有效深度漏洞检测

文中提出了用于漏洞检测的高效图学习框架和嵌入技术 DeepDFA。通过抽象数据流嵌入利用数据流分析中的位向量思想,并整合了语义特征中的数据使用模式:常用的 API 调用、操作、常量和数据类型,这些都有可能捕捉到漏洞的成因。DeepDFA 使用类似的消息传递算法模拟数据流分析的 Kildall 方法。实验结果表明,DeepDFA 非常高效。它只用了 9 分钟就完成了训练,只用了 50 个漏洞示例就实现了最高性能。同时,它的性能仍然优于所有非 Transformer 基线,并且在所有模型中泛化效果最好。

2024-09-05 16:53:43 1082

原创 特征向量可视化方法介绍

在最近的研究中,实验需要结合可视化进行解释分析,于是大致上了解了下目前一些特征可视化的工具,主要分为四种类型:热力图、散点图、线性图和雷达图,并将相应的基础绘制方法做一个简单的总结。

2024-08-07 09:14:37 842

原创 深度学习可解释性方法的一些概念

理解和解释深度学习模型的决策过程和原理。

2024-06-24 10:48:11 497

原创 TXL编程语言环境安装

TXL(Tree Transformation Language)是一种专门用于源代码分析和转换的编程语言。它基于树形结构,可以帮助开发人员进行各种代码重构、代码生成、语法转换等操作。TXL具有强大的模式匹配和模式替换功能,因此在软件工程和编程语言研究领域得到广泛应用。例如,可以用TXL来自动化重构工作、实现编程语言之间的转换,或者进行源代码的静态分析等。

2024-06-24 10:20:21 269

原创 利用SHAP算法解释BERT模型的输出

从上扒下来代码。

2024-06-24 10:17:13 548

原创 连接Huggingface报requests.exceptions.SSLError错误

最近在学习使用算法解释 BERT 模型的输出结果,然而在从 Huggingface 上导入模型和数据集的过程中出现了网络连接相关的错误,本文用于记录错误类型和解决错误的方法。

2024-06-19 22:13:39 737

原创 LineVul实验复现及相关问题

最近在复现 LineVul 这篇文章的实验,本文主要用于简化文章复现流程和记录复现过程中出现的问题。

2024-05-07 12:32:19 463 4

原创 LineVul: 基于Transformer的行号级漏洞预测

给定一个被 LineVul 预测为易受攻击的函数,利用 Transformer 架构内的自注意力机制来定位易受攻击的代码行,从而执行号级的漏洞定位。对预测贡献最大的令牌(token)很可能就是易受攻击的令牌,对于函数中的每个子词令牌,总结 12 个 Transformer 编码器块中其对应的自注意力得分。Initial False Alarm(IFA):安全分析人员需要检查的错误预测行(即,错误地预测为易受攻击或错误警报的非易受攻击行)的数量,直到找到给定函数的第一个实际易受攻击行。

2024-04-17 23:06:56 1057 1

原创 基于汇编代码和源代码融合的漏洞检测系统

基本定义:定义1(源代码切片)。源代码切片Si是一个语义相关的多行源代码的片段,表示为Si=(si1si2si3,…,sin),其中sij(1 ≤j≤n)是Si中的第j行。定义2(汇编代码切片)。汇编代码切片Di是一个语义相关的多行汇编代码片段,表示为Di=(di1di2di3,…,din),其中dij(1 ≤ j ≤ n)是Di中的第j行。该系统分为训练和测试两个阶段。源代码处理。根据漏洞候选特征提取源代码切片,添加标签。

2024-04-17 15:16:59 800 2

原创 AMPLE: 基于图简化和增强图表征学习的漏洞检测

文中提出了一种新颖的漏洞检测框架 AMPLE,它具有图简化和增强图表征学习功能。AMPLE 可以缩小代码结构图的节点数量,从而减少节点之间的距离。同时结合边缘类型来增强局部节点的表示,以应对节点表示中更多的异构关系。通过捕捉远处图节点之间的关系来获取图的全局信息。与最先进的基于深度学习的方法相比,AMPLE 在所有数据集上的漏洞检测性能都有显著提高,F1 分数提高了 7.64%-199.81%。

2024-04-17 14:51:35 1175 2

原创 VulBG: 构建行为图加强基于深度学习的漏洞检测模型

文中提出了一种新方法,它可以提取函数的行为,然后构建行为图来表示不同函数之间的联系。设计并实现了 VulBG,通过将行为图与其他基于 DL 的 VD 方法相结合来提高漏洞检测性能。在两个真实世界数据集上的评估结果表明,行为图本身就足以胜任漏洞检测工作,且 可以进一步有效提高不同类型基于 DL 的 VD 方法(即 TextCNN、ASTGRU、CodeBERT、Devign 和 VulCNN)的整体性能。

2024-04-16 20:30:30 1278 2

原创 从汇编代码理解数组越界访问漏洞

根据上述示例可以发现,通过数组越界来覆盖函数的返回地址可以更改程序的执行流程。同样地,攻击者可以填写存放恶意代码的地址,从而引导函数func1去执行该恶意代码。因此,在编写代码中对数组做边界检查尤为重要。

2024-04-16 15:39:06 1539

原创 Sharing More and Checking Less:SaTC

文章提出了一个新的静态污点检测解决方案SaTC,用于有效检测嵌入式设备提供的网络服务中的安全漏洞。

2022-11-10 14:10:39 1162 2

原创 VulDeeLocator: 基于深度学习的细粒度漏洞检测器

这篇文章提出了一种可以同时实现高检测能力和高定位精度的漏洞检测器VulDeeLocator

2022-11-04 22:10:06 1721

原创 Devign:通过学习综合程序语义有效识别漏洞

这篇文章提出了一种基于图神经网络的通用模型Devign,通过学习丰富的代码语义集以进行图级分类

2022-11-04 22:01:22 1961 1

原创 BVDetector: 基于程序切片的二进制代码漏洞智能检测系统

提出了BVDetector和二进制程序的细粒度表示,并引入深度学习技术来智能检测漏洞。

2022-09-18 21:12:56 1410

原创 wordpress博客评论框添加背景图片

今天突然发现自己的wordpress评论框空荡荡的,感觉很不美观。下面将通过几行css代码给评论框添加背景图片,使其更加生动。

2022-09-15 09:53:28 348

原创 基于语义学习的物联网设备跨平台二进制漏洞搜索

物联网的快速发展引发了比以往更多的安全需求,尤其是在物联网设备的漏洞检测方面。

2022-09-13 09:28:25 2712

原创 为wordpress文章添加评论验证功能-纯代码实现

通过纯代码的方式实现为wordpress站点添加评论验证功能,用于反垃圾评论!

2022-09-10 09:29:40 715

原创 HyVulDect: 基于图神经网络的混合语义漏洞挖掘系统

软件程序趋于庞大和复杂,软件漏洞成为计算机安全的主要威胁之一。开源软件的发展使得源代码漏洞检测变得越来越关键。传统的漏洞检测方法由于假阳率和假阴率较高,无法满足复杂软件的分析需求。提出了一个基于混合语义的图神经网络漏洞挖掘系统HyVulDect。该系统构建了一个复合语义的代码属性图来表示代码,使用门控图神经网络提取深层语义信息。利用污点分析提取污点传播链,并使用BiLSTM模型获取上下文的token级别的特征,最后使用分类器对融合特征进行分类。同时,加入双重注意力机制,使得模型能够关注与漏洞相关的代码。

2022-09-07 13:45:48 1549 2

原创 深度学习的一些定义

学习率:​ 将输出误差反向传播给网络参数,以此来拟合样本的输出。本质上是最优化的一个过程,逐步趋向于最优解。但是每一次更新参数利用多少误差,就需要通过一个参数来控制,这个参数就是学习率(Learning rate),也称为步长。<UNK>: 低频词或未在词表中的词<PAD>: 补全字符什么是深度学习里的Embedding?​ 这个概念在深度学习领域最原初的切入点是所谓的Manifold Hypothesis(流形假设)。流形假设是指“自然的原始数据是低维的流形嵌入于(e

2022-02-23 12:03:42 990 1

原创 神经网络训练中的train loss, test loss问题

**train loss 不断下降,dev(或test) loss不断下降:**说明网络仍在学习。**train loss 不断下降,dev(或test) loss趋于不变:**说明网络过拟合。**train loss 趋于不变,dev(或test) loss不断下降:**说明数据集100%有问题。**train loss 趋于不变,dev(或test) loss趋于不变:**说明学习遇到瓶颈,需要减小学习率或批量数目,或者是数据集有问题(数据集标注错误数据比较多)。**train loss 不断.

2022-02-23 12:02:16 2163

原创 Joern的安装与使用

一.前言最近在研究C/C++源码的漏洞挖掘,需要用到Joern工具将源码转换为图来分析,于是开始寻找关于Joern的安装教程。首先是按照别人的博客安装,发现大部分依赖库都是远古版本,根本安装不了,于是找官方教程,找到了一个官方文档(准确来说应该是旧的官方文档,文档底部显示2014年),安装的版本为joern-0.3.1,安装过程巨麻烦,且同样存在依赖库找不到的问题。于是就想写下这篇博客,初衷就是希望大家在安装Joern时可以少走弯路,避免我踩过的坑,减少不必要的时间浪费!二.关于Joern的简介Joe

2021-11-26 16:15:19 3339 1

原创 基于代码属性图和Bi-GRU的软件脆弱性检测方法

一.摘要​提出了一种基于代码属性图和Bi-GRU的软件脆弱性检测方法。该方法通过从函数的代码属性图中提取出抽象语法树序列、控制流图序列作为函数表征的表征方式,减少代码表征过程中的信息的损失,并通过选取Bi-GRU来构建特征提取模型,提高对脆弱性代码的特征提取能力。实验结果表明,与以抽象语法树为表征方式的方法相比,该方法最大可提高35%的精确率和22%的召回率,可改善面向多个软件源代码混合的真实数据集的脆弱性检测效果,有效降低误报率和漏报率。二.本文贡献提出了一种基于代码属性图的软件脆弱性智能检测方法

2021-11-22 16:06:25 5758 2

原创 基于BiLSTM 模型的漏洞检测

基于BiLSTM 模型的漏洞检测一.摘要​ 首先从源代码中提取方法体,形成方法集;为方法集中的每个方法构建抽象语法树,借助抽象语法树抽取方法中的语句,形成语句集;替换语句集中程序员自定义的变量名、方法名及字符串,并为每条语句分配一个独立的节点编号,形成节点集。其次,运用数据流和控制流分析提取节点间的数据依赖和控制依赖关系。然后,将从方法体中提取的节点集、节点间的数据依赖关系以及控制依赖关系组合成方法对应的特征表示,并运用one-hot编码进一步将其处理为特征矩阵。最后,为每个矩阵贴上是否含有漏洞的标签

2021-11-19 21:17:58 4593

原创 缓冲区溢出漏洞分析技术研究进展

缓冲区溢出漏洞分析技术研究进展一.缓冲区溢出攻击步骤:注入攻击代码跳转到攻击代码(核心环节)执行攻击代码二.缓冲区溢出按照所攻击对象的不同可分为 3 类破坏栈数据​ 改变 RETADDR 的值,使其存放已经注入到栈中的攻击代码的地址或者是代码区中某些具有特权的系统函数地址(比如 system)。破坏堆数据更改类函数指针三.缓冲区溢出漏洞分析技术漏洞自动检测技术静态检测按照对模型节点的遍历方法分类正向分析:指从可能发生缓冲区溢出漏洞的源节点出发,正向遍历模

2021-09-29 10:36:36 1854

原创 Ubuntu16.04下编译安装arcsim-0.3.1

Ubuntu16.04下编译安装arcsim-0.3.1以下为Ubuntu16.04编译arcsim-0.3.1的详细步骤:安装编程套件(主要是g++):sudo apt-get install build-essential安装vim和ctags:sudo apt-get install vimsudo apt-get install ctags更新apt-get:sudo apt-get update下载arcsim 0.3.1:http://graphics.b

2021-09-28 20:43:26 527

原创 缓冲区溢出分类

基于应用视角的缓冲区溢出检测技术一.缓冲区分类: 按照缓冲区所在内存区域位置分类: 栈溢出 堆溢出 数据段溢出 按照导致溢出的内存操作函数分类: 字符串操作函数(strcpy) 格式化输出函数(sprintf) 按照溢出数据修改的关键值分类: 修改返回地址 修改函数指针 修改指针变量 二.栈溢出 基于栈溢出的攻击Stack Smashing:

2021-09-24 09:05:00 2325

原创 Android逆向分析实例(四)-米读极速版日志植入

准备:1. 配置Fiddler抓包环境2. 下载米读极速版(密码:d0r2)3. Android手机/模拟器与电脑连同一个网络1. Fiddler配置首先去官网下载最新版的Fiddler;下载完后傻瓜式安装就行了;然后打开软件,先不要急着抓包,首先点击Tools -> Options;设置HTTPS选项;设置Connections选项;点击Actions第二项"Export Ro..

2021-07-02 14:11:26 385

原创 SEED(2)-缓冲区溢出攻击(Buffer-Overflow Attack)

1. 漏洞原理漏洞代码示例:#include<string.h>void foo(char *str){ char buffer[12]; strcpy(buffer, str);}int main(){ char *str = "This is definitely longer than 12"; foo(str); return 1;}当把str的内容copy到buffer中,由于str的长度大于12,就会造成缓冲区b..

2021-06-29 14:28:29 3992 1

原创 SEED(1)-实验环境搭建

1. 下载VirtualBox官网:Downloads – Oracle VM VirtualBox2. 下载SEED Ubuntu 20.04官网:https://seedsecuritylabs.org选择Lab Setup;点击DigitalOcean下载;3. 在VirtualBox中配置Seed-Ubuntu20.04解压SEED-Ubuntu20.04.zip文件打开VirtualBox,点击控制 ->

2021-06-29 13:55:13 9527 9

原创 渗透测试(二)-Metasploit生成免杀后门(外网篇)

1. Sunny-Ngrok 开通隧道首先在官网注册会员 登陆 选择要开通的服务器 这里我们选择美国Ngrok免费服务器选择tcp协议,填一个可以使用的端口号。开通隧道后可以在 隧道管理 中看到自己的隧道信息:记住这里的 隧道id,赠送域名 以及 隧道端口,下面会用到。2. 启动隧道首先在kali linux中下载对应的客户端,选择Linux 64位版本。启动隧道:./sunny clienti..

2021-05-25 16:43:08 1326 4

原创 渗透测试(一)-Msf生成免杀后门(内网篇)

实验环境:攻击机:kali linux-2021.1(192.168.56.128)靶机:Windows10(192.168.1.120)推荐两个免费在线木马检测网站:VirusScan和VirusTotal原理图:1. Meterpreter简介Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道,使用它作为攻击载荷能够获得目标系统的一个Meterpre..

2021-05-25 10:55:03 2953 1

原创 Android逆向分析实例(三)-解密微信EnMicroMsg.db数据库

1.简介首先介绍下EnMicroMsg.db数据库:这个数据库是存放在Android手机本地的用来保存微信聊天记录的一个数据库,是一个Sqlite数据库,且手机必须要有root权限才能获取到,而且是被加密过的,必须先找到密钥才能打开。我们现在要做的就是找到这个密钥。网上关于该数据库的解密方法几乎都一样:首先通过微信的 system_config_prefs.xml 文件获取uin值,然后获取手机的IMEI值,最后 (IMEI值+uin值)取MD5的前七位就是数据库的密码。说下这个..

2021-04-30 16:10:05 12074 32

原创 程序依赖图(Program Dependency Graph)-(PDG)

1.定义百度百科:程序依赖图(Program Dependence Graph)是程序的一种图形表示,它是带有标记的有向多重图。程序依赖图能够表示程序的控制依赖和数据依赖关系。程序依赖图(Program Dependence Graph)是关于源代码的一种图模型。源代码的图模型包括流程图(Control Flow Graph)、控制依赖图(Control Dependence Graph)、数据流程图(dataDependence Graph)、程序依赖图(Program Depend..

2021-04-21 01:34:25 5346

原创 控制流图(Control Flow Graph)-(CFG)

1.定义百度百科:控制流图(Control Flow Graph, CFG)也叫控制流程图,是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。它用图的形式表示一个过程内所有基本块执行的可能流向, 也能反映一个过程的实时执行过程。Frances E. Allen于1970年提出控制流图的概念。此后,控制流图成为了编译器优化和静态分析的重要工具。维基百科:原文:In a control-flo..

2021-04-21 01:31:25 43982 3

原创 抽象语法树(AST)

1.简介抽象语法树(abstract syntax code,AST)是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,这所以说是抽象的,是因为抽象语法树并不会表示出真实语法出现的每一个细节,比如说,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现。抽象语法树并不依赖于源语言的语法,也就是说语法分析阶段所采用的上下文无文文法,因为在写文法时,经常会对文法进行等价的转换(消除左递归,回溯,二义性等),这样会给文法分析引入一些多余的成分,对后续阶段造成不利影响,甚至会使...

2021-04-20 13:33:06 2395

原创 Android逆向分析实例(二)-修复输入法回编译后闪退问题

1.思考apk回编译后闪退,那肯定是这个app做了保护措施。开始我是这样想的,app闪退?那不就是被杀掉了进程嘛,直接去找KillProcess函数(杀死现有进程,也就是自己杀自己)不就行了么,或者找System.exit()函数(用 java api 退出当前线程)应该也可以,于是我根据这两个函数我找到了这个:apk下载链接既然找到了函数,那么直接把对应的smali文件里的A02()函数里的内容全都删掉,然后返回一个空值(return null)应该就可以了。思路应该是没问题的..

2021-04-18 11:29:54 1007

bootstrap购物车.zip

最近想做一个购物车,看了很多帖子和博客,发现大部分购物车要么无法适应手机端,要么缺乏一些功能,或者做的不够美观 ,于是自己结合网上的代码加以修改完善了一下。

2021-07-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除