REALTYPE
收藏arXiv2025-02-07 更新2025-02-11 收录
下载链接:
https://zenodo.org/records/14797017
下载链接
链接失效反馈官方服务:
资源简介:
REALTYPE是一个包含实际用户定义类型(UDT)的数据集,由卡内基梅隆大学构建。该数据集包括154,301个训练函数和2,862个评估函数,其中的UDT是通过解析预处理后的原始源代码提取完整的定义。这个数据集旨在用于训练能够预测源代码和UDT定义的神经反编译器模型。
REALTYPE is a dataset containing actual User-Defined Types (UDTs), developed by Carnegie Mellon University. This dataset includes 154,301 training functions and 2,862 evaluation functions, where the UDTs are extracted as complete definitions from preprocessed raw source code via parsing. This dataset is designed for training neural decompiler models capable of predicting source code and UDT definitions.
提供机构:
卡内基梅隆大学
创建时间:
2025-02-07
搜集汇总
数据集介绍

构建方式
REALTYPE数据集的构建始于从GitHub上克隆并编译以C语言为主的代码库,利用GitHub Cloner and Compiler (GHCC)工具进行标准化处理。随后,使用Hex-Rays反编译器对生成的ELF格式的二进制文件进行反编译,并过滤掉非目标函数。为收集原始代码及其使用的类型,使用GCC预处理器生成文本文件,并解析预处理代码以记录用户定义类型的定义。最后,将反编译函数与预处理函数进行匹配,并按二进制文件进行组织,同时计算和存储函数之间的调用图。
特点
REALTYPE数据集显著增加了用户定义类型的复杂性和数量,相较于现有神经反编译基准数据集,其包含更多真实世界中的类型。数据集包含154,301个训练函数和2,862个评估函数,涵盖了真实的用户定义类型。此外,REALTYPE数据集采用了邻域上下文,即在模型训练和预测过程中考虑函数调用图的上下文,以提供额外的证据来帮助重建用户定义类型。
使用方法
REALTYPE数据集可用于训练和评估神经反编译模型,特别是针对那些能够同时预测代码和用户定义类型的模型。数据集的使用方法包括:首先,使用邻域上下文进行模型训练,以提高模型对用户定义类型的预测能力;其次,在评估模型性能时,可以使用语义保留和代码改进等指标来衡量模型的有效性;最后,数据集还可以用于研究不同模型架构和大小对神经反编译性能的影响。
背景与挑战
背景概述
在逆向工程领域,反汇编器是一个重要的工具,它帮助研究人员以比汇编语言更高层次的抽象来分析软件。然而,由于编译过程的损失性,传统的确定性的反汇编器生成的代码缺少了许多使源代码易于阅读的细节,例如变量名和类型。神经反汇编器,另一方面,提供了一种统计上填充这些细节的能力。现有的神经反汇编工作,然而,由于无法处理用户定义的组合类型,限制了其处理真实代码的能力,这些类型对于完全指定许多函数的语义是必不可少的,或者需要测试用例。在这项工作中,我们引入了一种新的训练过程,以微调任何大型语言模型(LLM)成为一个神经反汇编器,能够生成适当的用户定义类型和反汇编代码。我们引入了一个新的数据集,REALTYPE,它包含了比现有的神经反汇编基准更复杂和现实的类型。我们通过直觉,数据结构的不同部分可以由程序的不同部分进行操作,我们表明程序间的上下文可以帮助提高神经反汇编器处理用户定义类型的能力。我们表明我们的训练过程在神经反汇编方面产生了最先进的结果。我们还公开发布了IDIOMS系列微调的神经反汇编模型,以支持开放科学。总的来说,我们确定了联合代码和类型预测的需求,表明这是一个难题,并迈出了解决它的第一步。
当前挑战
REALTYPE数据集的挑战主要包括:1) 处理用户定义的组合类型,这是许多函数语义完全指定的关键;2) 无需测试用例即可进行反汇编。此外,由于现有的神经反汇编基准中很少有用户定义的类型,因此预测用户定义类型的定义成为一个难题。为了解决这些问题,我们提出了一个新的训练策略,以及一个名为IDIOMS的模型系列,该系列可以联合预测代码和类型定义,并利用程序间的上下文来提供必要的额外信息,以帮助模型进行用户定义类型的重建。我们通过实验证明了在真实代码和类型上的神经反汇编的难度,以及程序间上下文在提高用户定义类型预测方面的有效性。
常用场景
经典使用场景
在逆向工程领域,REALTYPE数据集被广泛应用于训练神经反编译器。这些反编译器能够从可执行文件中恢复源代码表示,从而帮助安全专家分析软件,理解其功能,以及发现潜在的安全漏洞。REALTYPE数据集包含大量真实世界中使用的用户自定义类型,这使得训练出的模型能够更准确地恢复源代码中的类型信息,从而提高代码的可读性和可理解性。
实际应用
REALTYPE数据集的实际应用场景包括恶意软件分析、漏洞研究和修复缺乏原始源代码的遗留软件。通过使用REALTYPE数据集训练的神经反编译器,安全专家可以更快速地理解软件的功能和潜在的安全风险,从而提高软件的安全性。此外,REALTYPE数据集的引入也为神经反编译器的研发提供了新的思路和方法,推动了该领域的发展。
衍生相关工作
REALTYPE数据集的引入促进了神经反编译器领域的发展,衍生出了一系列相关工作。例如,IDIOMS系列微调神经反编译器模型,该系列模型在神经反编译领域取得了最先进的结果。此外,REALTYPE数据集的引入也为神经反编译器的性能评估提供了新的基准,从而推动了该领域的研究。
以上内容由遇见数据集搜集并总结生成



