CN116775120A - 一种函数指纹生成方法、装置、设备及存储介质 - Google Patents

一种函数指纹生成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116775120A
CN116775120A CN202310833847.7A CN202310833847A CN116775120A CN 116775120 A CN116775120 A CN 116775120A CN 202310833847 A CN202310833847 A CN 202310833847A CN 116775120 A CN116775120 A CN 116775120A
Authority
CN
China
Prior art keywords
function
function information
information
binary file
fingerprint
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310833847.7A
Other languages
English (en)
Inventor
钟国贤
范渊
王欣
崔钰欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN202310833847.7A priority Critical patent/CN116775120A/zh
Publication of CN116775120A publication Critical patent/CN116775120A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Collating Specific Patterns (AREA)

Abstract

本申请公开了一种函数指纹生成方法、装置、设备及存储介质,涉及计算机软件安全领域,包括:对接收到的二进制文件进行函数信息提取操作,以得到二进制文件中包含的函数信息以及表数据;对函数信息进行解析操作以及分类操作,以从函数信息中确定目标函数信息以及非目标函数信息;对目标函数信息进行预处理操作,并基于得到的预处理后函数信息、非目标函数信息以及表数据生成预设文本格式的目标文本,通过目标文本生成与所述二进制文件对应的函数指纹。这样一来,可以基于二进制文件的函数信息生成相应的函数指纹,以通过函数指纹跨架构、编译环境以及编译优化选项确定出所述二进制文件中被调用的函数,进而增强函数指纹在文件同源性检测的泛用性。

Description

一种函数指纹生成方法、装置、设备及存储介质
技术领域
本发明涉及计算机软件安全领域,特别涉及一种函数指纹生成方法、装置、设备及存储介质。
背景技术
随着软件供应链的全球化,第三方依赖软件的使用也变得越来越普遍,这也增加了软件供应链被攻击的风险。因此软件供应链安全(Software Supply Chain Security)变得越来越重要,其中涉及的一项关键技术是软件成分分析SCA(Software CompositionAnalysis),而SCA技术可以自动识别和跟踪应用程序中使用的第三方库和组件,通过识别应用程序中使用的所有第三方库和组件,以及它们的版本信息,结合已知的漏洞数据库进行比对,以确定哪些组件存在漏洞和安全问题,而通过函数指纹进行匹配便是SCA分析二进制文件的一项关键技术。
但现有技术中,由于在不同架构,不同编译环境、不同编译优化选项下编译出来的二进制文件存在一定差异,会导致最终提取到的函数指纹完全不同。如果指纹数据库没有采集到相同编译环境下对应二进制文件的函数指纹信息,要准确识别出正确的组件及版本的概率很低。因此现有技术中缺少一种跨架构、编译环境、编译优化选项的函数指纹生成方法。
发明内容
有鉴于此,本发明的目的在于提供一种函数指纹生成方法、装置、设备及存储介质,可以基于二进制文件的函数信息生成相应的函数指纹,以通过函数指纹跨架构、编译环境以及编译优化选项确定出所述二进制文件中被调用的函数,进而增强函数指纹在文件同源性检测的泛用性。其具体方案如下:
第一方面,本申请公开了一种函数指纹生成方法,包括:
对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据;
对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息;所述非目标函数信息为所述函数信息中不包括所述目标函数信息的函数信息;
对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本,通过所述目标文本生成与所述二进制文件对应的函数指纹。
可选的,所述对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据,包括:
判断是否接收到二进制文件,若接收到所述二进制文件,则基于预设信息提取脚本以及预设反编译工具对所述二进制文件进行信息提取操作,以确定所述二进制文件的函数信息以及import表数据。
可选的,所述对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息,包括:
对所述函数信息进行解析操作,以从所述函数信息中确定函数形参数量、内部函数数量、外部函数数量及外部函数名称、整型常量、字符串常量;
对所述函数信息进行分类操作,将所述函数形参数量、所述内部函数数量、所述外部函数数量确定为不需要进行预处理操作的非目标函数信息,并将所述外部函数名称、所述整型常量、所述字符串常量确定为需要进行预处理操作的目标函数信息。
可选的,所述对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本,包括:
对所述目标函数信息进行预处理操作,以调整所述整型常量、所述字符串常量以及所述外部函数名称的顺序,得到预处理后函数信息;
基于所述预处理后函数信息、所述非目标函数信息、所述表数据根据预设json格式生成目标json文本。
可选的,所述对所述目标函数信息进行预处理操作,以调整所述整型常量、所述字符串常量以及所述外部函数名称的顺序,得到预处理后函数信息,包括:
对所述目标函数信息进行预处理操作,以确定所述整型常量的大小排序、所述字符串常量的顺序排序以及所述外部函数名称的顺序排序;
基于所述整型常量的大小排序、所述字符串常量的顺序排序以及所述外部函数名称的顺序排序,分别对所述整型常量、所述字符串常量以及所述外部函数名称进行调整,以得到调整后整型常量、调整后字符串常量以及调整后外部函数名称,并将所述调整后整型常量、所述调整后字符串常量以及所述调整后外部函数名称确定为预处理后函数信息。
可选的,所述通过所述目标文本生成与所述二进制文件对应的函数指纹,包括:
利用预设哈希算法对所述目标文本进行处理,以生成与所述二进制文件对应的函数指纹,并将所述函数指纹存入预设数据库;所述预设哈希算法为MD5信息摘要算法或安全散列算法。
第二方面,本申请公开了一种函数指纹生成装置,包括:
信息提取模块,用于对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据;
解析分类模块,用于对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息;所述非目标函数信息为所述函数信息中不包括所述目标函数信息的函数信息;
文本生成模块,用于对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本;
函数指纹生成模块,用于通过所述目标文本生成与所述二进制文件对应的函数指纹。
可选的,所述解析分类模块,包括:
函数信息解析单元,用于对所述函数信息进行解析操作,以从所述函数信息中确定函数形参数量、内部函数数量、外部函数数量及外部函数名称、整型常量、字符串常量;
函数信息分类单元,用于对所述函数信息进行分类操作,将所述函数形参数量、所述内部函数数量、所述外部函数数量确定为不需要进行预处理操作的非目标函数信息,并将所述外部函数名称、所述整型常量、所述字符串常量确定为需要进行预处理操作的目标函数信息。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序以实现前述的函数指纹生成方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的函数指纹生成方法。
本申请中,首先对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据;然后对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息;所述非目标函数信息为所述函数信息中不包括所述目标函数信息的函数信息;最后对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本,通过所述目标文本生成与所述二进制文件对应的函数指纹。由此可见,通过本申请所述函数指纹生成方法,可以在函数层面对二进制文件进行函数提取操作,并从提取到的函数信息中确定需要进行预处理的目标函数信息以及不需要进行函数提取的非目标函数信息,然后通过预处理后函数信息、非目标函数信息以及从二进制文件中提取到的表数据生成目标文本,并通过目标文本生成与所述二进制文件对应的函数指纹。这样一来,由于相同源码在不同架构、不同编译环境、不同优化选项下编译出的二进制文件中,相同函数通常具有相似的函数名称以及参数列表,相似的常量值以及函数调用关系,因此可以基于二进制文件的函数信息生成相应的函数指纹,以通过函数指纹跨架构、编译环境以及编译优化选项确定出所述二进制文件中被调用的函数,进而增强函数指纹在文件同源性检测的泛用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种函数指纹生成方法流程图;
图2为本申请提供的一种预设json文本格式图;
图3为本申请提供的一种函数指纹生成方法时序图;
图4为本申请提供的一种函数指纹生成装置结构示意图;
图5为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,由于在不同架构,不同编译环境、不同编译优化选项下编译出来的二进制文件存在一定差异,会导致最终提取到的函数指纹完全不同。如果指纹数据库没有采集到相同编译环境下对应二进制文件的函数指纹信息,要准确识别出正确的组件及版本的概率很低。因此现有技术中缺少一种跨架构、编译环境、编译优化选项的函数指纹生成方法。
为了解决上述技术问题,本发明的目的在于提供一种函数指纹生成方法、装置、设备及存储介质,可以基于二进制文件的函数信息生成相应的函数指纹,以通过函数指纹跨架构、编译环境以及编译优化选项确定出所述二进制文件中被调用的函数,进而增强函数指纹在文件同源性检测的泛用性。
参见图1所示,本发明实施例公开了一种函数指纹生成方法,包括:
步骤S11、对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据。
本实施例中,对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据的,包括:判断是否接收到二进制文件,若接收到所述二进制文件,则基于预设信息提取脚本以及预设反编译工具对所述二进制文件进行信息提取操作,以确定所述二进制文件的函数信息以及import表数据。也即,为了通过二进制文件的函数指纹实现识别同一源码在其他架构、编译环境、编译优化选项下生成的二进制文件,并可进一步通过该函数指纹识别其他二进制文件复用了该源码里面的函数或静态编译引用了哪些函数,因此需要先判断是否接收到二进制文件,如果接收到所述二进制文件,则需要根据预设的提取脚本以及预设的反编译工具对所述二进制文件进行函数提取操作,以确定所述二进制文件的函数信息以及import表数据(Import Address Table(IAT),指在可执行文件中记录用于导入动态链接库中函数的表格)。需要进行说明的是,所述预设提取脚本可以为基于python语言的脚本,所述预设反编译工具包括但不限于Radare2、Ghidra、IDA等工具。
步骤S12、对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息;所述非目标函数信息为所述函数信息中不包括所述目标函数信息的函数信息。
本实施例中,对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息,包括:对所述函数信息进行解析操作,以从所述函数信息中确定函数形参数量、内部函数数量、外部函数数量及外部函数名称、整型常量、字符串常量;对所述函数信息进行分类操作,将所述函数形参数量、所述内部函数数量、所述外部函数数量确定为不需要进行预处理操作的非目标函数信息,并将所述外部函数名称、所述整型常量、所述字符串常量确定为需要进行预处理操作的目标函数信息。也即,从二进制文件中提取到的函数信息包括需要进行预处理的函数信息,也包括不需要进行预处理的函数信息,并且对于相同源码在不同架构、不同编译环境、不同优化选项下编译出的二进制文件中,相同函数通常具有如下的相似点:第一点是函数名称以及参数列表,相同的函数通常具有相同的名称和参数列表,但如果以软件或操作系统的release版本和去除符号信息编译的情况下,则不具备相同的函数名,由于函数在二进制文件中的偏移不一定相同,会导致自动生成的函数名不同,而对于函数的参数个数,则是由函数定义和函数调用之间的约定决定的,发生改变的概率很低;第二点是常量值,如果函数包含硬编码的常量值,例如整型常量、字符串常量,那么在不同编译环境下编译出的二进制文件中也应该是相同的。但因为不同优化选项的影响,可能提取出来的常量值顺序会有一定程度的差异;第三点是函数调用关系,例如函数调用的内部函数和外部组件导入函数,在去除符号信息的release版本中,内部函数名称也许会不一致,但数量是确定的,而外部导入函数的名称和数量是确定的;因此需要对提取到的函数信息进行解析操作,以从提取到的函数信息中确定出函数形参数量、内部函数数量、外部函数数量及外部函数名称、整型常量、字符串常量,然后再进行分类操作以便确定出需要进行预处理的目标函数信息。这样一来,由于相同源码在不同架构、不同编译环境、不同优化选项下编译出的二进制文件中,相同函数通常具有相似性,可以对提取到的二进制文件的函数信息进行解析,以通过解析后得到的函数信息生成函数指纹,以通过生成的函数指纹跨架构、编译环境以及编译优化选项确定出二进制文件中被调用的函数,使通过本申请中所述函数指纹生成方法生成的函数指纹拥有更高的泛用性。
步骤S13、对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本,通过所述目标文本生成与所述二进制文件对应的函数指纹。
本实施例中,对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本,包括:对所述目标函数信息进行预处理操作,以调整所述整型常量、所述字符串常量以及所述外部函数名称的顺序,得到预处理后函数信息;基于所述预处理后函数信息、所述非目标函数信息、所述表数据根据预设json格式生成目标json文本。也即,为了解决不同优化选项带来的差异,需要对提取到的函数信息中的目标函数信息进项预处理操作,也即对函数信息中的整型常量、字符串常量、外部函数名称进行预处理操作,以消除不同优化选项带来的差异,以得到预处理后函数信息,然后根据预处理后函数信息、非目标函数信息,也即函数形参数量、内部函数数量、外部函数数量以及import表数据根据预设json格式生成目标json文本,并且在生成json文本时通过排除引用外部函数中一些和操作系统平台相关的系统函数,解决了跨操作系统平台之间的差异,且所述预设json格式如图2所示。
需要进行说明的是,对所述目标函数信息进行预处理操作,以调整所述整型常量、所述字符串常量以及所述外部函数名称的顺序,得到预处理后函数信息,包括:对所述目标函数信息进行预处理操作,以确定所述整型常量的大小排序、所述字符串常量的顺序排序以及所述外部函数名称的顺序排序;基于所述整型常量的大小排序、所述字符串常量的顺序排序以及所述外部函数名称的顺序排序,分别对所述整型常量、所述字符串常量以及所述外部函数名称进行调整,以得到调整后整型常量、调整后字符串常量以及调整后外部函数名称,并将所述调整后整型常量、所述调整后字符串常量以及所述调整后外部函数名称确定为预处理后函数信息。也即,针对函数信息中的整型常量、字符串常量、外部函数名称需要进行不同的预处理操作,对于整形常量,需要确定整形常量的大小,并根据确定的整型常量的大小进行排序,然后将排序后的整型常量整合成一个数组;对于字符串常量,需要先去除字符串常量中的不可见字符,并按照字母表顺序或Unicode编码顺序从第一个字母和/或字符依次进行排序整合成一个字符串文本;对于引用的外部函数的名称,则按照字母表顺序第一个字母依次进行排序整合成一个字符串文本。由此可以消除目标函数信息在顺序上的差异,并得到预处理后函数信息,也即得到调整后整型常量、调整后字符串常量以及调整后外部函数名称。
进一步需要进行说明的是,通过所述目标文本生成与所述二进制文件对应的函数指纹,包括:利用预设哈希算法对所述目标文本进行处理,以生成与所述二进制文件对应的函数指纹,并将所述函数指纹存入预设数据库;所述预设哈希算法为MD5信息摘要算法或安全散列算法。也即,在得到生成的json文本后,需要通过预设哈希算法对生成的json文本进行处理,以得到预接收到的二进制文件对应的函数指纹,需要进行说明的是,所述预设哈希算法包括但不限于MD5(Message-Digest Algorithm 5)信息摘要算法、SHA-256(SecureHashAlgorithm-256)安全散列算法,可以根据用户需求自行选择,在此不作限定。并且在得到函数指纹后,需要将得到的函数指纹保存至预设数据库中,以便后续进行二进制文件的匹配。
由此可见,通过本申请所述函数指纹生成方法,可以在函数层面对二进制文件进行函数提取操作,并从提取到的函数信息中确定需要进行预处理的目标函数信息以及不需要进行函数提取的非目标函数信息,然后通过预处理后函数信息、非目标函数信息以及从二进制文件中提取到的表数据生成目标文本,并通过目标文本生成与所述二进制文件对应的函数指纹。这样一来,由于相同源码在不同架构、不同编译环境、不同优化选项下编译出的二进制文件中,相同函数通常具有相似的函数名称以及参数列表,相似的常量值以及函数调用关系,因此可以在函数层面基于二进制文件的函数信息生成相应的函数指纹,以通过函数指纹跨架构、编译环境以及编译优化选项确定出所述二进制文件中被调用的函数,这样可以在函数层面避免提取的函数指纹在不同情况下匹配效果不好的问题,极大减少了所需采集指纹库的大小,并且可以用于如解析某个已知组件如openssl编译后二进制文件libcrypto.so、libssl.so的函数指纹,进而可识别其他情况下由同一份openssl源码编译后的未知二进制文件,以及某个未知二进制文件是否静态编译引用了openssl库里面的函数等情况,增强了通过本申请所述函数指纹生成方法生成的函数指纹在不同场景的适用性,并且提高了通过本申请所述函数指纹生成方法生成的函数指纹的可扩展性。
参见图3所示,本发明实施例公开了一种函数指纹生成方法,包括:
首先判断是否接收到二进制文件,如果接收到所述二进制文件,则基于预设的python信息提取脚本以及预设的如Radare2、Ghidra、IDA等工具反编译工具对所述二进制文件进行信息提取操作,以确定所述二进制文件的函数信息以及import表数据。在确定了函数信息之后,需要对所述函数信息进行解析操作,以从所述函数信息中确定函数形参数量、调用内部函数数量、引用外部函数数量及外部函数名称、整型常量、字符串常量,然后对所述函数信息进行分类操作,以便将所述函数形参数量、所述内部函数数量、所述外部函数数量确定为不需要进行预处理操作的非目标函数信息,并将所述外部函数名称、所述整型常量、所述字符串常量确定为需要进行预处理操作的目标函数信息。然后针对所述整型常量、所述字符串常量、所述外部函数名称分别进行不同的预处理操作,对于整形常量,需要确定整形常量的大小,并根据确定的整型常量的大小进行排序,然后将排序后的整型常量整合成一个数组;对于字符串常量,需要先去除字符串常量中的不可见字符,并按照字母表顺序或Unicode编码顺序从第一个字母和/或字符依次进行排序整合成一个字符串文本;对于引用的外部函数的名称,则按照字母表顺序第一个字母依次进行排序整合成一个字符串文本,以得到预处理后函数信息。然后基于所述预处理后函数信息,所述非目标函数信息以及所述import表数据,按照预设的json格式生成json文本。最后利用预设的例如MD5信息摘要算法或SHA-256安全散列算法等哈希算法,对生成的json文本进行处理,生成与接收到的二进制文件对应的函数指纹。
参见图4所示,本发明实施例公开了一种函数指纹生成装置,包括:
信息提取模块11,用于对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据;
解析分类模块12,用于对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息;所述非目标函数信息为所述函数信息中不包括所述目标函数信息的函数信息;
文本生成模块13,用于对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本;
函数指纹生成模块14,用于通过所述目标文本生成与所述二进制文件对应的函数指纹。
由此可见,通过本申请所述函数指纹生成方法,可以在函数层面对二进制文件进行函数提取操作,并从提取到的函数信息中确定需要进行预处理的目标函数信息以及不需要进行函数提取的非目标函数信息,然后通过预处理后函数信息、非目标函数信息以及从二进制文件中提取到的表数据生成目标文本,并通过目标文本生成与所述二进制文件对应的函数指纹。这样一来,由于相同源码在不同架构、不同编译环境、不同优化选项下编译出的二进制文件中,相同函数通常具有相似的函数名称以及参数列表,相似的常量值以及函数调用关系,因此可以在函数层面基于二进制文件的函数信息生成相应的函数指纹,以通过函数指纹跨架构、编译环境以及编译优化选项确定出所述二进制文件中被调用的函数,这样可以在函数层面避免提取的函数指纹在不同情况下匹配效果不好的问题,极大减少了所需采集指纹库的大小,增强了通过本申请所述函数指纹生成方法生成的函数指纹在不同场景的适用性,并且提高了通过本申请所述函数指纹生成方法生成的函数指纹的可扩展性。
在一些实施例中,所述信息提取模块11,具体可以包括:
信息提取单元,用于判断是否接收到二进制文件,若接收到所述二进制文件,则基于预设信息提取脚本以及预设反编译工具对所述二进制文件进行信息提取操作,以确定所述二进制文件的函数信息以及import表数据。
在一些实施例中,所述解析分类模块12,具体可以包括:
函数信息解析单元,用于对所述函数信息进行解析操作,以从所述函数信息中确定函数形参数量、内部函数数量、外部函数数量及外部函数名称、整型常量、字符串常量;
函数信息分类单元,用于对所述函数信息进行分类操作,将所述函数形参数量、所述内部函数数量、所述外部函数数量确定为不需要进行预处理操作的非目标函数信息,并将所述外部函数名称、所述整型常量、所述字符串常量确定为需要进行预处理操作的目标函数信息。
在一些实施例中,所述文本生成模块13,具体可以包括:
信息预处理子模块,用于对所述目标函数信息进行预处理操作,以调整所述整型常量、所述字符串常量以及所述外部函数名称的顺序,得到预处理后函数信息;
文本生成子模块,用于基于所述预处理后函数信息、所述非目标函数信息、所述表数据根据预设json格式生成目标json文本。
在一些实施例中,所述信息预处理子模块,具体可以包括:
差异确定单元,用于对所述目标函数信息进行预处理操作,以确定所述整型常量的大小排序、所述字符串常量的顺序排序以及所述外部函数名称的顺序排序;
差异调整单元,用于基于所述整型常量的大小排序、所述字符串常量的顺序排序以及所述外部函数名称的顺序排序,分别对所述整型常量、所述字符串常量以及所述外部函数名称进行调整,以得到调整后整型常量、调整后字符串常量以及调整后外部函数名称,并将所述调整后整型常量、所述调整后字符串常量以及所述调整后外部函数名称确定为预处理后函数信息。
在一些实施例中,所述函数指纹生成模块14,具体可以包括:
函数指纹生成单元,用于利用预设哈希算法对所述目标文本进行处理,以生成与所述二进制文件对应的函数指纹,并将所述函数指纹存入预设数据库;所述预设哈希算法为MD5信息摘要算法或安全散列算法。
进一步的,本申请实施例还公开了一种电子设备,图5是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图5为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的函数指纹生成方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的函数指纹生成方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的函数指纹生成方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种函数指纹生成方法,其特征在于,包括:
对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据;
对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息;所述非目标函数信息为所述函数信息中不包括所述目标函数信息的函数信息;
对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本,通过所述目标文本生成与所述二进制文件对应的函数指纹。
2.根据权利要求1所述的函数指纹生成方法,其特征在于,所述对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据,包括:
判断是否接收到二进制文件,若接收到所述二进制文件,则基于预设信息提取脚本以及预设反编译工具对所述二进制文件进行信息提取操作,以确定所述二进制文件的函数信息以及import表数据。
3.根据权利要求1所述的函数指纹生成方法,其特征在于,所述对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息,包括:
对所述函数信息进行解析操作,以从所述函数信息中确定函数形参数量、内部函数数量、外部函数数量及外部函数名称、整型常量、字符串常量;
对所述函数信息进行分类操作,将所述函数形参数量、所述内部函数数量、所述外部函数数量确定为不需要进行预处理操作的非目标函数信息,并将所述外部函数名称、所述整型常量、所述字符串常量确定为需要进行预处理操作的目标函数信息。
4.根据权利要求3所述的函数指纹生成方法,其特征在于,所述对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本,包括:
对所述目标函数信息进行预处理操作,以调整所述整型常量、所述字符串常量以及所述外部函数名称的顺序,得到预处理后函数信息;
基于所述预处理后函数信息、所述非目标函数信息、所述表数据根据预设json格式生成目标json文本。
5.根据权利要求4所述的函数指纹生成方法,其特征在于,所述对所述目标函数信息进行预处理操作,以调整所述整型常量、所述字符串常量以及所述外部函数名称的顺序,得到预处理后函数信息,包括:
对所述目标函数信息进行预处理操作,以确定所述整型常量的大小排序、所述字符串常量的顺序排序以及所述外部函数名称的顺序排序;
基于所述整型常量的大小排序、所述字符串常量的顺序排序以及所述外部函数名称的顺序排序,分别对所述整型常量、所述字符串常量以及所述外部函数名称进行调整,以得到调整后整型常量、调整后字符串常量以及调整后外部函数名称,并将所述调整后整型常量、所述调整后字符串常量以及所述调整后外部函数名称确定为预处理后函数信息。
6.根据权利要求1至5任一项所述的函数指纹生成方法,其特征在于,所述通过所述目标文本生成与所述二进制文件对应的函数指纹,包括:
利用预设哈希算法对所述目标文本进行处理,以生成与所述二进制文件对应的函数指纹,并将所述函数指纹存入预设数据库;所述预设哈希算法为MD5信息摘要算法或安全散列算法。
7.一种函数指纹生成装置,其特征在于,包括:
信息提取模块,用于对接收到的二进制文件进行函数信息提取操作,以得到所述二进制文件中包含的函数信息以及表数据;
解析分类模块,用于对所述函数信息进行解析操作以及分类操作,以从所述函数信息中确定目标函数信息以及非目标函数信息;所述非目标函数信息为所述函数信息中不包括所述目标函数信息的函数信息;
文本生成模块,用于对所述目标函数信息进行预处理操作,并基于所述预处理操作得到的预处理后函数信息、所述非目标函数信息以及所述表数据生成预设文本格式的目标文本;
函数指纹生成模块,用于通过所述目标文本生成与所述二进制文件对应的函数指纹。
8.根据权利要求7所述的函数指纹生成装置,其特征在于,所述解析分类模块,包括:
函数信息解析单元,用于对所述函数信息进行解析操作,以从所述函数信息中确定函数形参数量、内部函数数量、外部函数数量及外部函数名称、整型常量、字符串常量;
函数信息分类单元,用于对所述函数信息进行分类操作,将所述函数形参数量、所述内部函数数量、所述外部函数数量确定为不需要进行预处理操作的非目标函数信息,并将所述外部函数名称、所述整型常量、所述字符串常量确定为需要进行预处理操作的目标函数信息。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至6任一项所述的函数指纹生成方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的函数指纹生成方法。
CN202310833847.7A 2023-07-07 2023-07-07 一种函数指纹生成方法、装置、设备及存储介质 Pending CN116775120A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310833847.7A CN116775120A (zh) 2023-07-07 2023-07-07 一种函数指纹生成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310833847.7A CN116775120A (zh) 2023-07-07 2023-07-07 一种函数指纹生成方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116775120A true CN116775120A (zh) 2023-09-19

Family

ID=88013284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310833847.7A Pending CN116775120A (zh) 2023-07-07 2023-07-07 一种函数指纹生成方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116775120A (zh)

Similar Documents

Publication Publication Date Title
EP2693356B1 (en) Detecting pirated applications
CN111447215A (zh) 数据检测方法、装置和存储介质
CN113486350B (zh) 恶意软件的识别方法、装置、设备及存储介质
KR20160109870A (ko) 안드로이드 멀웨어의 고속 검색 시스템 및 방법
CN110619213A (zh) 基于多模型特征的恶意软件识别方法、系统及相关装置
CN111191201A (zh) 基于数据埋点的用户识别方法、装置、设备及存储介质
CN113688240B (zh) 威胁要素提取方法、装置、设备及存储介质
CN111563015A (zh) 数据监控方法及装置、计算机可读介质及终端设备
CN104899009A (zh) 一种安卓应用的识别方法及装置
CN111338692A (zh) 基于漏洞代码的漏洞分类方法、装置及电子设备
CN108881150B (zh) 一种检测任务的处理方法、装置、电子设备及存储介质
CN108494728B (zh) 防止流量劫持的黑名单库创建方法、装置、设备及介质
CN111475196B (zh) 编译告警溯源方法、装置、电子设备及计算机可读介质
CN110245059B (zh) 一种数据处理方法、设备及存储介质
CN113935022A (zh) 一种同源样本捕获方法、装置、电子设备及存储介质
CN116755745A (zh) 代码编辑器的插件更新方法、装置、设备及存储介质
CN116775120A (zh) 一种函数指纹生成方法、装置、设备及存储介质
CN115291762A (zh) 业务项目的触发方法及装置、存储介质、计算机设备
CN111309311B (zh) 一种漏洞检测工具生成方法、装置、设备及可读存储介质
CN114491528A (zh) 恶意软件的检测方法、装置和设备
CN110858852B (zh) 一种注册域名的获取方法及装置
CN112685072A (zh) 通信地址知识库的生成方法、装置、设备及存储介质
CN112487432A (zh) 一种基于图标匹配的恶意文件检测的方法、系统及设备
CN112511643A (zh) 一种报文数据提取方法及装置
CN107229865A (zh) 一种解析Webshell入侵原因的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination