CN114757163A - 基于资源的pe文件相似性比对方法 - Google Patents
基于资源的pe文件相似性比对方法 Download PDFInfo
- Publication number
- CN114757163A CN114757163A CN202210356639.8A CN202210356639A CN114757163A CN 114757163 A CN114757163 A CN 114757163A CN 202210356639 A CN202210356639 A CN 202210356639A CN 114757163 A CN114757163 A CN 114757163A
- Authority
- CN
- China
- Prior art keywords
- resource
- file
- image
- directory
- resources
- 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
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于资源的PE文件相似性比对方法,属于软件二进制代码溯源分析技术领域。该比对方法通过PE文件解析,提取并比对PE文件中位图、图标、字符串等资源,完成了PE文件相似性比对和相似度计算。该方法主要是为Windows操作系统下可执行程序、动态链接库、ActiveX控件等PE格式二进制文件溯源提供技术手段,具有良好的鲁棒性、较高的准确性和可用性。
Description
技术领域
本发明属于软件二进制代码溯源分析技术领域,具体涉及一种基于资源的PE文件相似性比对方法。
背景技术
软件代码溯源分析是开展软件组成和自主性分析的重要手段。软件代码溯源分析的核心和关键是代码相似性比对技术。代码溯源分析包括源代码溯源和二进制代码溯源两种方法。软件源代码是按照程序设计语言规范书写的文本文件,是一系列人可读的计算机语言指令,源代码溯源方法已经非常成熟。然而,商业软件普遍采用“闭源”方式,只提供编译后的二进制代码,软件源代码通常无法获取,从而无法通过源代码相似性比对,实现目标软件和商业“闭源”软件的溯源。
PE(Portable Execute)文件是Windows下编译后二进制代码文件的总称,常见的有可执行程序(*.exe),动态链接库(*.dll),ActiveX控件(*.ocx)等。商业“闭源”软件大多将软件核心功能和关键算法封装成可执行程序、动态链接库或ActiveX控件等PE文件,对外仅提供调用接口,而不开放源代码,从而起到保护软件的目的。
PE文件通常都无法反编译出源代码,只能反汇编出汇编代码。基于PE文件反汇编后的汇编代码溯源存在较大问题,如同一份软件源代码经过不同编译器或编译选项后得到PE文件,再经过反汇编得到的汇编代码就存在不同程度的差异;软件源代码在编译过程中往往会链接许多公共库代码,反汇编后会增加许多代码量,这无疑会给基于汇编代码的软件溯源造成巨大干扰。
资源是加速键(Accelerator)、位图(Bitmap)、光标(Cursor)、对话框(DialogBox)、图标(Icon)、菜单(Menu)、字符串(String)、工具栏(Toolbar)和版本信息(VersionInformation)等数据的统称,PE文件为这类数据指定一个特定的节进行存储。位图、图标、字符串等资源具有统一性、唯一性、可识别性等特点。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种PE文件相似性比对方法,为windows操作系统下可执行程序、动态链接库、ActiveX控件等PE格式二进制文件溯源提供技术手段,解决无法通过源代码溯源“闭源”软件的问题。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于资源的PE文件相似性比对方法,包括以下步骤:
第一步、按照PE文件的组织结构解析PE文件;
第二步、基于第一步从PE文件中提取位图、图标、字符串这些资源;
第三步、通过分别比对位图、图标、字符串这些资源,获取相应类型的相同资源列表;
第四步、基于第三步计算PE文件相似度。
优选地,第一步中,依据PE文件的组织结构,按照顺序对MS-DOS头、PE头、节表、节进行解析。
优选地,第一步中解析的具体过程如下:
(1)MS-DOS头:所有PE文件都以MS-DOS头开始,这是一个IMAGE_DOS_HEADER结构;MS-DOS头包含两个域,一个是e_magic,包含字符串“MZ”;另一个是e_lfanew,用于定位PE头;解析过程中直接跳过由汇编器或编译器自动生成的DOS_STUB;
(2)PE头:PE头是PE相关结构NT映像头IMAGE_NT_HEADERS的简称,其中包含许多PE加载器需要用到的字段;PE标记Signature值为5045h,则表示为PE文件是可执行文件;接下来是一个固定长度的IMAGE_FILE_HEADER结构,该IMAGE_FILE_HEADER结构包含PE文件的一些信息,其中一个域指明了IMAGE_OPTIONAL_HEADER结构的大小,接下来是一个可选的IMAGE_OPTIONAL_HEADER结构,包含了与PE加载、执行相关的一些信息,包括程序的入口点地址、加载PE文件时应使用的基地址、内存中PE文件映像的大小、对齐信息;
(3)节表:节表是PE文件的第三部分,它是一个IMAGE_SECTION_HEADER结构的数组,数组元素个数由PE头中结构体IMAGE_FILE_HEADER中的NumberOfSection字段指定;每一个IMAGE_SECTION_HEADER结构包含其所对应节的一些信息,包括节的属性、在磁盘和内存的位置和大小;
(4)节:该部分由各个具体数据内容的节构成,包括“.text”节存储程序指令代码;“.rsrc”节存储资源,包括位图、图标、字符串;通过查询节表可获得每个节的具体位置,然后读取PE文件中的数据。
优选地,第二步是通过进一步解析PE文件所包含的“.rsrc”节信息,获取PE文件中位图、图标、字符串这些资源。
优选地,第二步中,设定PE文件按照“资源类型->资源ID->资源代码页”的三层树型目录结构组织资源,其中,资源类型包括位图、图标、字符串三种,每一层资源目录都以IMAGE_RESOURCE_DIRECTORY结构开始,后面紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组;PE文件中资源的提取过程如下:
(1)解析第一层目录
第一层资源目录以IMAGE_RESOURCE_DIRECTORY结构开始,后面紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组,数组维数由IMAGE_RESOURCE_DIRECTORY结构中以字符串命名的资源数量NumberOfNamedEntries字段与以整型数字命名的资源数量NumberOfIdEntries字段之和决定;
第一层资源目录中IMAGE_RESOURCE_DIRECTORY_ENTRY结构中Name和OffsetToDirectory有效,分别代表资源类型和第二层资源目录的偏移地址;
(2)解析第二层目录
第二层资源目同样以IMAGE_RESOURCE_DIRECTORY结构开始,后面同样紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组,数组维数由IMAGE_RESOURCE_DIRECTORY结构中NumberOfNamedEntries字段与NumberOfIdEntries字段之和决定;
第二层中IMAGE_RESOURCE_DIRECTORY_ENTRY结构中NameIsString、NameOffset、Id和OffsetToDirectory有效,其中,OffsetToDirectory字段代表第三层资源目录的偏移地址;如果NameIsString字段为0,说明该第二层资源是以ID定义的,ID号为Id字段的值;如果NameIsString字段为1,则说明该第二层资源是以名称定义的,NameOffset字段是一个相对于整个资源结构的偏移地址,指向IMAGE_RESOURCE_DIR_STRING_U结构体,按照该IMAGE_RESOURCE_DIR_STRING_U结构解析,即可提取出资源名称;
(3)解析第三层目录
与前两层相同,第三层资源目同样以IMAGE_RESOURCE_DIRECTORY结构开始,后面同样紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构体数组,不同的是数组维数固定为1;
第三层中IMAGE_RESOURCE_DIRECTORY_ENTRY结构体中Name和OffsetToData有效,分别代表资源语言类型和资源数据相对地址;OffsetToData是相对整个资源结构的偏移地址,指向IMAGE_RESOURCE_DATA_ENTRY结构,按照该IMAGE_RESOURCE_DATA_ENTRY结构即可提取出PE文件中的各种资源;IMAGE_RESOURCE_DATA_ENTRY结构中OffsetToData和Size分别代表资源数据的偏移地址和长度。
优选地,第三步是通过比对分别找出不同PE文件中相同位图、相同图标、相同字符串的3个相同资源列表。
优选地,第三步中PE文件的资源的相似性比对过程如下:
(1)针对从不同PE文件中提取的位图、图标、字符串资源,计算每一个资源的md5码,每一个资源都生成与之对应的唯一md5码;
(2)按照位图、图标、字符串这3类资源,分别求取不同PE文件存在的相同md5码列表,得到位图、图标、字符串的3个相同md5码列表;
(3)将步骤(2)中得到的位图、图标、字符串的3个相同md5码列表,转换成对应的相同位图、相同图标、相同字符串的3个资源列表。
优选地,第四步是分别针对位图、图标、字符串这3类资源计算不同PE文件之间位图、图标、字符串等三类资源的相似度,最后求取PE文件的相似度。
优选地,第四步中,资源的相似度的计算公式如下:
其中,similarity(Ai,Bi)表示PE文件A和B的资源i的相似度,i=2表示位图资源,i=3表示图标资源,i=6表示字符串资源,Ai、Bi分别表示PE文件A和B的资源i的列表,|Ai|、|Bi|分别表示PE文件A和B的资源i的总数量,|Sim(Ai,Bi)|表示PE文件A和B的资源i相同部分的数量。
优选地,第四步中,两个PE文件A和B的相似度similarity(PA,PB)采用PE文件中位图、图标、字符串等资源的最大相似度来表示:
(三)有益效果
本发明提出的一种基于资源的PE文件相似性比对方法具有如下特点:
(1)具备良好的鲁棒性。位图、图标、字符串等资源不会随着软件编译环境、编译选项的变化而变化(主要影响PE文件代码段中的指令代码),编译链接过程中插入的代码(主要是库文件代码)不会影响位图、图标、字符串等资源数据。因此,本发明通过比对资源实现PE文件相似性比较,能够规避软件编译环境、编译选项、编译链接等对于编译后PE文件相似性比对结果的影响。
(2)具备较高的准确性。位图、图标是图形化界面非常重要的元素之一,通常都具有统一性、唯一性、可识别性等特点。软件产品往往会结合软件用户和特征,设计不同风格的位图和图标,软件代码层面的修改并不会改变PE文件中位图和图标等资源。不同PE文件中存在相同位图、图标等资源,则可以判定PE文件必然存在某种关联关系。因此,本发明通过比对位图和图标等资源实现PE文件相似性比较,具有较高的准确性。
(3)具备较高的可用性。PE文件反汇编后的文件大小是原文件的10倍,这不仅增加了代码处理过程中的出错的几率,而且随着处理数据量的增长,处理复杂度和时间都将相应增加。本发明通过直接解析PE原文件,提取位图、图标、字符串等资源,而不必对PE文件进行反汇编,这不仅降低了处理复杂度,也提高了比对速度,从而也具备较高的可用性。
附图说明
图1为本发明的方法流程图;
图2为PE文件的基本组织结构示意图;
图3为PE文件的三层树型目录结构示意图;
图4为PE文件每一层资源目录结构定义示意。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
针对无法通过源代码溯源“闭源”软件的问题,本发明给出了一种基于资源的PE文件相似性比对方法,该比对方法就是将位图、图标、字符串等资源作为可执行程序、动态链接库或ActiveX控件等PE文件的表征特性,通过比对位图、图标、字符串等资源的相似性,实现PE文件相似性比对,进而实现PE文件溯源。
如图1所示,该基于资源的PE文件相似性比对方法包括以下步骤:
第一步 按照PE文件的组织结构解析PE文件,为下一步从PE文件中提取位图、图标、字符串等资源提供基础和条件;
Windows是当下使用最为广泛的桌面操作系统,其可执行文件采用的是PE文件格式。PE文件是以线性结构组织成的数据流,由MS-DOS头开始,接着是PE头、节表,紧接着的是所有节实体,PE文件基本组织结构如图2所示。PE文件解析就是依据PE文件的组织结构,按照顺序对MS-DOS头、PE头、节表、节进行解析,具体过程如下:
(1)MS-DOS头:所有PE文件都必须以MS-DOS头开始,这是一个IMAGE_DOS_HEADER结构;MS-DOS头包含两个比较重要的域,一个是e_magic,包含字符串“MZ”;另一个是e_lfanew(偏移量),用于定位PE头;DOS_STUB一般由汇编器/编译器自动生成,解析过程中可以直接跳过。
(2)PE头:PE头是PE相关结构NT映像头(IMAGE_NT_HEADERS)的简称,其中包含许多PE加载器需要用到的字段;PE标记Signature值为5045h,则表示为PE文件是可执行文件;接下来是一个固定长度的IMAGE_FILE_HEADER结构,该IMAGE_FILE_HEADER结构包含PE文件的一些基本信息,其中最重要的一个域指明了IMAGE_OPTIONAL_HEADER结构的大小。接下来是一个可选的IMAGE_OPTIONAL_HEADER结构,包含了与PE加载、执行相关的一些重要信息,如程序的入口点地址、加载PE文件时应使用的基地址、内存中PE文件映像的大小、对齐信息等。
(3)节表:节表是PE文件的第三部分,它是一个IMAGE_SECTION_HEADER结构的数组,数组元素个数可由PE头中结构体IMAGE_FILE_HEADER中的NumberOfSection字段指定;每一个IMAGE_SECTION_HEADER结构包含其所对应节的一些必要信息,如节的属性、在磁盘和内存的位置和大小等。
(4)节:该部分由各个具体数据内容的节构成,如“.text”节存储程序指令代码;“.rsrc”节存储资源,如位图、图标、字符串等;通过查询节表,可以获得每个节的具体位置,然后读取PE文件中的数据。
第二步 从PE文件中解析提取位图、图标、字符串等资源
PE文件通常包含“.text”、“.data”、“.edata”、“.rsrc”、“.idata”等常见节,其中“.rsrc”节存储所有资源,如位图、图标、字符串等。“提取资源”就是通过进一步解析“.rsrc”节信息,获取PE文件中位图、图标、字符串等资源。
PE文件按照“资源类型->资源ID->资源代码页”的三层树型目录结构组织资源,如图3所示,其中,资源类型包括位图、图标、字符串三种。每一层资源目录都以IMAGE_RESOURCE_DIRECTORY结构开始,后面紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组,结构定义如图4所示。PE文件中资源的提取过程如下:
(1)解析第一层目录
第一层资源目录以IMAGE_RESOURCE_DIRECTORY结构开始,后面紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组,数组维数由IMAGE_RESOURCE_DIRECTORY结构中以字符串命名的资源数量NumberOfNamedEntries字段与以整型数字命名的资源数量NumberOfIdEntries字段之和决定;
第一层资源目录中IMAGE_RESOURCE_DIRECTORY_ENTRY结构中Name和OffsetToDirectory有效,分别代表资源类型和第二层资源目录的偏移地址。
(2)解析第二层目录
第二层资源目同样以IMAGE_RESOURCE_DIRECTORY结构开始,后面同样紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组,数组维数由IMAGE_RESOURCE_DIRECTORY结构中NumberOfNamedEntries字段与NumberOfIdEntries字段之和决定;
第二层中IMAGE_RESOURCE_DIRECTORY_ENTRY结构中NameIsString、NameOffset、Id和OffsetToDirectory有效,其中,OffsetToDirectory字段代表第三层资源目录的偏移地址;如果NameIsString字段为0,说明该第二层资源是以ID定义的,ID号为Id字段的值;如果NameIsString字段为1,则说明该第二层资源是以名称定义的,NameOffset字段是一个相对于整个资源结构的偏移地址,指向IMAGE_RESOURCE_DIR_STRING_U结构体,按照该IMAGE_RESOURCE_DIR_STRING_U结构解析,即可提取出资源名称。
(3)解析第三层目录
与前两层相同,第三层资源目同样以IMAGE_RESOURCE_DIRECTORY结构开始,后面同样紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构体数组,不同的是数组维数固定为1。
第三层中IMAGE_RESOURCE_DIRECTORY_ENTRY结构体中Name和OffsetToData有效,分别代表资源语言类型(语言内码)和资源数据相对地址;OffsetToData是相对整个资源结构的偏移地址,指向IMAGE_RESOURCE_DATA_ENTRY结构,按照该IMAGE_RESOURCE_DATA_ENTRY结构即可提取出PE文件中的各种资源;IMAGE_RESOURCE_DATA_ENTRY结构中OffsetToData和Size分别代表资源数据的偏移地址和长度。
第三步 通过分别比对位图、图标、字符串等资源,获取相应类型的相同资源列表
经过前两步,已经分别获取到了不同PE文件的位图、图标、字符串等资源列表,PE文件的相似性比对可以转换为位图、图标、字符串等三类资源的相似性比对,接下来就是通过比对分别找出不同PE文件中相同位图、相同图标、相同字符串等3个相同资源列表。PE文件的资源的相似性比对过程如下:
(1)针对从不同PE文件中提取的位图、图标、字符串等资源,计算每一个资源的md5码,每一个资源都可以生成与之对应的唯一md5码;
(2)按照位图、图标、字符串等3类资源,分别求取不同PE文件存在的相同md5码列表,得到位图、图标、字符串等3个相同md5码列表;
(3)将(2)中得到的位图、图标、字符串等3个相同md5码列表,转换成对应的相同位图、相同图标、相同字符串等3个资源列表。
第四步 计算PE文件相似度,解决PE文件相似性定量计算和表示问题
经过前三步,已经分别求取到不同PE文件A和B中的相同位图、相同图标、相同字符串等3个资源列表。接下来,分别针对位图、图标、字符串等3类资源计算不同PE文件之间位图、图标、字符串等三类资源的相似度,最后求取PE文件的相似度,资源的相似度的计算公式如下:
其中,similarity(Ai,Bi)表示PE文件A和B的资源i的相似度(i=2表示位图资源,i=3表示图标资源,i=6表示字符串资源),Ai、Bi分别表示PE文件A和B的资源i的列表,|Ai|、|Bi|分别表示PE文件A和B的资源i的总数量,|Sim(Ai,Bi)|表示PE文件A和B的资源i相同部分的数量。
位图、图标、字符串等资源都不是PE文件必不可少的组成部分。因此,两个PE文件A和B的相似度similarity(PA,PB)采用PE文件中位图、图标、字符串等资源的最大相似度来表示:
可以看出,本发明给出了一种基于资源的PE文件相似性比对方法,该比对方法通过PE文件解析,提取并比对PE文件中位图、图标、字符串等资源,完成了PE文件相似性比对和相似度计算。该方法主要是为Windows操作系统下可执行程序、动态链接库、ActiveX控件等PE格式二进制文件溯源提供技术手段,具有良好的鲁棒性、较高的准确性和可用性。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种基于资源的PE文件相似性比对方法,其特征在于,该包括以下步骤:
第一步、按照PE文件的组织结构解析PE文件;
第二步、基于第一步从PE文件中提取位图、图标、字符串这些资源;
第三步、通过分别比对位图、图标、字符串这些资源,获取相应类型的相同资源列表;
第四步、基于第三步计算PE文件相似度。
2.如权利要求1所述的方法,其特征在于,第一步中,依据PE文件的组织结构,按照顺序对MS-DOS头、PE头、节表、节进行解析。
3.如权利要求2所述的方法,其特征在于,第一步中解析的具体过程如下:
(1)MS-DOS头:所有PE文件都以MS-DOS头开始,这是一个IMAGE_DOS_HEADER结构;MS-DOS头包含两个域,一个是e_magic,包含字符串“MZ”;另一个是e_lfanew,用于定位PE头;解析过程中直接跳过由汇编器或编译器自动生成的DOS_STUB;
(2)PE头:PE头是PE相关结构NT映像头IMAGE_NT_HEADERS的简称,其中包含许多PE加载器需要用到的字段;PE标记Signature值为5045h,则表示为PE文件是可执行文件;接下来是一个固定长度的IMAGE_FILE_HEADER结构,该IMAGE_FILE_HEADER结构包含PE文件的一些信息,其中一个域指明了IMAGE_OPTIONAL_HEADER结构的大小,接下来是一个可选的IMAGE_OPTIONAL_HEADER结构,包含了与PE加载、执行相关的一些信息,包括程序的入口点地址、加载PE文件时应使用的基地址、内存中PE文件映像的大小、对齐信息;
(3)节表:节表是PE文件的第三部分,它是一个IMAGE_SECTION_HEADER结构的数组,数组元素个数由PE头中结构体IMAGE_FILE_HEADER中的NumberOfSection字段指定;每一个IMAGE_SECTION_HEADER结构包含其所对应节的一些信息,包括节的属性、在磁盘和内存的位置和大小;
(4)节:该部分由各个具体数据内容的节构成,包括“.text”节存储程序指令代码;“.rsrc”节存储资源,包括位图、图标、字符串;通过查询节表可获得每个节的具体位置,然后读取PE文件中的数据。
4.如权利要求3所述的方法,其特征在于,第二步是通过进一步解析PE文件所包含的“.rsrc”节信息,获取PE文件中位图、图标、字符串这些资源。
5.如权利要求4所述的方法,其特征在于,第二步中,设定PE文件按照“资源类型->资源ID->资源代码页”的三层树型目录结构组织资源,其中,资源类型包括位图、图标、字符串三种,每一层资源目录都以IMAGE_RESOURCE_DIRECTORY结构开始,后面紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组;PE文件中资源的提取过程如下:
(1)解析第一层目录
第一层资源目录以IMAGE_RESOURCE_DIRECTORY结构开始,后面紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组,数组维数由IMAGE_RESOURCE_DIRECTORY结构中以字符串命名的资源数量NumberOfNamedEntries字段与以整型数字命名的资源数量NumberOfIdEntries字段之和决定;
第一层资源目录中IMAGE_RESOURCE_DIRECTORY_ENTRY结构中Name和OffsetToDirectory有效,分别代表资源类型和第二层资源目录的偏移地址;
(2)解析第二层目录
第二层资源目同样以IMAGE_RESOURCE_DIRECTORY结构开始,后面同样紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构数组,数组维数由IMAGE_RESOURCE_DIRECTORY结构中NumberOfNamedEntries字段与NumberOfIdEntries字段之和决定;
第二层中IMAGE_RESOURCE_DIRECTORY_ENTRY结构中NameIsString、NameOffset、Id和OffsetToDirectory有效,其中,OffsetToDirectory字段代表第三层资源目录的偏移地址;如果NameIsString字段为0,说明该第二层资源是以ID定义的,ID号为Id字段的值;如果NameIsString字段为1,则说明该第二层资源是以名称定义的,NameOffset字段是一个相对于整个资源结构的偏移地址,指向IMAGE_RESOURCE_DIR_STRING_U结构体,按照该IMAGE_RESOURCE_DIR_STRING_U结构解析,即可提取出资源名称;
(3)解析第三层目录
与前两层相同,第三层资源目同样以IMAGE_RESOURCE_DIRECTORY结构开始,后面同样紧跟一个IMAGE_RESOURCE_DIRECTORY_ENTRY结构体数组,不同的是数组维数固定为1;
第三层中IMAGE_RESOURCE_DIRECTORY_ENTRY结构体中Name和OffsetToData有效,分别代表资源语言类型和资源数据相对地址;OffsetToData是相对整个资源结构的偏移地址,指向IMAGE_RESOURCE_DATA_ENTRY结构,按照该IMAGE_RESOURCE_DATA_ENTRY结构即可提取出PE文件中的各种资源;IMAGE_RESOURCE_DATA_ENTRY结构中OffsetToData和Size分别代表资源数据的偏移地址和长度。
6.如权利要求5所述的方法,其特征在于,第三步是通过比对分别找出不同PE文件中相同位图、相同图标、相同字符串的3个相同资源列表。
7.如权利要求6所述的方法,其特征在于,第三步中PE文件的资源的相似性比对过程如下:
(1)针对从不同PE文件中提取的位图、图标、字符串资源,计算每一个资源的md5码,每一个资源都生成与之对应的唯一md5码;
(2)按照位图、图标、字符串这3类资源,分别求取不同PE文件存在的相同md5码列表,得到位图、图标、字符串的3个相同md5码列表;
(3)将步骤(2)中得到的位图、图标、字符串的3个相同md5码列表,转换成对应的相同位图、相同图标、相同字符串的3个资源列表。
8.如权利要求7所述的方法,其特征在于,第四步是分别针对位图、图标、字符串这3类资源计算不同PE文件之间位图、图标、字符串等三类资源的相似度,最后求取PE文件的相似度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210356639.8A CN114757163A (zh) | 2022-03-31 | 2022-03-31 | 基于资源的pe文件相似性比对方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210356639.8A CN114757163A (zh) | 2022-03-31 | 2022-03-31 | 基于资源的pe文件相似性比对方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114757163A true CN114757163A (zh) | 2022-07-15 |
Family
ID=82328441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210356639.8A Pending CN114757163A (zh) | 2022-03-31 | 2022-03-31 | 基于资源的pe文件相似性比对方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114757163A (zh) |
-
2022
- 2022-03-31 CN CN202210356639.8A patent/CN114757163A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7634720B2 (en) | System and method for providing context to an input method | |
CN108139891B (zh) | 用于生成建议以纠正未定义标记错误的方法和系统 | |
US6305008B1 (en) | Automatic statement completion | |
US7937688B2 (en) | System and method for context-sensitive help in a design environment | |
US8464207B2 (en) | System and method for tracking software changes | |
US7840939B1 (en) | Method for managing annotation inheritance | |
Sharp | Microsoft Visual C# step by step | |
US20050198624A1 (en) | Method and system for program transformation | |
JP6241352B2 (ja) | コンパイラ、コンパイル方法、およびコンパイル装置 | |
US5960197A (en) | Compiler dispatch function for object-oriented C | |
US8332833B2 (en) | Procedure control descriptor-based code specialization for context sensitive memory disambiguation | |
US10599852B2 (en) | High performance software vulnerabilities detection system and methods | |
JP2020119348A (ja) | 解析プログラム、解析方法および解析装置 | |
CN100454244C (zh) | 在标记中用于定义和使用子类说明的系统和方法 | |
US7096463B2 (en) | System and apparatus for dynamically upgrading concentrated executable computer software code | |
US8935657B2 (en) | Model-to-model transformation by kind | |
JP2002527814A (ja) | コンポーネント・ベース型ソース・コード・ジェネレータ | |
US11036478B2 (en) | Automated determination of transformation objects | |
JPH01161563A (ja) | コンピユータ・システム及びオペレーテイング・システムへのコマンド適合方法 | |
US7657869B2 (en) | Integration of external tools into an existing design environment | |
US10983771B1 (en) | Quality checking inferred types in a set of code | |
Schröder et al. | An empirical investigation of command-line customization | |
US20050028152A1 (en) | Method and apparatus for identifying a Java class package name without disassembling Java bytecodes | |
CN116893809A (zh) | 用于代码可解释性的代码富集的方法、存储介质和系统 | |
CN114757163A (zh) | 基于资源的pe文件相似性比对方法 |
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 |