CN114626060A - 代码文件的识别方法、装置、计算机设备和可读存储介质 - Google Patents
代码文件的识别方法、装置、计算机设备和可读存储介质 Download PDFInfo
- Publication number
- CN114626060A CN114626060A CN202011463453.XA CN202011463453A CN114626060A CN 114626060 A CN114626060 A CN 114626060A CN 202011463453 A CN202011463453 A CN 202011463453A CN 114626060 A CN114626060 A CN 114626060A
- Authority
- CN
- China
- Prior art keywords
- code
- section
- sections
- file
- executable
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供了一种代码文件的识别方法、装置、计算机设备和可读存储介质。该代码文件的识别方法包括:获取目标代码文件的可执行代码节;计算所述可执行代码节的特征值;对计算得到的各个所述代码节的特征值进行拼接,得到拼接串;计算所述拼接串的特征值;以及根据所述拼接串的特征值识别所述目标代码文件。通过本申请,能够提升代码文件的识别能力,由于识别恶意代码文件。
Description
技术领域
本申请涉及信息安全技术领域,尤其涉及一种代码文件的识别方法、装置、计算机设备和可读存储介质。
背景技术
随着手机、个人电脑以及可穿戴智能终端等网络终端设备在生活和工作中的日益普及,如何保障信息安全也成为当前首要解决的安全问题,其中,计算机病毒、特洛伊木马、计算机蠕虫、后门以及逻辑炸弹等恶意代码的传播速度快、感染能力强、破坏力大,因此,提升恶意代码的检测能力也即提升了信息安全水平。
为了绕过安全检测技术,恶意代码会不断地改变自身的形态,常见手段包括修改二进制文件结构中无关或次要的字段、在文件中间或尾部插入无关的内容等,这些手段会导致对恶意代码文件的识别越来越困难。
因此,如何提升恶意代码文件的检测识别能力,成为本领域亟需解决的技术问题。
发明内容
本申请的目的是提供一种代码文件的识别方法、装置、计算机设备和可读存储介质,用于解决现有技术中的技术问题。
一方面,为实现上述目的,本申请提供了一种代码文件的识别方法。
该代码文件的识别方法包括:获取目标代码文件的可执行代码节;计算所述可执行代码节的特征值;对计算得到的各个所述代码节的特征值进行拼接,得到拼接串;计算所述拼接串的特征值;以及根据所述拼接串的特征值识别所述目标代码文件。
进一步地,获取目标代码文件的可执行代码节的步骤包括:解析所述目标代码文件的文件头、节表和节数据;根据所述文件头和所述节表确定所述代码节,并获取所述代码节的偏移地址和大小;以及根据所述代码节的偏移地址和大小在所述节数据中提取所述代码节的内容。
进一步地,根据所述文件头和所述节表确定所述代码节的步骤包括:根据所述节表识别具有可执行属性的节作为所述代码节。
进一步地,根据所述文件头和所述节表确定所述代码节的步骤还包括:确定所述目标代码文件对应的程序入口点所在的节,以得到入口节;判断所述具有可执行属性的节中是否包括所述入口节;若所述具有可执行属性的节中不包括所述入口节,将所述入口节作为所述代码节。
进一步地,根据所述文件头和所述节表确定所述代码节的步骤还包括:对已确定的代码节进行调用关系分析,以搜索所述已确定的代码节范围外、且根据所述已确定的代码节的调用关系可达到的地址所在的节;将搜索得到的节作为所述代码节;其中,当所有已确定的代码节的调用关系可达到的地址,均在所述已确定的代码节范围内时,停止搜索。
进一步地,对各个所述代码节的特征值进行拼接的步骤包括:对各个所述代码节的特征值按照预定顺序进行排序;按照排序后各个所述代码节的特征值的顺序进行拼接。
进一步地,计算所述可执行代码节的特征值的步骤包括:采用哈希算法计算所述可执行代码节的哈希值;计算所述拼接串的特征值的步骤包括:采用哈希算法计算所述可执行代码节的哈希值。
另一方面,为实现上述目的,本申请提供了一种代码文件的识别装置。
该代码文件的识别装置包括:获取模块,用于获取目标代码文件的可执行代码节;第一计算模块,用于计算所述可执行代码节的特征值;拼接模块,用于对计算得到的各个所述代码节的特征值进行拼接,得到拼接串;第二计算模块,用于计算所述拼接串的特征值;以及识别模块,用于根据所述拼接串的特征值识别所述目标代码文件。
又一方面,为实现上述目的,本申请还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
又一方面,为实现上述目的,本申请还提供计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本申请提供的代码文件的识别方法、装置、计算机设备和可读存储介质,根据目标代码文件中的可执行代码节并计算其特征值,然后再对计算得到的各个可执行代码节的特征值进行拼接,得到拼接串,再计算拼接串的特征值,最后根据拼接串的特征值识别目标代码文件。通过本申请,利用目标代码文件中真实的可执行代码,计算特征值的方式进行代码文件的识别,能够识别代码相同、功能相似的恶意代码变种,同时,本申请提供的方法只基于代码文件的实际可执行代码的内容计算样本的唯一特征值作为标识,能够基于该标识对目标代码文件进行快速比对和归类,计算开销小,可应用于大规模样本集的分析和识别。此外,本申请提供的方法识别结果的置信度高,适用于任何语言编写的二进制代码,适用范围广,可以大大提高防御方的检测速度,极大地降低检测开销。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例一提供的代码文件的识别方法的流程图;
图2为本申请实施例二提供的代码文件的识别装置的框图;
图3为本申请实施例三提供的计算机设备的硬件结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了提升恶意代码文件的检测识别能力,发明人对现有技术中的积累恶意代码检测方法进行了如下的研究。
在一种检测方法中,以整个文件内容为对象,采用MD5/SHA1等哈希算法计算文件标识,通过该文件标识来识别恶意代码文件。由于MD5/SHA1等哈希算法具有很好的雪崩效应,即内容的很小变化会引起计算得到的哈希值的很大变化,采用MD5/SHA1等哈希算法对样本全文内容计算哈希值,作为样本的标识时,可以很好的防止标识碰撞,但是无法利用该哈希值识别相似的样本,因此当待识别恶意代码文件产生变种时,采用该方法很难快速识别变化后的不同样本是同一种恶意软件,无法识别出变种的恶意代码。
基于上述问题,发明人进一步研究发现,对于内容接近的样本,利用SSDeep的感知哈希方式得到的哈希值也具有相似性,因此,可以通过内容感知哈希算法SSDeep识别内容差异很小的样本,以进行变种恶意代码的识别。但是识别过程需要对样本哈希值做两两匹配,当样本量较大时,匹配过程的计算开销很大,不适合大规模样本集的分析。
此外,发明人研究另一种检测方法发现,恶意代码文件包括导入表(Imports),导入表包含依赖的动态链接库及所有调用函数,因为编译器根据源码中每个函数出现的顺序来制定IAT(Import Address Table),代码中导入函数的出现顺序,以及编译时的源码文件顺序都会影响IAT,所以对于每个代码文件,对其导入表计算出的哈希值ImpHash是唯一的,通过该哈希值ImpHash可以较高概率识别出相似的样本,能够识别出变种的恶意代码。但是,该方法对识别结果的置信度无法保证,即可能存在误报的情况,同时,该方法对于.NET、Go等语言编写的样本无法识别,对于加壳等代码保护机制的抗干扰能力也较差。
基于以上的研究发现,本申请提出一种代码文件的识别方法、装置、计算机设备和可读存储介质,以对目标代码文件进行识别,例如判断目标代码文件是否属于已知的某类恶意代码等。具体地,在该代码文件的识别方法中,首先获取目标代码文件的可执行代码节,计算这些可执行代码节的特征值,然后再对计算得到的各个代码节的特征值进行拼接,得到拼接串,计算拼接串的特征值,最后根据拼接串的特征值识别目标代码文件。
采用本申请中代码文件的识别方法,只关注代码文件中的可执行代码节,因此,当恶意代码通过修改时间戳等字段,或者通过增删非代码数据等方式进行变种时,不会对本申请的识别过程造成影响,也不会导致计算得到的拼接串的特征值发生变化,从而可以对抗这类恶意代码的变种方法,相对于直接基于代码文件的整体内容计算哈希值进行识别的方法,本申请提供的代码文件的识别方法在识别变种的恶意代码时,具有更强的识别能力。
其次,采用本申请中代码文件的识别方法,可以有效区分导入表一样但可执行代码并不一样的代码文件,如采用.NET方案开发的代码文件,其导入表中只有一项mscoree.dll:_CorExeMain,但是其执行代码不同时,采用本申请计算出的拼接串的特征值也会发生变化,从而可以实现对这类代码文件的识别,而对于基于导入表的哈希值ImpHash进行识别的方法,由于所有的.NET程序的导入表的哈希值ImpHash都是一样的,通过导入表的哈希值ImpHash完全无法区分,本申请提供的代码文件的识别方法,根据代码文件的实际可执行代码来计算识别标识,可以很好的解决上述问题,具有更强的识别能力。
第三,采用本申请中代码文件的识别方法,是对可执行代码计算精确的特征值,不需要两两比对即可精确识别代码相同的样本,而SSDeep方法等感知模糊哈希值进行计算的方法,该方法需要对样本的模糊哈希两两比对,才可以判别样本之间的相似性,相较而言,本申请中代码文件的识别方法计算开销小得多。
综上所述,通过本申请提供的代码文件的识别方法、装置、计算机设备和可读存储介质,能够提升恶意代码文件的检测识别能力。关于本申请中代码文件的识别方法、装置、计算机设备和可读存储介质的具体实施例,将在下文中详细描述。
实施例一
本申请实施例提供了一种代码文件的识别方法,通过该方法,能够提升恶意代码文件的检测识别能力,具体地,图1为本申请实施例一提供的代码文件的识别方法的流程图,如图1所示,该实施例提供的代码文件的识别方法包括如下的步骤S101至步骤S105。
步骤S101:获取目标代码文件的可执行代码节。
其中,可执行代码节是指目标代码文件中可执行的节数据。可选地,目标代码文件为可执行代码文件,其包括文件头、节表和节数据,其中,节数据中包括可执行的节,也即可执行代码节,在该步骤中,获取其中的多个可执行代码节。需要说明的是,该处可获取目标代码文件中的全部或部分可执行代码节。
步骤S102:计算可执行代码节的特征值。
针对获取到的可执行代码节,采用预设的特征值计算方法,计算每个可执行代码节的特征值。例如,可采用哈希算法计算可执行代码节的哈希值,也即将可执行代码节通过散列算法变换成固定长度的输出,输出的散列值就是哈希值,具体地,可采用MD5信息摘要算法计算可执行代码节的哈希值,得到一个128位(16字节)的散列值,用于确保信息传输完整一致。
步骤S103:对计算得到的各个代码节的特征值进行拼接,得到拼接串。
具体地,在该步骤S103中,将各个代码节的特征值首尾相连进行拼接,形成新的字符串也即拼接串。
步骤S104:计算拼接串的特征值。
针对拼接串,采用预设的特征值计算方法,计算拼接串的特征值。具体地,也可采用哈希算法计算拼接串的哈希值作为特征值。
需要说明的是,在计算拼接串的特征值和计算可执行代码节的特征值时,可以采用相同的计算特征值的算法,也可采用不同的计算特征值的方法。
步骤S105:根据拼接串的特征值识别目标代码文件。
在该步骤中,将拼接串的特征值作为目标代码文件的标识,对目标代码文件进行识别,包括在代码样本库中确定与目标代码文件相似的代码文件,例如确定目标代码文件属于恶意代码库中的哪一类恶意代码等。具体地,对恶意代码样本采用上述相同的步骤计算出恶意代码样本对应的特征值,将目标代码文件对应的特征值与恶意代码样本对应的特征值进行比对,当二者一致时,表明目标代码文件与恶意代码样本属于同一类恶意代码。
在该实施例提供的代码文件的识别方法中,根据目标代码文件中的可执行代码节并计算其特征值,然后再对计算得到的各个可执行代码节的特征值进行拼接,得到拼接串,再计算拼接串的特征值,最后根据拼接串的特征值识别目标代码文件。从中可以看出,该实施例提供的方法通过目标代码文件中真实的可执行代码,计算特征值的方式进行代码文件的识别,能够识别代码相同、功能相似的恶意代码变种,同时,该实施例提供的方法只基于代码文件的实际可执行代码的内容计算样本的唯一特征值作为标识,能够基于该标识对目标代码文件进行快速比对和归类,计算开销小,可应用于大规模样本集的分析和识别。此外,该实施例提供的方法识别结果的置信度高,适用于任何语言编写的二进制代码,适用范围广,可以大大提高防御方的检测速度,极大地降低检测开销。
可选地,在一种实施例中,获取目标代码文件的可执行代码节的步骤包括:解析目标代码文件的文件头、节表和节数据;根据文件头和节表确定代码节,并获取代码节的偏移地址和大小;以及根据代码节的偏移地址和大小在节数据中提取代码节的内容。
具体地,目标代码文件包括文件头、节表和节数据,通过解析和分析文件头与节表,可确定出目标代码文件中哪些节属于代码节,进而通过节表获取到确定出的代码节的偏移地址和大小,即可在节数据中提取出代码节实际的代码内容,实现可执行代码节的获取。
进一步可选地,在一种实施例中,在根据文件头和节表确定代码节时,具体执行的步骤包括:根据节表识别具有可执行属性的节作为代码节。
具体地,针对完整的PE二进制代码文件,根据PE结构规范解析二进制代码文件中的PE头,根据节表识别其中的所有节,对于所有带可执行属性的节,作为代码节,从而能够快速确定出代码节。
进一步可选地,在一种实施例中,在根据文件头和节表确定代码节时,具体的步骤还包括:确定目标代码文件对应的程序入口点所在的节,以得到入口节;判断具有可执行属性的节中是否包括入口节;若具有可执行属性的节中不包括入口节,将入口节作为代码节。
具体地,分析代码文件中的程序入口点OEP(Original Entry Point)是否在可执行属性的节的范围内,如果不在,则将OEP所在的节也视为代码节,从而保证将程序入口点所在的节识别为代码节,提升识别的准确性。
进一步可选地,在一种实施例中,在根据文件头和节表确定代码节是,具体执行的步骤还包括:对已确定的代码节进行调用关系分析,以搜索已确定的代码节范围外、且根据已确定的代码节的调用关系可达到的地址所在的节;将搜索得到的节作为代码节;其中,当所有已确定的代码节的调用关系可达到的地址,均在已确定的代码节范围内时,停止搜索。
具体地,对已经识别出的代码节进行调用关系分析,进一步识别不在上述已识别代码节范围内,但是根据已识别的代码节中的代码的调用关系可以到达的其他节的地址,并将该地址所在的节也加入已识别代码节中。然后重复上述该步骤,重新进行调用关系分析,再次识别出新的已识别代码节范围外且根据调用关系可用达到的节,加入已识别代码节,直到所有已识别代码节的调用关系可达路径所在地址都在已知代码节范围内,从而能够全面识别出代码文件中的可执行代码节,提升识别的准确性。
可选地,在一种实施例中,对各个代码节的特征值进行拼接的步骤包括:对各个代码节的特征值按照预定顺序进行排序;按照排序后各个代码节的特征值的顺序进行拼接。
具体地,在拼接各个代码节的特征值时,首先对各个特征值进行排序,然后按照排列的顺序,对各个特征值首尾连接进行拼接。采用该实施例提供的代码文件的识别方法,对各个代码节计算得到的特征值进行排序后再拼接,并计算拼接串的结构特征值,能够排除可执行代码节存放位置乱序引起的拼接串特征值变化,进一步提升识别准确性。其中,可选地,在对各个代码节的特征值进行排序时,可以采用预定的任意排序方法进行排序,只需保证被比对的拼接串的特征值,是源于相同的排序方法对代码节的特征值进行排序拼接后得到的拼接串的特征值即可。例如,按照首字母顺序、尾字母顺序等进行排序。
在一种实施例中,首先通过解析待识别PE二进制代码文件结构,识别出所有代码节,逐一提取代码节内容,并利用MD5/SHA1等标准哈希算法,对各个代码节内容计算哈希值,然后对得到的哈希值排序,首尾相接拼接成字符串,并再次利用MD5/SHA1等标准哈希算法,对拼接后的字符串计算哈希,并以此作为待识别代码文件的标识,识别相似的代码文件。其中,通过对第一次计算得出的各个代码节的哈希值进行排序,可以解决代码文件包含的多个可执行代码节存放位置变化引起的全文哈希变化问题。例如,一个PE文件有两个可执行代码节A和代码节B,程序入口点OEP在代码节A地址范围内,两个代码节内容的MD5哈希分别为:
代码节A的哈希值:627ad9b206a93ccb3888a179eb6bfd9f;
代码节B的哈希值:1c4ca031efb75293f4a765d086dbdac0。
对这两个字符串按字母升序排列后,拼接成字符串:
1c4ca031efb75293f4a765d086dbdac0627ad9b206a93ccb3888a179eb6bfd9f。
再次利用MD5算法,计算该字符串的哈希,得到哈希值:
1b678430ee7bb3d0ebe3ecc18919976f。
该哈希值即为待识别代码文件的标识,通过该标识即可对识别代码文件进行识别。
实施例二
对应于上述实施例一,本申请实施例二提供了一种代码文件的识别装置,相应地技术特征细节和对应的技术效果可参考上述实施例一,在该实施例中不再赘述。图2为本申请实施例二提供的代码文件的识别装置的框图,如图2所示,该装置包括:获取模块201、第一计算模块202、拼接模块203、第二计算模块204和识别模块205。
获取模块201用于获取目标代码文件的可执行代码节;第一计算模块202用于计算所述可执行代码节的特征值;拼接模块203用于对计算得到的各个所述代码节的特征值进行拼接,得到拼接串;第二计算模块204用于计算所述拼接串的特征值;以及识别模块205用于根据所述拼接串的特征值识别所述目标代码文件。
可选地,在一种实施例中,获取模块201包括:解析单元,用于解析所述目标代码文件的文件头、节表和节数据;确定单元,用于根据所述文件头和所述节表确定所述代码节;获取单元,用于获取所述代码节的偏移地址和大小;以及提取单元,用于根据所述代码节的偏移地址和大小在所述节数据中提取所述代码节的内容。
可选地,在一种实施例中,确定单元在根据所述文件头和所述节表确定所述代码节时,具体执行的步骤包括:根据所述节表识别具有可执行属性的节作为所述代码节。
可选地,在一种实施例中,确定单元在根据所述文件头和所述节表确定所述代码节时,具体执行的步骤还包括:确定所述目标代码文件对应的程序入口点所在的节,以得到入口节;判断所述具有可执行属性的节中是否包括所述入口节;若所述具有可执行属性的节中不包括所述入口节,将所述入口节作为所述代码节。
可选地,在一种实施例中,确定单元在根据所述文件头和所述节表确定所述代码节时,具体执行的步骤还包括:对已确定的代码节进行调用关系分析,以搜索所述已确定的代码节范围外、且根据所述已确定的代码节的调用关系可达到的地址所在的节;将搜索得到的节作为所述代码节;其中,当所有已确定的代码节的调用关系可达到的地址,均在所述已确定的代码节范围内时,停止搜索。
可选地,在一种实施例中,拼接模块203包括:排序单元,用于对各个所述代码节的特征值按照预定顺序进行排序;拼接单元,用于按照排序后各个所述代码节的特征值的顺序进行拼接。
可选地,在一种实施例中,第一计算模块在计算所述可执行代码节的特征值时,采用哈希算法计算所述可执行代码节的哈希值;第二计算模块在计算所述拼接串的特征值时,采用哈希算法计算所述可执行代码节的哈希值。
实施例三
本实施例三还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图3所示,本实施例的计算机设备01至少包括但不限于:可通过系统总线相互通信连接的存储器012、处理器011,如图3所示。需要指出的是,图3仅示出了具有组件存储器012和处理器011的计算机设备01,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器012(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器012可以是计算机设备01的内部存储单元,例如该计算机设备01的硬盘或内存。在另一些实施例中,存储器012也可以是计算机设备01的外部存储设备,例如该计算机设备01上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器012还可以既包括计算机设备01的内部存储单元也包括其外部存储设备。本实施例中,存储器012通常用于存储安装于计算机设备01的操作系统和各类应用软件,例如实施例二的代码文件的识别装置的程序代码等。此外,存储器012还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器011在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器011通常用于控制计算机设备01的总体操作。本实施例中,处理器011用于运行存储器012中存储的程序代码或者处理数据,例如代码文件的识别方法等。
实施例四
本实施例四还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储代码文件的识别装置,被处理器执行时实现实施例一的代码文件的识别方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种代码文件的识别方法,其特征在于,包括:
获取目标代码文件的可执行代码节;
计算所述可执行代码节的特征值;
对计算得到的各个所述代码节的特征值进行拼接,得到拼接串;
计算所述拼接串的特征值;以及
根据所述拼接串的特征值识别所述目标代码文件。
2.根据权利要求1所述的代码文件的识别方法,其特征在于,获取目标代码文件的可执行代码节的步骤包括:
解析所述目标代码文件的文件头、节表和节数据;
根据所述文件头和所述节表确定所述代码节,并获取所述代码节的偏移地址和大小;以及
根据所述代码节的偏移地址和大小在所述节数据中提取所述代码节的内容。
3.根据权利要求2所述的代码文件的识别方法,其特征在于,根据所述文件头和所述节表确定所述代码节的步骤包括:
根据所述节表识别具有可执行属性的节作为所述代码节。
4.根据权利要求3所述的代码文件的识别方法,其特征在于,根据所述文件头和所述节表确定所述代码节的步骤还包括:
确定所述目标代码文件对应的程序入口点所在的节,以得到入口节;
判断所述具有可执行属性的节中是否包括所述入口节;
若所述具有可执行属性的节中不包括所述入口节,将所述入口节作为所述代码节。
5.根据权利要求3或4所述的代码文件的识别方法,其特征在于,根据所述文件头和所述节表确定所述代码节的步骤还包括:
对已确定的代码节进行调用关系分析,以搜索所述已确定的代码节范围外、且根据所述已确定的代码节的调用关系可达到的地址所在的节;
将搜索得到的节作为所述代码节;
其中,当所有已确定的代码节的调用关系可达到的地址,均在所述已确定的代码节范围内时,停止搜索。
6.根据权利要求1所述的代码文件的识别方法,其特征在于,对各个所述代码节的特征值进行拼接的步骤包括:
对各个所述代码节的特征值按照预定顺序进行排序;
按照排序后各个所述代码节的特征值的顺序进行拼接。
7.根据权利要求1所述的代码文件的识别方法,其特征在于,
计算所述可执行代码节的特征值的步骤包括:采用哈希算法计算所述可执行代码节的哈希值;
计算所述拼接串的特征值的步骤包括:采用哈希算法计算所述可执行代码节的哈希值。
8.一种代码文件的识别装置,其特征在于,包括:
获取模块,用于获取目标代码文件的可执行代码节;
第一计算模块,用于计算所述可执行代码节的特征值;
拼接模块,用于对计算得到的各个所述代码节的特征值进行拼接,得到拼接串;
第二计算模块,用于计算所述拼接串的特征值;以及
识别模块,用于根据所述拼接串的特征值识别所述目标代码文件。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011463453.XA CN114626060A (zh) | 2020-12-11 | 2020-12-11 | 代码文件的识别方法、装置、计算机设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011463453.XA CN114626060A (zh) | 2020-12-11 | 2020-12-11 | 代码文件的识别方法、装置、计算机设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114626060A true CN114626060A (zh) | 2022-06-14 |
Family
ID=81895049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011463453.XA Pending CN114626060A (zh) | 2020-12-11 | 2020-12-11 | 代码文件的识别方法、装置、计算机设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114626060A (zh) |
-
2020
- 2020-12-11 CN CN202011463453.XA patent/CN114626060A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108985057B (zh) | 一种webshell检测方法及相关设备 | |
Pagani et al. | Beyond precision and recall: understanding uses (and misuses) of similarity hashes in binary analysis | |
CN110866258B (zh) | 快速定位漏洞方法、电子装置及存储介质 | |
CN111310178B (zh) | 跨平台场景下的固件漏洞检测方法及系统 | |
WO2019148712A1 (zh) | 钓鱼网站检测方法、装置、计算机设备和存储介质 | |
CN112148305A (zh) | 一种应用检测方法、装置、计算机设备和可读存储介质 | |
CN113901474A (zh) | 一种基于函数级代码相似性的漏洞检测方法 | |
CN113961768B (zh) | 敏感词检测方法、装置、计算机设备和存储介质 | |
CN104462986A (zh) | Pdf中触发漏洞威胁的检测方法及装置 | |
CN110222015B (zh) | 一种文件数据的读取、查询方法、装置及可读存储介质 | |
CN111666258B (zh) | 信息处理方法和装置、信息查询方法和装置 | |
US11487876B1 (en) | Robust whitelisting of legitimate files using similarity score and suspiciousness score | |
CN113901457A (zh) | 一种恶意软件识别的方法、系统、设备及可读存储介质 | |
CN113688240B (zh) | 威胁要素提取方法、装置、设备及存储介质 | |
CN114626060A (zh) | 代码文件的识别方法、装置、计算机设备和可读存储介质 | |
CN115688099A (zh) | 计算机病毒检索方法、装置、计算机设备及存储介质 | |
CN112733523B (zh) | 文档发送方法、装置、设备及存储介质 | |
CN114266045A (zh) | 网络病毒的识别方法、装置、计算机设备及存储介质 | |
CN114266046A (zh) | 网络病毒的识别方法、装置、计算机设备及存储介质 | |
CN111552638B (zh) | 一种代码检测方法及装置 | |
CN111597552B (zh) | 代码扫描方法及终端设备 | |
CN115310082A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN112487427A (zh) | 一种系统白名单的确定方法、系统及服务器 | |
CN111159111A (zh) | 一种信息处理方法、设备、系统和计算机可读存储介质 | |
CN115694963A (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 |