- 简介本文介绍了一种使用动态污点分析恢复二进制可执行文件输入结构和字段语义关系的算法。该算法不仅将输入分成代表值的连续字节,还识别了结构的语法组件,如固定长度和可变长度的原子字段以及不同类型的数组,如原子字段数组、记录数组和具有变体记录的数组。它还推断了结构字段之间的语义关系,例如指定记录数组计数的计数字段或指定输入数据中可变长度字段的起始位置的偏移字段。该算法构建了一个类似于C/C++的结构来表示语法组件和语义关系。该算法已在名为ByteRI 2.0的原型系统中实现。通过对合成主题程序和真实世界程序进行控制实验进行评估,结果表明ByteRI 2.0正确识别了语法元素及其语法结构,以及合成主题程序和部分真实世界程序之间的语义关系。当作为生成器使用时,恢复的结构产生的数据对于所有合成主题程序和一些真实世界程序都是可接受的。该算法对于发现漏洞和漏洞很重要,如为模糊或手动反向工程生成数据。
- 图表
- 解决问题本论文旨在使用动态污点分析算法恢复二进制可执行文件输入的结构和语义关系,以便于找到程序中的漏洞和安全问题,解决这一问题是否为新问题未作说明。
- 关键思路本文提出的算法不仅将输入划分为连续的字节表示值,还识别结构的语法组件,例如固定长度和可变长度的原子字段,以及不同类型的数组,例如原子字段数组、记录数组和具有变体记录的数组。它还推断结构中字段之间的语义关系,例如指定记录数组计数的计数字段或指定输入数据中可变长度字段的起始位置的偏移字段。算法构建了类似于C/C ++的结构来表示语法组件和语义关系。
- 其它亮点本文实现了一个名为ByteRI 2.0的原型系统,并使用合成主题程序和真实世界程序进行了控制实验的评估。主题程序被创建为接受模仿常规数据格式(例如PE、PNG、ZIP和CSV)中找到的语法组件和选择的语义关系的各种输入格式。结果表明,ByteRI 2.0正确识别了合成主题程序和真实世界程序中的语法元素及其语法结构,以及字段之间的语义关系。当使用恢复的结构作为生成器时,生成的数据对所有合成主题程序和一些真实世界程序都是有效的。
- 最近在这个领域中,还有一些相关的研究正在进行。例如,一些研究关注于使用静态分析技术来恢复二进制文件的结构,而其他研究则使用动态分析技术来恢复结构。其中,一些研究使用了机器学习技术,例如神经网络和随机森林,来恢复结构。一些相关的论文包括“使用深度学习恢复二进制文件的结构”和“使用机器学习技术恢复结构的综合比较研究”。
沙发等你来抢
去评论
评论
沙发等你来抢