five

call graph dataset

收藏
github2023-05-05 更新2024-05-31 收录
下载链接:
https://github.com/quarkslab/dataset-call-graph-blogpost-material
下载链接
链接失效反馈
官方服务:
资源简介:
该数据集旨在通过分析未知文件的调用图结构信息,将它们分类为恶意软件或正常软件。调用图是由程序分析工具生成的抽象对象,用于表示计算机程序中子例程之间的关系。每个节点代表一个函数,每条边代表一个函数对另一个函数的调用。数据集包含1361个可移植可执行文件,其中546个被视为正常文件,815个被视为恶意文件。调用图通过radare2工具从这些二进制文件中提取,并进行了统计处理以简化节点属性。

This dataset aims to classify unknown files as either malware or benign software by analyzing the call graph structure information of these files. The call graph, an abstract object generated by program analysis tools, represents the relationships between subroutines within a computer program. Each node in the graph represents a function, and each edge represents a call from one function to another. The dataset comprises 1,361 portable executable files, of which 546 are classified as benign and 815 as malicious. The call graphs were extracted from these binary files using the radare2 tool and underwent statistical processing to simplify node attributes.
创建时间:
2017-01-27
原始信息汇总

数据集概述

数据集目的

本数据集旨在通过学习未知文件的调用图结构信息,将其分类为恶意软件(malware)或正常软件(goodware)。

数据集内容

提取方法

  • 数据集包含1361个PE(便携式可执行文件),其中546个为正常文件,815个为恶意文件。
  • 使用radare2工具从这些二进制文件中提取调用图。
  • 每个节点代表一个函数,每条边代表一个函数调用另一个函数。
  • 统计每个节点中频繁操作码(如mov, call, lea等)的调用次数,以提取相关信息。

数据集组织

  • 调用图分为两个子集:一个用于正常文件,另一个用于恶意文件。
  • 每个子集的数据以列表形式存储,每个元素包含两个字典:
    • 节点与属性的映射
    • 节点与邻居节点的映射

数据集统计

正常文件(Goodware)

  • 图的数量:546
  • 平均节点数:648.1
  • 平均度数:3.3
  • 中位数度数:2.7
  • 最大度数:10.1
  • 孤立节点数:130812
  • 孤立节点平均数:239.6
  • 自环数:0

恶意文件(Malware)

  • 图的数量:815
  • 平均节点数:871.5
  • 平均度数:3.6
  • 中位数度数:3.7
  • 最大度数:34.4
  • 孤立节点数:231990
  • 孤立节点平均数:284.7
  • 自环数:0

数据集使用

数据集可通过以下步骤加载:

  1. 克隆数据集仓库。
  2. 解压数据集文件。
  3. 使用pickle模块加载调用图数据。
搜集汇总
数据集介绍
main_image_url
构建方式
该数据集的构建基于1361个可移植可执行文件(PE),其中546个为正常文件,815个为恶意文件。通过使用radare2工具对这些二进制文件进行静态分析,提取出调用图(call graph)。每个调用图的节点代表一个函数,边代表函数之间的调用关系。为了便于统计分析,节点属性被重新格式化,统计了每个节点中最常见的操作码(opcode)的调用次数,如'mov'、'call'等。
特点
该数据集的特点在于其调用图的结构化表示,能够有效捕捉程序中的函数调用关系。数据集分为两个子集,分别对应正常文件和恶意文件。每个调用图以列表形式存储,包含两个字典:一个表示节点与属性之间的映射,另一个表示节点与其邻居节点的映射。这种格式便于直接访问节点的邻居,适用于图匹配和分类任务。此外,数据集提供了详细的统计信息,如节点数量、平均度数、孤立节点数量等,为研究者提供了丰富的分析维度。
使用方法
该数据集的使用方法较为简便。用户可以通过GitHub克隆项目并解压数据集文件。调用图数据以pickle格式存储,用户可以使用Python的pickle模块加载数据。具体操作为:首先克隆项目,解压数据集文件,然后使用pickle.load函数加载恶意文件和正常文件的调用图数据。这种格式便于在Python环境中进行进一步的分析和处理,适用于机器学习、图神经网络等领域的实验和研究。
背景与挑战
背景概述
call graph数据集由QuarksLab团队创建,旨在通过分析程序中的调用图结构,对未知文件进行分类,区分恶意软件(malware)与良性软件(goodware)。调用图是一种通过程序分析工具生成的抽象对象,用于表示计算机程序中子程序之间的关系。该数据集包含1361个可移植可执行文件(PE),其中546个为良性文件,815个为恶意文件。通过静态分析工具radare2提取调用图,并对节点属性进行统计格式化,以支持基于图结构的分类任务。该数据集为恶意软件检测领域提供了重要的结构化数据支持,推动了基于图分析的恶意软件检测方法的发展。
当前挑战
call graph数据集面临的主要挑战包括两个方面。首先,在领域问题层面,调用图的结构复杂性使得恶意软件与良性软件的分类任务极具挑战性。尽管调用图能够捕捉程序的执行逻辑,但恶意软件通常通过混淆技术或动态行为隐藏其真实意图,增加了分类的难度。其次,在数据集构建过程中,静态分析工具radare2虽然能够提取调用图,但无法完全模拟程序的动态执行环境,导致部分调用图可能与实际运行时行为存在差异。此外,数据集中存在大量孤立节点,这些节点可能对图匹配和分类算法的性能产生负面影响,如何有效处理这些孤立节点也是一个亟待解决的问题。
常用场景
经典使用场景
在恶意软件检测领域,call graph数据集被广泛应用于分析和分类未知文件。通过提取程序中的调用图,研究者能够深入理解程序的结构信息,进而区分恶意软件和良性软件。调用图中的节点代表函数,边代表函数间的调用关系,这种结构化的表示方法为程序分析提供了强有力的工具。
解决学术问题
该数据集解决了恶意软件检测中的关键问题,即如何从静态分析的角度识别恶意代码。通过统计每个节点中常见操作码的频率,研究者能够构建有效的特征向量,用于机器学习模型的训练和分类。这种方法不仅提高了恶意软件检测的准确性,还为程序分析领域提供了新的研究方向。
衍生相关工作
基于call graph数据集,许多经典研究工作得以展开。例如,研究者提出了多种基于图神经网络的恶意软件检测模型,这些模型能够有效捕捉调用图中的复杂结构信息。此外,该数据集还推动了程序分析工具的发展,如radare2等工具在静态分析中的应用得到了进一步优化和扩展。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作