- 博客(21)
- 收藏
- 关注
原创 EsimCSE
本文介绍了一种增强的无监督句子嵌入方法——ESimCSE。该方法通过引入重复操作和动量对比等技术,对原始的SimCSE模型进行了改进。实验结果表明,相较于原模型,ESimCSE在语义文本相似性任务上表现更好。
2024-12-09 10:53:30
622
原创 tree_sitter环境配置教程1
目前在从事代码表征方面的工作,需要使用到一些常见的静态分析工具:joern,tree_sitter,spoon等;本文主要介绍tree_sitter及其环境配置教程。
2024-11-08 15:24:40
2417
原创 Pre-training Code Representation with Semantic Flow Graph for Effective Bug Localization使用语义流图进行预训练代
全文摘要本文旨在解决自然语言处理中预训练模型在编程语言中的应用问题,并提出了针对代码语义和对比学习的新方法。传统的基于BERT的bug定位技术存在两个问题:一是无法充分捕捉程序代码的深层语义;二是忽略了大规模负样本在对比学习中的重要性以及bug报告与变更集之间的词汇相似度。为了解决这些问题,作者提出了一个名为Semantic Flow Graph(SFG)的新型有向、多标签代码图表示,可以紧凑地、充分地捕获代码语义。
2024-11-08 10:27:59
900
原创 ContraBERT: Enhancing Code Pre-trained Models via Contrastive Learning
全文摘要本文介绍了一种名为ContraBERT的方法,旨在通过对比学习提高代码预训练模型的鲁棒性。由于现有的大规模预训练模型在代码表示方面表现出色,因此它们被广泛应用于下游任务中,如克隆检测、代码搜索和代码翻译等。然而,这些先进的预训练模型也容易受到简单的攻击,例如变量名重命名等。这种弱点可能会被下游模型继承并放大到前所未有的规模。
2024-10-31 14:17:27
946
原创 SCL-CVD: Supervised contrastive learning for code vulnerability detection via GraphCodeBERT
本文介绍了一种名为SCL-CVD的新方法,用于检测源代码中的漏洞。该方法使用了预训练的语言模型GraphCodeBERT,并结合了监督式对比学习和低秩适应技术,以提高检测准确性和效率。实验结果表明,相比现有方法,SCL-CVD在精度、召回率、F1分数等方面都有显著提升,并且能够减少模型训练时间。因此,SCL-CVD是一种更有效、更具成本效益的漏洞检测方法。
2024-10-29 16:28:51
937
原创 Towards Learning(Dis)-Similarity of Source Code from Program Contrasts----从程序对比中学习源代码的相似性与差异
本文介绍了一种名为DISCO的自监督模型,旨在识别源代码的功能相似性。该方法不需要大量随机收集的数据集,而是通过结构引导的代码转换算法生成合成的代码克隆和注入真实世界的安全漏洞,有针对性地增强数据集。作者提出了一个新的cloze目标,用于编码局部树形上下文(例如父节点或兄弟节点),以更好地捕捉源代码的结构特征。实验结果表明,即使使用更少的数据,DISCO仍然可以在漏洞检测和代码克隆检测任务中优于最先进的模型。
2024-10-25 16:47:46
868
原创 Pre-training by Predicting Program Dependencies for Vulnerability Analysis Tasks
全文摘要本篇论文探讨了如何利用预训练技术提高软件漏洞分析任务的理解能力。作者提出了两个新的预训练目标:控制依赖预测和数据依赖预测,旨在仅根据源代码预测代码片段中的语句级控制依赖和标记级数据依赖。通过预训练,模型可以学习到分析代码中细粒度依赖关系所需的知识,并在微调时提升对漏洞代码的理解能力。实验结果表明,使用CDP和DDP进行预训练的Transformer模型PDBERT在三个下游任务上取得了最先进的性能,同时在部分函数和完整函数中预测控制和数据依赖性的F1得分均超过了99%和94%。论文速读。
2024-10-22 19:51:06
727
原创 linux下7z文件的解压缩
在Linux操作系统中,解压.7z文件可以使用命令行工具来完成。请注意,7z命令还有其他选项和参数,可以根据需要进行使用。2. 在命令行中,进入到存放.7z文件的目录。1. 确保已经安装了7z程序。4. 解压完成后,可以在当前目录下找到解压出的文件。其中,filename.7z是待解压的文件名。
2024-10-14 09:01:17
2723
原创 基于图简化和图增强的漏洞检测方法
本篇论文旨在解决深度学习在软件漏洞检测中的局限性问题。目前,基于图神经网络(GNN)的学习方法已被广泛应用于源代码的图形表示和漏洞检测中。然而,现有的方法仍然受到GNN难以处理长距离节点连接以及无法充分利用多种类型边的影响。为了解决这些问题,本文提出了一个名为AMPLE的新颖漏洞检测框架,该框架包括两个部分:1)图简化,通过缩小代码结构图中节点的大小来减少节点之间的距离;2)增强型图表示学习,其中包含一个融合异构边信息的边缘感知卷积网络模块和一个捕捉远距离图节点之间关系的核缩放表示模块。
2024-10-12 08:43:31
984
原创 DIVERSEVUL: A New Vulnerable Source Code Dataset for Deep Learning Based Vulnerability Detection
本篇论文提出了一种新的漏洞源代码数据集——DIVERSEVUL,并通过爬取安全问题网站、提取修复漏洞的提交和源代码等方法进行构建。该数据集包含18,945个脆弱函数,覆盖了150个CWE(软件漏洞分类)和330,492个非脆弱函数,来自7,514个提交。与之前的数据集相比,该数据集涵盖了更多的项目。此外,作者还分析了使用深度学习检测软件漏洞所面临的挑战和有前途的研究方向。他们评估了11种模型架构,属于4个家族,结果表明深度学习在检测漏洞时仍存在高误报率、低F1分数和难以检测硬CWE等问题。
2024-09-24 09:07:25
1237
原创 基于动态切片与预训练模型的代码漏洞检测
该论文提出了一种基于动态切片与预训练模型的代码漏洞检测方法,旨在解决传统基于深度学习的漏洞检测模型存在的问题,如准确性低、可扩展性差等。该方法通过动态切片获取包含路径特征的语句块,并利用预训练模型的语义提取能力将其表示为二维张量。然后,将代码结构和语义特征编码成灰度图像中的像素值,并借助Swin Transformer的特征提取能力,实现更准确的漏洞检测。实验结果表明,该方法能够有效降低误报率和漏报率,提高漏洞检测的准确性和可靠性。
2024-09-23 16:28:06
647
原创 Refactoring Programs Using Large Language
全文摘要本篇论文探讨了使用大型语言模型(LLM)进行代码重构的方法,并通过实验证明了其有效性。该方法旨在鼓励用户学习如何编写更简单的程序,以提高可维护性和安全性。研究人员采用了GPT-3.5 LLM,并提出了基于少数示例提示的代码重构方法。实验结果表明,该方法可以将平均复杂度降低17.35%,平均行数减少25.84%。此外,该方法在格式化代码方面表现出色,但也会出现删除或翻译注释等不必要的行为。这项研究成果为软件开发人员提供了一种新的工具和思路,可以帮助他们更好地管理和优化自己的代码库。论文速读。
2024-09-20 15:04:16
629
1
原创 SySeVR源码漏洞的系统框架
首先将程序切片中的属于同一函数的所有语句按照在源代码中出现的顺序存入一个集合,对于不同的函数的语句而言,调用者的语句在被调用者的语句之前。调整好顺序后,该集合就是SyVC对应的SeVC,对SyVCs中的每一个SyVC这样处理,就可以生成SeVCs。首先生成SyVC的前向切片和后向切片,然后融合前向切片和被该函数调用的函数的前向切片,得到过程间前向切片;融合后向切片、被该函数调用的函数的后向切片,以及调用该函数的函数的后向切片,得到过程间后向切片;融合过程间前向切片和过程间后向切片得到程序切片。
2024-09-05 09:05:44
1188
原创 Deepwukong项目joern安装使用教程
在将joern的源码下载后,复制到wukong项目的根目录下。该项目使用老版本的joern,用来解析c和c++语言,构建程序的程序依赖图PDG。该工具生成的是nodes.csv和edges.csv 文件。至此,如果一切顺利的话,那么你将成功解析项目中data下面的c和cpp文件。edges.csv是这样的:主要包含边的类型以及起始和结束位置。joern 是直接在 README.md 中给出的地址下载的源码。其中nodes.csv是这样的:主要包含节点的一些属性。
2024-09-03 16:13:09
624
5
原创 安装与cuda版本对应的torch-geometric文件的shell
import loggingimport subprocess from setuptools import setup import torch cuda_v = f"cu{torch.version.cuda.replace('.', '')}"torch_v = torch.__version__.split('.')torch_v = '.'.join(torch_v[:-1] + ['0']) def system(command: str): output =
2024-08-27 22:41:25
209
原创 DeepWUkong
DeepWukong利用先进的图神经网络技术将代码片段嵌入到紧凑、低维的表示中,并产生一种新的代码表示方式,保留了高级编程逻辑(如控制流和数据流)以及程序的自然语言信息。在第一步中,通过对程序依赖关系图进行割集算法处理,得到程序中的所有可能子程序,然后将每个子程序看作一个节点,并将其加入到程序片断选取阶段的候选集合中。在第二步中,对于每个节点,先对其进行符号化,即将其变量名和函数名替换为统一的标识符,再通过Doc2Vec模型将其转换为向量表示。
2024-08-17 20:21:20
1128
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人