CN110569403A - 一种字符串提取的方法以及相关装置 - Google Patents
一种字符串提取的方法以及相关装置 Download PDFInfo
- Publication number
- CN110569403A CN110569403A CN201910859310.1A CN201910859310A CN110569403A CN 110569403 A CN110569403 A CN 110569403A CN 201910859310 A CN201910859310 A CN 201910859310A CN 110569403 A CN110569403 A CN 110569403A
- Authority
- CN
- China
- Prior art keywords
- section
- character string
- sections
- size
- determining
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种字符串提取的方法以及相关装置,通过对可移植的执行体文件区块结构的解析,确定可移植的执行体文件中节的类型,并对于不同类型的节采用不同的提取字符串方式,该过程还设置了节的属性阈值,从而排除了垃圾字符串的干扰,减少了任务量,提高了提取效率;而且对于不同类型的节采用不同的处理方式,进一步地提高了字符串提取的准确性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种字符串提取的方法以及相关装置。
背景技术
文件是一些在计算机磁盘上连续存放的二进制的数据,而对于不同的操作系统,其可执行文件的格式是不同的。其中可移植的执行体(portable executable fileformat,PE)格式是目前Windows平台的主流可执行文件格式。
为了对文件进行解析,一般需要对PE文件中的字符串进行提取,并分析字符串的属性从而确定PE文件的属性,现有的查找字符串的方法,主要是通过对全文件从头到尾进行遍历搜索。
但是由于源代码中出现的字符串经过编译器编译、链接后,以某种特定的格式储存在PE文件中,对于不同的编译器,字符串储存的位置、格式都有可能会不同,对于全文进行遍历搜索字符串的方案,可能找到很多无用的垃圾字符串,且搜索量大,影响字符串提取的效率即准确性。
发明内容
有鉴于此,本申请第一方面提供一种字符串提取的方法,可应用于安全监测系统或程序运行过程中,具体包括:获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;
根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;
若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;
若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。
优选的,在本申请一些可能的实现方式中,所述根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,包括:
根据所述节的属性信息确定所述节所属的区块结构;
获取所述区块结构的属性信息,以确定特征参数,所述特征参数用于指示所述区块结构中特征字段对应的数值;
根据所述特征参数判断所述节的数据类型。
优选的,在本申请一些可能的实现方式中,所述根据所述特征参数判断所述节的数据类型,包括:
若所述特征参数对应的特征字段指示代码结构,且特征参数满足预设条件,则确定所述节的数据类型的代码节,所述预设条件基于特征参数于特征常数的关系确定;
若所述特征参数对应的特征字段指示数据结构,且特征参数满足所述预设条件,则确定所述节的数据类型的数据节。
优选的,在本申请一些可能的实现方式中,所述根据所述节的属性信息确定所述节所属的区块结构,包括:
根据所述节的属性信息确定所述节所属的区块结构;
提取所述区块结构中尺寸特征,所述尺寸特征用于指示多个所述节的大小;
根据多个所述节的大小的离散度确定所述节的熵值;
所述根据所述特征参数判断所述节的数据类型,包括:
若所述节的熵值满足所述预设规则,且所述节的大小满足所述预设规则,则根据所述特征参数判断所述节的数据类型。
优选的,在本申请一些可能的实现方式中,所述方法还包括:
确定多个负样本节,并确定所述负样本节的大小,所述负样本节用于指示不包含所述目标字符串的节;
构建所述负样本节与所述负样本节大小的对应关系,并进行正态分布,以得到所述负样本节大小的特征值;
根据所述特征值确定所述预设规则中判断所述节的大小的大小特征阈值;
所述节的大小满足所述预设规则,包括:
所述节的大小小于所述大小特征阈值。
优选的,在本申请一些可能的实现方式中,中文字符串占用双字节,所述遍历所述节,以提取目标字符串,包括:
确定所述目标字符串的码位范围,并以双字节表示所述目标字符串;
根据所述双字节的高位和低位与所述码位范围的预设区域的对应关系确定所述目标字符串是否为中文字符串,所述预设区域基于所述双字节的属性设定;
若是,则根据所述双字节的尾部的特征参数确定完整的中文字符串,以提取目标字符串。
优选的,在本申请一些可能的实现方式中,所述字符串提取的方法应用于服务器,所述服务器为区块链节点中的区块节点设备。
本申请第二方面提供一种字符串提取的装置,包括:获取单元,用于获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;
判断单元,用于根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;
提取单元,用于若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;
所述提取单元,还用于若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。
优选的,在本申请一些可能的实现方式中,所述判断单元,具体用于根据所述节的属性信息确定所述节所属的区块结构;
所述判断单元,具体用于获取所述区块结构的属性信息,以确定特征参数,所述特征参数用于指示所述区块结构中特征字段对应的数值;
所述判断单元,具体用于根据所述特征参数判断所述节的数据类型。
优选的,在本申请一些可能的实现方式中,所述判断单元,具体用于若所述特征参数对应的特征字段指示代码结构,且特征参数满足预设条件,则确定所述节的数据类型的代码节,所述预设条件基于特征参数于特征常数的关系确定;
所述判断单元,具体用于若所述特征参数对应的特征字段指示数据结构,且特征参数满足所述预设条件,则确定所述节的数据类型的数据节。
优选的,在本申请一些可能的实现方式中,所述判断单元,具体用于根据所述节的属性信息确定所述节所属的区块结构;
所述判断单元,具体用于提取所述区块结构中尺寸特征,所述尺寸特征用于指示多个所述节的大小;
所述判断单元,具体用于根据多个所述节的大小的离散度确定所述节的熵值;
所述判断单元,具体用于若所述节的熵值满足所述预设规则,且所述节的大小满足所述预设规则,则根据所述特征参数判断所述节的数据类型。
优选的,在本申请一些可能的实现方式中,所述获取单元,还用于确定多个负样本节,并确定所述负样本节的大小,所述负样本节用于指示不包含所述目标字符串的节;
所述获取单元,还用于构建所述负样本节与所述负样本节大小的对应关系,并进行正态分布,以得到所述负样本节大小的特征值;
所述获取单元,还用于根据所述特征值确定所述预设规则中判断所述节的大小的大小特征阈值;
所述提取单元,具体用于所述节的大小小于所述大小特征阈值。
优选的,在本申请一些可能的实现方式中,中文字符串占用双字节,所述提取单元,具体用于确定所述目标字符串的码位范围,并以双字节表示所述目标字符串;
所述提取单元,具体用于根据所述双字节的高位和低位与所述码位范围的预设区域的对应关系确定所述目标字符串是否为中文字符串,所述预设区域基于所述双字节的属性设定;
所述提取单元,具体用于若是,则根据所述双字节的尾部的特征参数确定完整的中文字符串,以提取目标字符串。
优选的,在本申请一些可能的实现方式中,所述字符串提取的装置应用于服务器,所述服务器为区块链节点中的区块节点设备。
本申请第三方面提供一种计算机设备,包括:存储器、处理器以及总线系统;所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行上述第一方面或第一方面任一项所述的字符串提取的的方法。
本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一项所述的字符串提取的的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
通过获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;然后根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;根据不同的节的数据类型选择对应的处理方式,即若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。该过程不需要遍历所有的PE文件,减少了任务量,提高了提取效率;而且对于不同类型的节采用不同的处理方式,减少了垃圾字符串的干扰,进一步地提高字符串提取的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为安全监测系统运行的网络架构图;
图2为一种安全监测的流程架构图;
图3为本申请实施例提供的一种字符串提取的方法的流程图;
图4为本申请实施例提供的另一种字符串提取的方法的流程图;
图5为本申请实施例提供的一种字符串提取的界面显示示意图;
图6为本申请实施例提供的字符串提取装置的结构示意图;
图7为本申请实施例提供的另一种字符串提取装置的结构示意图;
图8A为本申请实施例提供的一种数据共享系统示意图;
图8B为本申请实施例提供的数据共享系统中的区块组成示意图;
图8C为本申请实施例提供的区块链节点的数据传输响应示意图。
具体实施方式
本申请实施例提供了一种字符串提取的方法以及相关装置,可以应用于机器人问答系统或其他应用字符串提取的应用的运行过程中,具体通过获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;然后根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;根据不同的节的数据类型选择对应的处理方式,即若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。该过程不需要遍历所有的PE文件,减少了任务量,提高了提取效率;而且对于不同类型的节采用不同的处理方式,减少了垃圾字符串的干扰,进一步地提高字符串提取的准确性。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请提供的字符串提取方法可以应用于可应用于安全监测系统的运行过程中,具体的,安全监测系统可以运行于如图1所示的网络架构中,如图1所示,是安全监测系统运行的网络架构图,如图可知,安全监测系统可以提供与多个信息源的字符串提取,通过提取字符串的特征信息,进而判断文件交互的安全性,可以理解的是,图1中示出了三种信息源,具体的,可以通过收集单独的文件作为信息源,可以提取终端中的PE文件作为信息源,还可以识别终端程序输出的相关语句作为信息源,在实际场景中可以有更多或更少的信息源参与到字符串提取的过程中,具体数量和种类因实际场景而定,此处不做限定;另外,图1中示出了一个服务器,但在实际场景中,也可以有多个服务器的参与,特别是在多应用数据交互的场景中,具体服务器数量因实际场景而定。
可以理解的是,上述安全监测系统可以运行于个人移动终端,也可以运行于服务器,还可以作为运行于第三方设备以提供字符串提取,以得到信息源安全监测的结果,例如:在实际场景中,安全监测系统运行于游戏安全TP平台中,当相关游戏启动时时,可以通过本申请的字符串提取方法提取相应的字符串,以判断运行游戏的安全性;具体的安全监测系统可以是以一种程序的形式在上述设备中运行,也可以作为上述设备中的系统部件进行运行,还可以作为云端服务程序的一种,具体运作模式因实际场景而定,此处不做限定。
文件是一些在计算机磁盘上连续存放的二进制的数据,而对于不同的操作系统,其可执行文件的格式是不同的。其中可移植的执行体格式是目前Windows平台的主流可执行文件格式。
为了对文件进行解析,一般需要对PE文件中的字符串进行提取,并分析字符串的属性从而确定PE文件的属性,现有的查找字符串的方法,主要是通过对全文件从头到尾进行遍历搜索。
但是由于源代码中出现的字符串经过编译器编译、链接后,以某种特定的格式储存在PE文件中,对于不同的编译器,字符串储存的位置、格式都有可能会不同,对于全文进行遍历搜索字符串的方案,可能找到很多无用的垃圾字符串,且搜索量大,影响字符串提取的效率即准确性。
为了解决上述问题,本申请提出了一种字符串提取的方法,该方法应用于图2所示的安全监测流程框架的字符串提取过程中,如图2所示,是一种安全监测的流程架构图,图中包括客户端以及服务端;其中,对于客户端组件收集上来的样本,会根据可疑文件库中的文件对静态文件进行字符串提取处理,由于文件可能被处理过,还可以进行文件预处理的过程,例如加壳判定、文件分类、脱壳等;然后分析人员会对提取出来的信息再进一步处理或直接提取特征。在字符串提取完成后,在后台会进行存储和Web端展示,分析人员会根据字符串的提示,做进一步的分析或直接提取特征。由于字符串是对人来说非常友好的提示,分析人员一般都会把它当作重要的信息和分析线索,因此提高了提取过程的准确性、全面性、效率。
可以理解的是,本申请所提供的方法可以为一种程序的写入,以作为硬件系统中的一种处理逻辑,也可以作为一种字符串提取装置,采用集成或外接的方式实现上述处理逻辑。作为一种实现方式,该字符串提取装置通过获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;然后根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;根据不同的节的数据类型选择对应的处理方式,即若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。该过程不需要遍历所有的PE文件,减少了任务量,提高了提取效率;而且对于不同类型的节采用不同的处理方式,减少了垃圾字符串的干扰,进一步地提高字符串提取的准确性。
结合上述流程架构,下面将对本申请中字符串提取的方法进行介绍,请参阅图3,图3为本申请实施例提供的一种字符串提取的方法的流程图,本申请实施例至少包括以下步骤:
301、获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息。
本实施例中,由于不同的操作系统,其可执行文件的格式是不同的。此处以Windows平台为例,结合PE文件的检测进行说明,具体的文件形式因实际场景中操作系统的类型确定,此处不做限定。
可以理解的是,对于PE结构的解析过程,可以是确定每个节的位置逐一进行解析,也可以以多个节作为集合进行解析,还可以对PE文件的节进行分类,根据分类后的节的集合进行解析。
302、根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型。
本实施例中,预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定。
根据预设规则判断所述节的数据类型的过程即基于节所述的区块结构中的内容进行判断的过程,首先根据所述节的属性信息确定所述节所属的区块结构;然后获取所述区块结构的属性信息,以确定特征参数,所述特征参数用于指示所述区块结构中特征字段对应的数值,具体的,若所述特征参数对应的特征字段指示代码结构,且特征参数满足预设条件,则确定所述节的数据类型的代码节,所述预设条件基于特征参数于特征常数的关系确定;若所述特征参数对应的特征字段指示数据结构,且特征参数满足所述预设条件,则确定所述节的数据类型的数据节。
例如,在一种可能的场景中,根据所述特征参数判断所述节的数据类型可以根据PE文件中的IMAGE_SECTION_HEADER区块结构中的特征参数Characteristics进行判断,其中利用Characteristics字段中对应的常量特征字段IMAGE_SCN_CNT_CODE(0x00000020)取值为1,即表示该节为代码节,如果对应的常量特征字段IMAGE_SCN_CNT_INITIALIZED_DATA(0x00000040)或IMAGE_SCN_CNT_UNINITIALIZED_DATA(0x00000080)取值为1,即表示该节为数据节。
可选的,为了排除垃圾字符串的干扰,即不对垃圾字符串进行提取,可以对待检测的PE文件中的节进行筛选,具体的,首先根据所述节的属性信息确定所述节所属的区块结构;然后提取所述区块结构中尺寸特征,所述尺寸特征用于指示多个所述节的大小;并根据多个所述节的大小的离散度确定所述节的熵值;若所述节的熵值满足所述预设规则,且所述节的大小满足所述预设规则,则根据所述特征参数判断所述节的数据类型。例如:取节区块结构的尺寸特征SizeOfRawData作为节大小;再用标准方法计算节的熵值(Entropy),熵值在0-8.0之间。可以设置判断条件:节大小大于8MB,且节熵值大于5.5,则表示这个节有可能太大,会导致搜索速度慢;且有可能是被压缩过,会找不到有用的字符串,可以跳过,而且跳过这种节一般不会造成太大的影响。
可选的,对于判断条件的设置过程可以是基于统计而产生的,首先确定多个负样本节,并确定所述负样本节的大小,所述负样本节用于指示不包含所述目标字符串的节;然后构建所述负样本节与所述负样本节大小的对应关系,并进行正态分布,以得到所述负样本节大小的特征值;接下来根据所述特征值确定所述预设规则中判断所述节的大小的大小特征阈值。例如:通过多个负样本节的统计发现,节大小大于8MB的节分布数最大,则确定特征阈值为8MB,即节大小大于8MB的节跳过检测。
303、若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串。
本实施例中,引用字符串用于指示所述字符串的索引地址,例如节中的指令为push 40142Ah,则搜索地址40142Ah处是否存在字符串。
可以理解的是,节中的指令可以是数据传输指令,例如:MOV传送字或字节,MOVSX先符号扩展再传送;也可以是算术运算指令,例如:AAA加法的ASCII码调整,DAA加法的十进制调整,还可以是汇编语言指令集中其他存在引用关系的指令。
304、若所述节的数据类型为数据节,则遍历所述节。
本实施例中,遍历节的过程即根据可疑数据库中记录的节的信息对照的进行遍历,对于遍历的结果还可以设置相应的可疑数据库中记录的标签,以便于相关人员查看。
305、提取目标字符串。
本实施例中,基于上述步骤303-305的描述可以实现目标字符串的提取过程,但是对于目标字符串的情况,需要进行额外的处理过程,具体的,由于中文字符串占用双字节,则首先确定所述目标字符串的码位范围,并以双字节表示所述目标字符串;然后根据所述双字节的高位和低位与所述码位范围的预设区域的对应关系确定所述目标字符串是否为中文字符串,所述预设区域基于所述双字节的属性设定;若是,则根据所述双字节的尾部的特征参数确定完整的中文字符串,以提取目标字符串。在一种可能的场景中,中文的双字节码位范围是落在0xB0A1-0xF7FE之间,也就是判断双字节的高位在0xb0和0xf7之间,低位在0xa1到0xfe之间,则确定目标字符串为简体中文的字符串,再判断字符串是否以单字节0(ASCII)或者双字节00(UNICODE)结尾,则可完整地识别出一条中文字符串,进而实现对应的提取过程。
可选的,由于PE文件的区块结构中存在大量的重复字符串,对于提取到的目标字符串可以进行去重后进行储存,进一步的减少工作量,提高提取字符串的效率。
结合上述实施例可知,通过获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;然后根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;根据不同的节的数据类型选择对应的处理方式,即若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。该过程不需要遍历所有的PE文件,减少了任务量,提高了提取效率;而且对于不同类型的节采用不同的处理方式,减少了垃圾字符串的干扰,进一步地提高字符串提取的准确性。
上述实施例介绍了字符串的提取过程,下面结合一种具体的流程进行说明,如图4所示,图4为本申请实施例提供的另一种字符串提取的方法的流程图,本申请实施例至少包括以下步骤:
401、文件解析。
本实施例中,文件解析的过程参照图3中步骤301的相关描述,此处不做赘述。
402、遍历下一节。
本实施例中,对于节的遍历过程可以是逐一进行的,也可以是多个节同时进行的,直到完成所有节的遍历过程。
403、节的属性判断。
本实施例中,可以设置节的大小阈值为8MB,节的熵值阈值为5.5,即节的大小大于8MB,且熵值大于5.5,则跳过该节的检测。
步骤404-405可以参照图3实施例中步骤303的相关描述,此处不做赘述。
步骤406-407可以参照图3实施例中步骤304的相关描述,此处不做赘述。
可以理解的是,步骤404与406的顺序可以互换,即可以先判断节是否为代码节,也可以先判断节是否为数据节。
步骤408可以参照图3实施例中步骤305的相关描述,此处不做赘述。
409、已遍历所有节。
本实施例中,作为一个全遍历的过程,判断某一个节遍历完成之后,可以将其检测结果与PE文件中与该节相似的节进行关联,当遍历到关联的节时可以跳过对于该节属性的判断,直接采用对应的提取操作即可。
通过上述实施例流程可以实现对于PE文件中特定字符串的提取过程,在一种测试实例中,采用上述实施例的字符串提取的方法对1671个样本进行处理,共耗时:40分钟45秒,平均每个样本耗时1.4s左右,相比于全文件搜索字符串的方式提升了接近10倍的性能。
在一种可能的显示方式中,可以采用如图5所述的显示方式,图5为本申请实施例提供的一种字符串提取的界面显示示意图。该界面可以包括多个文件的安全监测状态以及对应文件的总节数,用户可以通过点击详情知晓提取采用本申请提供的方法提取目标字符串的过程中,处理的代码节、数据节或垃圾节的数量。
可以理解的是,上述实施例中设计的参数或步骤均可在该界面中进行显示,此处不做限定。
为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参阅图6,图6为本申请实施例提供的字符串提取装置的结构示意图,字符串提取装置600包括:
获取单元601,用于获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;
判断单元602,用于根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;
提取单元603,用于若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;
所述提取单元603,还用于若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。
优选的,在本申请一些可能的实现方式中,所述判断单元602,具体用于根据所述节的属性信息确定所述节所属的区块结构;
所述判断单元602,具体用于获取所述区块结构的属性信息,以确定特征参数,所述特征参数用于指示所述区块结构中特征字段对应的数值;
所述判断单元602,具体用于根据所述特征参数判断所述节的数据类型。
优选的,在本申请一些可能的实现方式中,所述判断单元602,具体用于若所述特征参数对应的特征字段指示代码结构,且特征参数满足预设条件,则确定所述节的数据类型的代码节,所述预设条件基于特征参数于特征常数的关系确定;
所述判断单元602,具体用于若所述特征参数对应的特征字段指示数据结构,且特征参数满足所述预设条件,则确定所述节的数据类型的数据节。
优选的,在本申请一些可能的实现方式中,所述判断单元602,具体用于根据所述节的属性信息确定所述节所属的区块结构;
所述判断单元602,具体用于提取所述区块结构中尺寸特征,所述尺寸特征用于指示多个所述节的大小;
所述判断单元602,具体用于根据多个所述节的大小的离散度确定所述节的熵值;
所述判断单元602,具体用于若所述节的熵值满足所述预设规则,且所述节的大小满足所述预设规则,则根据所述特征参数判断所述节的数据类型。
优选的,在本申请一些可能的实现方式中,所述获取单元601,还用于确定多个负样本节,并确定所述负样本节的大小,所述负样本节用于指示不包含所述目标字符串的节;
所述获取单元601,还用于构建所述负样本节与所述负样本节大小的对应关系,并进行正态分布,以得到所述负样本节大小的特征值;
所述获取单元601,还用于根据所述特征值确定所述预设规则中判断所述节的大小的大小特征阈值;
所述提取单元603,具体用于所述节的大小小于所述大小特征阈值。
优选的,在本申请一些可能的实现方式中,中文字符串占用双字节,所述提取单元603,具体用于确定所述目标字符串的码位范围,并以双字节表示所述目标字符串;
所述提取单元603,具体用于根据所述双字节的高位和低位与所述码位范围的预设区域的对应关系确定所述目标字符串是否为中文字符串,所述预设区域基于所述双字节的属性设定;
所述提取单元603,具体用于若是,则根据所述双字节的尾部的特征参数确定完整的中文字符串,以提取目标字符串。
优选的,在本申请一些可能的实现方式中,所述字符串提取的装置应用于服务器,所述服务器为区块链节点中的区块节点设备。
通过获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;然后根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;根据不同的节的数据类型选择对应的处理方式,即若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。该过程不需要遍历所有的PE文件,减少了任务量,提高了提取效率;而且对于不同类型的节采用不同的处理方式,减少了垃圾字符串的干扰,进一步地提高字符串提取的准确性。
本申请实施例还提供了一种字符串提取装置,请参阅图7,图7是本申请实施例提供的另一种字符串提取装置的结构示意图,该字符串提取装置700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)722(例如,一个或一个以上处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对字符串提取装置中的一系列指令操作。更进一步地,中央处理器722可以设置为与存储介质730通信,在字符串提取装置700上执行存储介质730中的一系列指令操作。
字符串提取装置700还可以包括一个或一个以上电源726,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,和/或,一个或一个以上操作系统741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由字符串提取装置所执行的步骤可以基于该图7所示的字符串提取装置结构。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有字符串提取指令,当其在计算机上运行时,使得计算机执行如前述图2至图5所示实施例描述的方法中字符串提取装置所执行的步骤。
本申请实施例中还提供一种包括字符串提取指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图2至图5所示实施例描述的方法中字符串提取装置所执行的步骤。
本申请实施例还提供了一种字符串提取系统,所述字符串提取系统可以包含图6所描述实施例中的字符串提取装置,或者图7所描述的字符串提取装置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,字符串提取装置,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
另外,上述字符串提取的方法和装置还可以应用于数据共享系统中,参见图8A所示的数据共享系统,数据共享系统800是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点801,多个节点801可以是指数据共享系统中各个客户端,其中,每个客户端运行于基于本申请方法对应的终端设备上。每个节点801在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
表1节点与节点标识对应关系
节点名称 | 节点标识 |
节点1 | 117.114.151.174 |
节点2 | 117.116.189.145 |
… | … |
节点N | 119.123.789.258 |
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图8B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图8C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种字符串提取的方法,其特征在于,包括:
获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;
根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;
若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;
若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。
2.根据权利要求1所述的方法,其特征在于,所述根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,包括:
根据所述节的属性信息确定所述节所属的区块结构;
获取所述区块结构的属性信息,以确定特征参数,所述特征参数用于指示所述区块结构中特征字段对应的数值;
根据所述特征参数判断所述节的数据类型。
3.根据权利要求2所述的方法,其特征在于,所述根据所述特征参数判断所述节的数据类型,包括:
若所述特征参数对应的特征字段指示代码结构,且特征参数满足预设条件,则确定所述节的数据类型的代码节,所述预设条件基于特征参数于特征常数的关系确定;
若所述特征参数对应的特征字段指示数据结构,且特征参数满足所述预设条件,则确定所述节的数据类型的数据节。
4.根据权利要求2所述的方法,其特征在于,所述根据所述节的属性信息确定所述节所属的区块结构,包括:
根据所述节的属性信息确定所述节所属的区块结构;
提取所述区块结构中尺寸特征,所述尺寸特征用于指示多个所述节的大小;
根据多个所述节的大小的离散度确定所述节的熵值;
所述根据所述特征参数判断所述节的数据类型,包括:
若所述节的熵值满足所述预设规则,且所述节的大小满足所述预设规则,则根据所述特征参数判断所述节的数据类型。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
确定多个负样本节,并确定所述负样本节的大小,所述负样本节用于指示不包含所述目标字符串的节;
构建所述负样本节与所述负样本节大小的对应关系,并进行正态分布,以得到所述负样本节大小的特征值;
根据所述特征值确定所述预设规则中判断所述节的大小的大小特征阈值;
所述节的大小满足所述预设规则,包括:
所述节的大小小于所述大小特征阈值。
6.根据权利要求1-5任一项所述的方法,其特征在于,中文字符串占用双字节,所述遍历所述节,以提取目标字符串,包括:
确定所述目标字符串的码位范围,并以双字节表示所述目标字符串;
根据所述双字节的高位和低位与所述码位范围的预设区域的对应关系确定所述目标字符串是否为中文字符串,所述预设区域基于所述双字节的属性设定;
若是,则根据所述双字节的尾部的特征参数确定完整的中文字符串,以提取目标字符串。
7.根据权利要求1所述的方法,其特征在于,所述字符串提取的方法应用于终端设备,所述终端设备为区块链节点中的区块节点设备。
8.一种目标字符串提取的装置,其特征在于,包括:
获取单元,用于获取待检测的可移植的执行体文件,并确定所述可移植的执行体文件中多个节的属性信息;
判断单元,用于根据预设规则对多个所述节的属性信息逐一进行判断,以确定多个所述节的数据类型,所述预设规则基于所述节的大小或所述节的熵值与预设阈值的大小关系设定;
提取单元,用于若所述节的数据类型为代码节,则提取所述节中的指令,并对所述指令进行反汇编,以得到引用字符串,所述引用字符串用于指示所述字符串的索引地址;
所述提取单元,还用于若所述节的数据类型为数据节,则遍历所述节,以提取目标字符串。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器以及存储器:
所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行权利要求1至7任一项所述的字符串提取的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述权利要求1至7任一项所述的字符串提取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910859310.1A CN110569403B (zh) | 2019-09-11 | 2019-09-11 | 一种字符串提取的方法以及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910859310.1A CN110569403B (zh) | 2019-09-11 | 2019-09-11 | 一种字符串提取的方法以及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569403A true CN110569403A (zh) | 2019-12-13 |
CN110569403B CN110569403B (zh) | 2021-11-02 |
Family
ID=68779247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910859310.1A Active CN110569403B (zh) | 2019-09-11 | 2019-09-11 | 一种字符串提取的方法以及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569403B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656293A (zh) * | 2021-08-05 | 2021-11-16 | 上海钧正网络科技有限公司 | 一种用于流量回放的数据去重方法、测试方法、装置、计算机设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101393521A (zh) * | 2008-11-13 | 2009-03-25 | 上海交通大学 | Windows应用程序内部固化数据的提取系统 |
US20100162395A1 (en) * | 2008-12-18 | 2010-06-24 | Symantec Corporation | Methods and Systems for Detecting Malware |
US20110258616A1 (en) * | 2010-04-19 | 2011-10-20 | Microsoft Corporation | Intermediate language support for change resilience |
CN103544141A (zh) * | 2012-07-16 | 2014-01-29 | 哈尔滨安天科技股份有限公司 | 二进制数据中有意义字符串提取方法和系统 |
CN103679012A (zh) * | 2012-09-03 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种可移植可执行文件的聚类方法和装置 |
CN104252355A (zh) * | 2013-06-29 | 2014-12-31 | 北京新媒传信科技有限公司 | 一种获取Net程序集间差异信息的方法和装置 |
CN104298919A (zh) * | 2014-09-30 | 2015-01-21 | 珠海市君天电子科技有限公司 | 一种识别pe文件是否是资源文件的方法及装置 |
CN108062478A (zh) * | 2018-01-04 | 2018-05-22 | 北京理工大学 | 全局特征可视化与局部特征相结合的恶意代码分类方法 |
CN110096877A (zh) * | 2019-04-24 | 2019-08-06 | 厦门网宿有限公司 | 一种文件处理方法及装置 |
-
2019
- 2019-09-11 CN CN201910859310.1A patent/CN110569403B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101393521A (zh) * | 2008-11-13 | 2009-03-25 | 上海交通大学 | Windows应用程序内部固化数据的提取系统 |
US20100162395A1 (en) * | 2008-12-18 | 2010-06-24 | Symantec Corporation | Methods and Systems for Detecting Malware |
US20110258616A1 (en) * | 2010-04-19 | 2011-10-20 | Microsoft Corporation | Intermediate language support for change resilience |
CN103544141A (zh) * | 2012-07-16 | 2014-01-29 | 哈尔滨安天科技股份有限公司 | 二进制数据中有意义字符串提取方法和系统 |
CN103679012A (zh) * | 2012-09-03 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种可移植可执行文件的聚类方法和装置 |
CN104252355A (zh) * | 2013-06-29 | 2014-12-31 | 北京新媒传信科技有限公司 | 一种获取Net程序集间差异信息的方法和装置 |
CN104298919A (zh) * | 2014-09-30 | 2015-01-21 | 珠海市君天电子科技有限公司 | 一种识别pe文件是否是资源文件的方法及装置 |
CN108062478A (zh) * | 2018-01-04 | 2018-05-22 | 北京理工大学 | 全局特征可视化与局部特征相结合的恶意代码分类方法 |
CN110096877A (zh) * | 2019-04-24 | 2019-08-06 | 厦门网宿有限公司 | 一种文件处理方法及装置 |
Non-Patent Citations (4)
Title |
---|
ROBERT LYDA ET AL.: "Using Entropy Analysis to Find Encrypted and Packed Malware", 《IEEE SECURITY & PRIVACY》 * |
TZU-YEN WANG ET AL.: "Detecting Unknown Malicious Executables Using Portable Executable Headers", 《2009 FIFTH INTERNATIONAL JOINT CONFERENCE ON INC, IMS AND IDC》 * |
宋文纳 等: "恶意代码演化与溯源技术研究", 《软件学报》 * |
王蕊 等: "基于语义的恶意代码行为特征提取及检测方法", 《软件学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656293A (zh) * | 2021-08-05 | 2021-11-16 | 上海钧正网络科技有限公司 | 一种用于流量回放的数据去重方法、测试方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110569403B (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10498355B2 (en) | Searchable, streaming text compression and decompression using a dictionary | |
CN110020422B (zh) | 特征词的确定方法、装置和服务器 | |
US20210081437A1 (en) | Systems and methods for trie-based automated discovery of patterns in computer logs | |
CN112506951B (zh) | 数据库慢查询日志的处理方法、服务器、计算设备和系统 | |
CN109669795B (zh) | 崩溃信息处理方法及装置 | |
CN112364014B (zh) | 数据查询方法、装置、服务器及存储介质 | |
CN110768875A (zh) | 一种基于dns学习的应用识别方法及系统 | |
CN109246163A (zh) | 终端信息识别方法及装置 | |
US9201754B2 (en) | Recording application consumption details | |
CN113688240B (zh) | 威胁要素提取方法、装置、设备及存储介质 | |
EP3789882B1 (en) | Automatic configuration of logging infrastructure for software deployments using source code | |
CN108228875A (zh) | 基于完美哈希的日志解析方法及装置 | |
CN110995273A (zh) | 电力数据库的数据压缩方法、装置、设备及介质 | |
CN115033876A (zh) | 日志处理方法、日志处理装置、计算机设备及存储介质 | |
CN110569403B (zh) | 一种字符串提取的方法以及相关装置 | |
CN109698814B (zh) | 僵尸网络发现方法及僵尸网络发现装置 | |
CN112115313A (zh) | 正则表达式的生成、数据提取方法、装置、设备及介质 | |
CN115766258A (zh) | 一种基于因果关系图的多阶段攻击趋势预测方法、设备及存储介质 | |
CN110008701B (zh) | 基于elf文件特征的静态检测规则提取方法及检测方法 | |
CN112822121A (zh) | 流量识别方法、流量确定方法、知识图谱建立方法 | |
JP2018081403A (ja) | インシデント管理システム、インシデント管理方法およびコンピュータプログラム | |
KR20230021894A (ko) | 로그 데이터 파싱 방법 및 장치 | |
CN107169057B (zh) | 一种重复图片的检测方法和装置 | |
Kim et al. | PcapWT: An efficient packet extraction tool for large volume network traces | |
CN113806647A (zh) | 识别开发框架的方法及相关设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |