数据处理方法、装置、存储介质及电子设备制造方法及图纸

技术编号:33201487 阅读:36 留言:0更新日期:2022-04-24 00:39
本申请涉及一种数据处理方法、装置、存储介质及电子设备,该方法包括:获取开源库源代码的特征文件,特征文件包括多个锚点函数,开源库源代码中已知函数的个数,各个已知函数的位置排列顺序;将闭源程序与所述特征文件中的各个锚点函数进行匹配;当匹配到开源库源代码中的多个锚点函数时,确定匹配到的各个所述锚点函数在闭源程序中的地址;根据匹配到的各个锚点函数在闭源程序中的地址和函数信息,确定闭源程序的匹配地址区间;将闭源程序中匹配地址区间的函数与开源库源代码中的各个已知函数进行匹配,并根据匹配到的已知函数确定闭源程序中对应函数的函数名。本申请可以提高用户对闭源程序的逆向分析速度。对闭源程序的逆向分析速度。对闭源程序的逆向分析速度。

【技术实现步骤摘要】
数据处理方法、装置、存储介质及电子设备


[0001]本申请涉及计算机安全
,特别是涉及一种数据处理方法、装置、存储介质及电子设备。

技术介绍

[0002]随着大型软件开发过程中,开源组件的占比越来越高,加之软件开发人员往往只关注自己开发的那部分代码的安全性,忽视了采用的开源组件的安全质量,最终导致成型软件产品的系统安全问题越来越多。而这些软件在发布时,又隐去了调试信息,无法识别函数名,导致逆向分析的难度很大。目前很多商业程序和恶意软件是体积庞大的闭源程序。针对这些闭源程序的安全性检测是刻不容缓的事情。
[0003]相关技术中,闭源程序函数名恢复主要是基于函数哈希对比的方法,通常做法是对未知函数的整个函数的二进制码做一个哈希函数,如果和已知函数的哈希函数结果相同,则将未知函数的名称修改为已知函数名。在较长的函数中,这种做法能够准确的匹配,但长度较短的函数极其容易误报。由于哈希函数的特性,只有完全一致的情况下才能匹配,导致有很多只修改了一点点内容,或者只是执行顺序上下变换过的函数没有被匹配到,导致能够匹配的函数数量很少。该方法需要对闭源程序的所有函数做哈希,速度极慢。
[0004]因此,相关技术中亟需一种高效的数据处理方法能够确定闭源程序中未知函数的函数名。

技术实现思路

[0005]鉴于上述状况,本申请提供了一种数据处理方法、装置、存储介质及电子设备,以在保证函数名匹配高精准度的前提下,大大增加匹配的函数数量和速度。
[0006]一种数据处理方法,包括:
[0007]获取开源库源代码的特征文件,所述特征文件包括函数信息和多个锚点函数,所述函数信息包括所述开源库源代码中所有的已知函数的个数,以及各个所述已知函数在所述开源库源代码中的位置排列顺序,所述锚点函数为所述开源库源代码中指定的所述已知函数;
[0008]将闭源程序与所述特征文件中的各个锚点函数进行匹配;
[0009]当匹配到所述开源库源代码中的多个所述锚点函数时,确定匹配到的各个所述锚点函数在所述闭源程序中的地址;
[0010]根据所述匹配到的各个所述锚点函数在所述闭源程序中的地址,以及所述函数信息,确定所述闭源程序的匹配地址区间;
[0011]将所述闭源程序中所述匹配地址区间的函数与所述开源库源代码中的各个所述已知函数进行匹配,并根据匹配到的已知函数确定所述闭源程序中对应函数的函数名。
[0012]进一步的,上述数据处理方法,其中,所述获取开源库源代码的特征文件的步骤包括:
[0013]获取开源库源代码,并进行编译以得到二进制文件;
[0014]对所述二进制文件进行特征提取,得到所述开源库源代码中各个已知函数的特征信息和各个所述已知函数的位置排列顺序,以及所述已知函数的个数,所述特征信息为二进制的字符串;
[0015]将长度大于阈值的且被调用唯一的特征信息进行记录,并将其对应的已知函数作为锚点函数;
[0016]根据各个所述已知函数的位置排列顺序,所述已知函数的个数,以及所述锚点函数,生成所述开源库源代码的特征文件。
[0017]进一步的,上述数据处理方法,其中,所述将所述闭源程序与所述特征文件中的各个锚点函数进行匹配,包括:
[0018]扫描所述闭源程序,并将所述闭源程序中的函数的特征信息与所述特征文件中的所述锚点函数的特征信息进行匹配。
[0019]进一步的,上述数据处理方法,其中,所述对所述二进制文件进行特征提取的步骤包括:
[0020]提取所述二进制文件中各个所述已知函数的结构信息;
[0021]所述将所述闭源程序中所述匹配地址区间的函数与所述开源库源代码中的各个所述已知函数进行匹配的步骤包括:
[0022]将所述闭源程序中所述匹配地址区间的函数与所述开源库源代码中的各个所述已知函数对应的结构信息进行匹配。
[0023]进一步的,上述数据处理方法,其中,根据所述匹配到的各个所述锚点函数在所述闭源程序中的地址,以及所述函数信息,确定所述闭源程序的匹配地址区间,包括:
[0024]将最高地址的锚点函数与最低地址的锚点函数的地址做差值计算;
[0025]根据差值计算的结果值、预设的函数个数阈值,以及所述开源库源代码中已知函数的个数,确定所述闭源程序的匹配地址区间。
[0026]进一步的,上述数据处理方法,其中,所述匹配地址区间为[x

m/2

(n

m)

a,x+m/2+(n

m)+a],其中,m为差值计算的结果值,n为所述开源库源代码中已知函数的个数,a为函数个数阈值。
[0027]本申请还公开了一种数据处理装置,包括:
[0028]获取模块,用于获取开源库源代码的特征文件,所述特征文件包括函数信息和多个锚点函数,所述函数信息包括所述开源库源代码中所有的已知函数的个数,以及各个所述已知函数在所述开源库源代码中的位置排列顺序,所述锚点函数为所述开源库源代码中指定的所述已知函数;
[0029]第一匹配模块,用于将闭源程序与所述特征文件中的各个锚点函数进行匹配;
[0030]第一确定模块,用于当匹配到所述开源库源代码中的多个所述锚点函数时,确定匹配到的各个所述锚点函数在所述闭源程序中的地址;
[0031]第二确定模块,用于根据所述匹配到的各个所述锚点函数在所述闭源程序中的地址,以及所述函数信息,确定所述闭源程序的匹配地址区间;
[0032]第二匹配模块,用于将所述闭源程序中所述匹配地址区间的函数与所述开源库源代码中的各个所述已知函数进行匹配,并根据匹配到的已知函数确定所述闭源程序中对应
函数的函数名。
[0033]进一步的,上述数据处理装置,所述获取模块包括:
[0034]编译模块,用于获取开源库源代码,并进行编译以得到二进制文件;
[0035]提取模块,用于对所述二进制文件进行特征提取,得到所述开源库源代码中各个已知函数的特征信息和各个所述已知函数的位置排列顺序,以及所述已知函数的个数,所述特征信息为二进制的字符串;
[0036]记录模块,用于将长度大于阈值的且被调用唯一的特征信息进行记录,并将其对应的已知函数作为锚点函数;
[0037]生成模块,用于根据各个所述已知函数的位置排列顺序,所述已知函数的个数,以及所述锚点函数,生成所述开源库源代码的特征文件。
[0038]进一步的,上述数据处理装置,其中,提取模块还用于:
[0039]提取所述二进制文件中各个所述已知函数的结构信息;
[0040]对应的,所述第二匹配模块用于:
[0041]将所述闭源程序中所述匹配地址区间的函数与所述开源库源代码中的各个所述已知函数对应的结构信息进行匹配。
[0042]本申请还公开了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述所述的数据处理方法。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据处理方法,其特征在于,所述方法包括:获取开源库源代码的特征文件,所述特征文件包括函数信息和多个锚点函数,所述函数信息包括所述开源库源代码中所有的已知函数的个数,以及各个所述已知函数在所述开源库源代码中的位置排列顺序,所述锚点函数为所述开源库源代码中指定的所述已知函数;将闭源程序与所述特征文件中的各个锚点函数进行匹配;当匹配到所述开源库源代码中的多个所述锚点函数时,确定匹配到的各个所述锚点函数在所述闭源程序中的地址;根据所述匹配到的各个所述锚点函数在所述闭源程序中的地址,以及所述函数信息,确定所述闭源程序的匹配地址区间;将所述闭源程序中所述匹配地址区间的函数与所述开源库源代码中的各个所述已知函数进行匹配,并根据匹配到的已知函数确定所述闭源程序中对应函数的函数名。2.根据权利要求1所述的数据处理方法,其特征在于,所述获取开源库源代码的特征文件的步骤包括:获取开源库源代码,并进行编译以得到二进制文件;对所述二进制文件进行特征提取,得到所述开源库源代码中各个已知函数的特征信息和各个所述已知函数的位置排列顺序,以及所述已知函数的个数,所述特征信息为二进制的字符串;将长度大于阈值的且被调用唯一的特征信息进行记录,并将其对应的已知函数作为锚点函数;根据各个所述已知函数的位置排列顺序,所述已知函数的个数,以及所述锚点函数,生成所述开源库源代码的特征文件。3.根据权利要求1所述的数据处理方法,其特征在于,所述将所述闭源程序与所述特征文件中的各个锚点函数进行匹配,包括:扫描所述闭源程序,并将所述闭源程序中的函数的特征信息与所述特征文件中的所述锚点函数的特征信息进行匹配。4.根据权利要求2所述的数据处理方法,其特征在于,所述对所述二进制文件进行特征提取,包括:提取所述二进制文件中各个所述已知函数的结构信息;对应的,所述将所述闭源程序中所述匹配地址区间的函数与所述开源库源代码中的各个所述已知函数进行匹配,包括:将所述闭源程序中所述匹配地址区间的函数与所述开源库源代码中的各个所述已知函数对应的结构信息进行匹配。5.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述匹配到的各个所述锚点函数在所述闭源程序中的地址,以及所述函数信息,确定所述闭源程序的匹配地址区间,包括:将最高地址的锚点函数与最低地址的锚点函数的地址做差值计算;根据差值计算的结果值、预设的函数个数阈值,以及所述开源库源代码中已知函数的个数,确定所述闭源程序的匹配地址区间。6.根据权利要求5所述的数据处理方法,其特征在于,所...

【专利技术属性】
技术研发人员:黄伟杰周捷
申请(专利权)人:杭州安恒信息安全技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1