基于Mamba的可执行二进制文件分割方法
本申请涉及二进制软件静态分析,特别是涉及一种基于mamba的可执行二进制文件分割方法。
背景技术:
1、随着闭源软件的普及和软件规模的持续扩大,可执行二进制文件,包括windowspe、linux elf格式等,已成为软件分发的主要形态,源代码往往不可获取。在软件安全、逆向工程和代码审计等场景中,分析人员需要直接对二进制文件进行静态分析,以理解程序结构、发现漏洞或检测代码复用。由于可执行文件内部同时包含文件头、节区、代码与数据等多层次信息,且编译优化与符号剥离会进一步弱化语义线索,面对大型二进制文件时,将其划分为若干可管理的程序片段(segment/chunk)是提升后续建模与分析效率的常用手段。
2、综合现有研究与工业实践,二进制文件分割方法可归纳为以下几类:
3、第一类为固定长度分割,该方法不依赖二进制文件的格式信息、符号信息或反汇编结果,而是将整个二进制文件视为连续字节序列,按照预设长度进行等长切分。其基本流程为:首先读取二进制文件的原始字节流;然后设定固定窗口大小和步长;最后从文件起始位置开始顺序截取片段,直到文件末尾。该方法实现简单、处理速度快,适合对大量二进制样本进行批量预处理,但分割边界由人为设置的长度参数决定,无法对齐真实源文件边界,同一个源文件编译生成的代码可能被切分到多个片段中,不同源文件生成的代码也可能被混合在同一个片段中。
4、第二类为节区感知的分层分割,该方法利用可执行文件格式中已有的结构化元数据进行切分,典型二进制格式如pe、elf、mach-o等通常包含节区或段信息,分别承载代码、只读数据、可写数据、资源等内容。该类方法通常先解析二进制文件头部信息,读取节表或程序头表,获得每个节区或加载段的文件偏移、虚拟地址、大小和访问权限,随后根据这些结构信息将文件划分为代码区域、数据区域、资源区域等不同部分。但该方法粒度过粗,一个.text节中通常包含大量源文件编译生成的函数和代码片段,节区边界并不等同于源文件边界,无法直接得到源文件级分割结果。
5、第三类为控制流感知的代码区域分割,该方法以反汇编结果为基础,依据程序执行过程中的控制转移关系对代码进行划分,通常首先将二进制代码反汇编为指令序列,然后识别跳转、条件分支、调用、返回等控制转移指令,并以这些指令为依据确定基本块边界,进一步构建控制流图(cfg)。该类方法更接近程序真实执行结构,但对反汇编质量依赖较强,在存在间接跳转、跳表、异常处理、编译器优化、混淆或反汇编技术时,控制流恢复可能出现错误,且其分割目标通常是执行路径或代码块,而非源文件起始位置。
6、第四类为函数级分割,该方法以函数起始地址和结束地址作为边界,将.text等代码区域划分为若干函数片段,函数边界可通过ida pro、ghidra等成熟反汇编工具或专门的机器学习/深度学习方法获得。该方法在粒度和语义之间取得了较好平衡,应用广泛,但其基本单位是函数而非源文件,若要进一步恢复源文件结构,还需要在函数级分割结果之上进行函数聚类或文件边界推断,且在符号剥离、高优化、函数内联等情况下,函数边界识别可能出现偏差,误差会进一步传递到源文件边界判断中。
7、第五类为源文件/模块级结构恢复驱动的分割,该类方法以函数为基本节点,构建函数之间的关系图(包括调用关系、数据引用关系、字符串引用关系等),随后通过图聚类、社区发现、动态规划等方法将函数划分为若干组,使同一组内的函数更可能来自同一源文件或模块。但这类方法通常包含多个前置步骤,包括反汇编、函数识别、关系提取、图构建和聚类优化,任何一个步骤出现误差都会影响最终恢复效果,同时工程实现复杂度和计算成本也相对较高。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高分割边界与真实源文件边界的一致性、降低对反汇编和函数识别质量的依赖、减少误差累积的基于mamba的可执行二进制文件分割方法。
2、一种基于mamba的可执行二进制文件分割方法,所述方法包括:
3、接收待分割的可执行二进制文件,以二进制方式读取文件内容,得到原始字节序列;
4、对原始字节序列进行数值化处理,将每个字节值映射为对应的整数token,生成字节token序列;
5、采用重叠滑窗方式对字节token序列进行分块处理,得到多个长度一致的输入块,对长度不足的输入块进行填充并生成有效位置掩码;有效位置掩码用于标记输入块中的真实字节位置和填充字节位置;
6、将每个输入块输入预先训练好的双向mamba源文件边界预测模型,得到每个输入块中各字节位置为源文件起始字节的预测概率序列;
7、将各输入块对应的预测概率序列映射回原始字节序列的对应文件偏移位置,对同一字节位置在重叠区域内的多个预测概率进行融合计算,得到原始字节序列中每个字节位置的最终预测概率;
8、根据预设的分类阈值对最终预测概率进行筛选,得到候选源文件起始边界集合,对候选源文件起始边界集合进行去重处理,得到最终的源文件起始边界序列;
9、根据最终的源文件起始边界序列,将原始字节序列分割为多个连续的源文件级二进制片段,并输出各片段对应的文件偏移范围。
10、上述基于mamba的可执行二进制文件分割方法,本申请通过将源文件级分割任务转化为二进制字节序列上的二分类序列标注任务这一核心创新,直接以原始字节序列作为模型输入,无需依赖反汇编、函数识别和控制流图构建等中间步骤,从根源上避免了中间步骤的误差向源文件级分割任务传递,解决了现有控制流感知、函数级分割方法对反汇编质量依赖强、函数识别误差易累积的问题,同时突破了节区感知分割仅能实现代码与非代码区域粗粒度划分的局限,可在同一代码节或加载段内部精准识别多个源文件边界;采用mamba状态空间模型对长距离字节上下文进行双向建模,同时捕捉源文件起始字节的局部字节模式和全局上下文特征,解决了长二进制文件上下文建模效率低、单向模型无法同时利用边界前后完整信息的问题,提升了边界识别的准确性;通过分块训练适配神经网络显存限制,结合重叠滑窗推理与概率融合技术平滑单块预测误差,解决了超长二进制文件的处理难题并提高了整体预测稳定性,且最终分割边界由模型学习到的源文件特征决定而非人为设定的固定窗口,彻底解决了固定长度分割无法对齐真实源文件边界的缺陷,大幅降低了工程实现复杂度和多步骤误差累积风险。
1.一种基于mamba的可执行二进制文件分割方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述可执行二进制文件包括elf格式、pe格式或mach-o格式文件,所述可执行二进制文件为带符号表文件或剥离符号后的stripped文件。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述有效位置掩码为真实字节位置标记为1,填充字节位置标记为0。
5.根据权利要求1所述的方法,其特征在于,将每个所述输入块输入预先训练好的双向mamba源文件边界预测模型,得到每个输入块中各字节位置为源文件起始字节的预测概率序列,包括:
6.根据权利要求1所述的方法,其特征在于,所述双向mamba源文件边界预测模型的训练阶段包括标签构建步骤,所述标签构建步骤包括:
7.根据权利要求1所述的方法,其特征在于,建立虚拟地址到文件偏移的映射关系,包括:
8.根据权利要求1所述的方法,其特征在于,所述双向mamba源文件边界预测模型的训练阶段采用预设的损失函数,训练时对每个训练输入块生成对应的有效位置掩码,仅对有效位置掩码标记为真实字节的位置计算损失;所述预设的损失函数为:
9.根据权利要求1所述的方法,其特征在于,对同一字节位置在重叠区域内的多个预测概率进行融合计算,得到原始字节序列中每个字节位置的最终预测概率,包括:
10.根据权利要求1所述的方法,其特征在于,所述去重处理的过程包括;
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com