Pe文件源代码一致性的判定方法及装置的制作方法

文档序号:6572177阅读:204来源:国知局
专利名称:Pe文件源代码一致性的判定方法及装置的制作方法
技术领域
本发明涉及一种PE文件源代码一致性的判定方法及装置。
背景技术
码进行编译,而随着dailybuild (日常编译)技术的引入,产品可时刻不停地进 行编译,从而产生大量的PE文件,由于编译时嵌入了一些与编译时间、编译器 版本等相关的信息,这些信息被编译进入PE文件内部,导致即使是基于相同源 代码的PE文件,多次编译以后的二进制文件对比也不尽相同,产品版本号也不 停地发生变化,此外,在添加数字签名技术以后,数字签名机制及hash机制也 会造成对PE文件的二进制格式基础上的修改。虽然可以通过自动化测试技术进 行一些技术上的测试保障,测试人员还是需要确认在编译过程中有哪些模块进 行了源代码级别的变更,以便于测试人员确定测试重点,此外,对于软件版本 发布人员而言,需要确认测试通过的版本与当前准备发布的版本是不是基于相 同的源代码,如果是基于相同的源代码,则可以进行发布。
在现有技术中,在判断两个PE文件是否基于相同的源代码时,通常是对比
否相同,若源代码相同,则是基于相同的源代码,这种判定方式,要访问生成 PE文件的所有源代码,需要较高的源代码库的权限,甚至会威胁到源代码库的 保密安全。

发明内容
本发明的目的在于提供一种基于PE文件,不需访问源代码库,即可判定 PE文件内容是否基于相同的源代码的方法及装置,即PE文件源代码一致性的 判定方法及装置,可以不影响源代码库的安全性。为达到上述目的,本发明采用以下技术方案 一种pe文件源代码一致性的判定方法,包括步骤 判断各pe文件所包含的段的数目是否相同;
若是,枚举所述各pe文件所包含的段,并判断所述各pe文件所具有的关 键段的内容是否相同,若相同,则判定所述各pe文件内容是基于相同的源代码, 若不相同,则判定所述各pe文件内容是基于不同的源代码;
若否,则判定所述各pe文件基于不同的源代码。
一种pe文件源代码一致性的判定装置,包括
段数目判别模块,用于判断各pe文件所包含的段的数目是否相同,若不相 同,则比较结果处理模块判定所述各pe文件是基于不同的源代码;
段枚举模块,用于当所述段数目判别模块判断结果为相同时,对所述各pe 文件所包含的段进行枚举;
关键段判别模块,用于判断所述段枚举模块所枚举的当前枚举段是否为关 键段,若是,则判断各关键段是否相同,若否,则不进行判断;
比较结果处理模块,用于根据所述段数目判别模块及所述关键段判别模块 的判别结果,判断所述各pe文件内容是否基于相同的源代码,当所述段数目判 别模块判定结果为相同且所述关键段判别模块判定结果为相同时,所述比较结 果处理模块判定所述各pe文件内容是基于相同的源代码。
根据本发明的pe文件源代码一致性的判定方法及其装置,其可以根据pe 文件的公开结构,获得pe文件所包含的段的数目及类型,对于来源于相同的源
代码的pe文件,其包含的段的数目相同,且所包含的关键^a的内容也相同,即,
当所对比的各待分析pe文件所包含的段的数目相同,且所包含的各关键段的内 容也相同时,即可确定各待分析pe文件是基于相同的源代码,本发明的侦测方 式不需要依赖于pe文件所对应的原始的源代码,操作方便,且不会影响源代码 库的安全性。


图1是本发明PE文件源代码一致性的判定方法的实施例一的流程示意图; 图2是本发明PE文件源代码一致性的判定方法的实施例二的流程示意图; 图3是本发明PE文件源代码一致性的判定装置的较佳实施例的结构示意图。
具体实施例方式
本发明的PE文件源代码一致性的判定方法,可以对两个及两个以上的PE 文件是不是基于相同的源代码进行判定。
根据PE文件的公开结构(通常是线性的数据流),可以获得PE文件所包含 的段的数目及类型,对于由相同的源代码所生成的PE文件,其所包含的段的数 目必须相同,因为段数目的制定需要修改源代码的内容,从而,当检测出各PE 文件所包含的段的数目不相同时,即可直接判定各PE文件是来源于不同的源代 码;此外,对于相同的源代码,即使其编译多次,其某些段的内容都是不会发 生变化的,称之为关键段,通常情况下,这些段的名称是确定的,例如
.text段,这个段为代码段,其所包含的内容是指令代码,如果这个段的内 容发生了变化,其所对应的源代码也一定是被修改过,即,如果是基于相同的 源代码,各PE文件所包含的该.text段必然包含相同的内容;
.data段,这个段为初始化数据段,包括了源代码编译时被初始化的全局和 静态变量,因此,如果这个段的内容发生了变化,那么,源代码也必然被修改
过;
.idata段,这个段相当于一个导入表,包含了外来模块的函数以及数据信息, 因此,如果这个段的内容发生了变化,则必然对其所对应的源代码进行了修改。
基于此,本发明的PE文件源代码一致性的判定方法,包括以下步骤
判断各PE文件所包含的段的数目是否相同;
若是,枚举所述各PE文件所包含的段,并判断所述各PE文件所具有的关
820071
键段的内容是否相同,若相同,则判定所述各PE文件内容是基于相同的源代码,
若不相同,则判定所述各PE文件内容是基于不同的源代码; 若否,则判定所述各PE文件基于不同的源代码。
根据本发明的PE文件源代码一致性的判定方法,可以不需要依赖于PE文 件所对应的源代码的内容,可直接根据PE文件的公开结构,对各待分析PE文 件内容是不是基于相同的源代码进行判断,当检测出各PE文件所包含的段的数 目不相同时,即可直接判定各PE文件是来源于不同的源代码;当各PE文件所 包含的段的数目相同且所包含的各关键段的内容相同时,即可以判定各PE文件 是基于相同的源代码,从而,应用本发明的判定方式,不需要依赖于原始的源 代码内容,即可对PE文件的源代码的一致性进行判定,可以不影响源代码的安 全性,操作便捷。[G]
当判断了 PE文件是否基于相同的源代码时,即可进行具体应用时的下一步 应用操作过程,比如,当判定PE文件是基于不同的源代码时,可以对PE文件 重新进行测试,当判定PE文件是基于相同的源代码时,则可以对确定的PE文 件施行自动版本发布,或者做软件版本管理,或者是其他的应用操作过程,根 据具体应用需要及环境的不同可以有所不同。
此外,由于PE文件中还包含有调试信息,而对于来自于相同源代码的PE 文件,其各自所包含的调试信息中除了第 一非必要信息之外的其他信息也必要 相同,该第一非必要信息包括时间戳信息,根据编译器类型及编译时的控制策 略的不同,调试信息可以位于关键段也可以位于非关键段,通常情况下,该调 试信息可位于非关键段。当调试信息位于关键段时,可采用上述本发明的方法 进行判断,即当各PE文件所包含的段的数目相同且所包含的关4定段的内容相同 时,所述各PE文件是基于相同的源代码,而当调试信息位于非关键^:时,则还 要对各PE文件所包含的调试信息是否相同进行判定。
故此,本发明的PE文件源代码一致性的判定方法,在判断各PE文件所具 有的关键段的内容是否相同之前,还可以包括步骤
9检测当前枚举段是否包含调试信息;
若是,判断调试信息中除了第一非必要信息之外的其他信息是否相同,若
不相同,则判定所述各PE文件内容是基于不同的源代码,若相同,则判断所述 当前枚举段是否为关键段,所述第 一非必要信息包括时间戳信息;
若否,则判断所述当前枚举段是否为关键段。
根据本发明的这种PE文件源代码一致性的判定方法,当无法确定调试信息 是位于关键段还是位于非关键段时,或者是已经确定调试信息是位于非关键段 时,则可以在已判定各PE文件的段的数目相同的情况下,可首先判定当前枚举 段是否包含调试信息,若是,则首先判断各PE文件的调试信息中除了第一非必 要信息之外的其他信息是否相同,若相同,则继续对关键段进行判定,若不同, 则可直接判定各PE文件是基于不同的源代码,分析判断速度较快,节省了时间。
此外,在软件开发过程中,根据具体开发环境的需要、以及具体功能实现 的不同,开发人员可能根据需要定义一些自定义段,在各PE文件是来源于相同 源代码的情况下,其所包含的自定义段的的数量和内容也必然相同。因此,本 发明的PE文件源代码一致性的判定方法,还可以包括
当所述各PE文件具有自定义段时,判断所述各PE文件的自定义段的数量 和内容是否相同;
若相同,且所述各PE文件所包含的段的数目相同以及所包含的关键段的内 容相同,则判定所述各PE文件是基于相同的源代码。
从而,若PE文件中包含有自定义段,或者无法确定PE文件中是否包含自 定义段时,在对PE文件源代码的一致性进行判断时,还需判定各PE文件的自 定义段是否相同,当各PE文件的自定义段的数量和/或内容不同时,则可直接 判定各PE文件内容是基于不同的源代码,当各PE文件的自定义段的数量和内 容相同时,则可以结合关键段的判定结果进行综合判断。其中,对自定义段的分析判断过程可以是在任意时刻进行,即,可以在对 关键段进行判别之前进行,也可以是在对关键段进行判别之后进行,还可以是 在对调试信息进行判别的之前或者之后进行,根据需要的不同以及具体判别环 境的不同可以有所不同。
此外,由于关键段可以是资源段,也可以是非资源段,而资源段必然是关 键段,故而在对关键段进行判断时,可以将关鍵段分为资源段与非资源段来区
别对待,即
若关键段为资源段,例如.rsrc段,由于资源段包含了模块的全部资源数据, 例如图片信息、位图信息、图表信息、波形信息以及版本信息等信息,而这些 信息中,会包含一些即使源代码不发生变化、根据编译次数或者编译环境的不 同会发生改变的第二非必要信息,比如版本信息,在使用相同的源代码的情况 下,根据编译次数的不同,可以产生不同的版本信息,而图片信息、位图信息、 图表信息等信息,则在基于相同源代码的情况下,即使编译多次也不会发生改 变,因此,在对资源段进行比较时,可不考虑该第二非必要信息,即,可以对 资源段所包含的资源信息进行遍历搜索,只要除了该第二非必要信息之外的其 他信息相同,则可以判定当前枚举的关键段为相同,而当除了该第二非必要信 息的其他任意一个信息不同时,则可以判定当前枚举的关键段不相同;
若关键段为非关键段,由于每一次编译时的时间及环境的不同,在生成PE 文件时可能包含即使源代码相同、随着编译次数或者编译环境的不同仍会发生 改变的第三非必要信息,比如时间戳信息,因此,在对非资源段进行比较时, 可以不考虑该第三非必要信息,只要除了该第三非必要信息之外的其他信息相 同,则可以判定当前枚举的关键段为相同,而当除了该第三非必要信息之外的 其他任意一个信息不同时,则可以判定当前枚举的关键段不相同。
基于此,本发明的PE文件源代码一致性的判定方法,在对关键段是否相同 进行判断时,具体可以包括
当所述关键段为资源段时,比较该资源段中除了第二非必要信息之外的信息是否相同,若相同,则判定所述各关键段的内容相同,所述第二非必要信息
包括版本信息;
当所述关键段为非资源段时,比较该资源段中除了第三非必要信息的信息 是否相同,若相同,则判定所述各关键段的内容相同,所述第三非必要信息包 括时间戳信息。
因此,根据本发明的方法,当关键段为资源段时,则可以对资源段所包含的 资源信息进行遍历搜索,只要除了第二非必要信息的其他信息相同,则可以判 定当前枚举的关键段为相同,而当除了该第二非必要信息的其他任意一个信息
不同时,则可以判定当前枚举的关键段不相同;当关键段为非关键段时,只要 除了第三非必要信息的其他信息相同,则可以判定当前枚举的关键段为相同, 而当除了该第三非必要信息的其他任意 一个信息不同时,则可以判定当前枚举 的关键段不相同。其通过对关键段为资源段以及关键段为非资源段进行区别对 待,有效提高对PE文件源代码的一致性判断的准确性。
下面针对本发明PE文件源代码一致性的判定方法的两个较佳实施例进行详 细i兌明。
实施例一
如图1所示,是本发明实施例一的流程示意图,在本实施例中,本发明方 法包括步骤
步骤S101:分析当前待分析文件是否为PE文件,若是,进入步骤S102, 若否,则直接结束该分析过程;
代码进行侦测,而在某些情况下,例如目的是需要找出与待定PE文件是来自于 相同源代码的其他PE文件时,可能无法确定加入侦测队列的文件是不是PE文 件,因此,可首先对当前待分析文件是否为PE文件进行判定,若不是,则可以 直接结束对当前待分析文件的判断过程,以节省时间;步骤S102:判断待分析各PE文件所包含的段的数目是否相同,若相同, 则进入步骤S103,若否,则直接判定所述各PE文件是基于不同的源代码,这 是因为,对于由相同的源代码所生成的PE文件,所包含的段的数目必然相同, 若段的数目发生了改变,则必然是因为源代码的内容发生了改变;
步骤S103:依次枚举各PE文件所包含的段,当还存在需枚举的段时,进 入步骤S104,若不再具有需要枚举的段,即各PE文件的段枚举完毕,则进入 步骤S110;
步骤S104:判断调试信息是否位于当前枚举段,若是,进入步骤S105,若 否,进入步骤S106;
步骤S105:判断各PE文件的当前枚举段的调试信息中除了第一非必要信 息之外的其他信息是否相同,若是,进入步骤S106,若否,则直接判定所述各 PE文件是基于不同的源代码,其中,所述第一非必要信息包括时间戳信息;
步骤S106:判断当前枚举段是否为关键段,若是,进入步骤S107,若否, 返回步骤S103;
步骤S107:判断当前关键段是否为资源段,若是,进入步骤S108,若否, 进入步骤S109;
步骤S108:使用资源段对比方式对资源段进行对比,即,不考虑资源段中 所包含的第二非必要信息,对除了该第二非必要信息的其他信息进行比对,若 该其他信息相同,则判定所对比的关键段内容相同,若该其他信息不同,则判 定所对比的关键段的内容不同,并返回步骤S103,其中,该第二非必要信息包 括版本信息;
步骤S109:使用非资源段对比方式对该非资源段进行对比,即,不考虑该 非资源段中所包含的第三非必要信息,对除了该第三非必要信息之外的其他信 息进行比较,若相同,则判定所对比的关键段内容相同,若不同,则判定所对 比的关键段的内容不相同,并返回步骤S103,其中,该第三非必要信息包括时 间戳信息;
13在多次执行上述步骤SI03至步骤S109后,即可对各PE文件所包含的多个 段分别进行比较,然后,进入步骤S110;
步骤SllO,处理上述各步骤的比较结果,判断各PE文件是否基于相同的 源代码,即,在各PE文件所包含的段的数目相同、调试信息相同且各关键段的 内容相同,则判定所述各PE文件是基于相同的源代码。
实施例二
在本实施例中,与实施例一的不同在于,还对各PE文件中所包含的自定义 段的内容进行判断,如图2所示,其包括步骤
步骤S201:分析待分析文件是否为PE文件,若是,进入步骤S202,若否, 结束当前判别进程;
步骤S202:判断当前各待分析PE文件所包含的段的数目是否相同,若相 同,进入步骤S203,若不同,则直接判定各PE文件是基于不同的源代码;
步骤S203:枚举各待分析PE文件所包含的段,当还具有需要枚举的段时, 进入步骤S204,若已经没有需要枚举的段,则进入步骤S212;
步骤S204:判断当前枚举段是否为自定义段,若是,进入步骤S205,若否, 进入步骤S206;
步骤S205:判断各待分析PE文件所包含的自定义段的数量和内容是否相 同,若相同,则进入步骤S206,若不同,则直接判定所述各待分析PE文件是 基于不同的源代码;
步骤S206:判断调试信息是否位于当前枚举段,若是,进入步骤S207,若 否,进入步骤S208;
步骤S207:判断当前所枚举的段所包含的调试信息中除了第一非必要信息 之外的其他信息是否相同,若相同,则进入步骤S208,若不同,则直接判定所 述各待分析PE文件是基于不同的源代码;
14步骤S208:判断当前枚举段是否为关键段,若是,进入步骤S209,若否, 返回步骤S203;
步骤S209,判断当前关键段是否为资源段,若是,进入步骤S210,若否, 则进入步骤S211;
步骤S210:使用资源段对比方式对当前资源段进行对比,即,判断除了第 二非必要信息之外的其他信息进行同异性比较,若相同,则判定所对应的各关 键段的内容相同,若不同,则判定所对应的各关键段的内容不相同,并返回步 骤S203,所述第二非必要信息包括软件版本信息;
步骤S21k使用非资源段对比方式对当前非资源段进行对比,即,判断除 了第三非必要信息之外的其他信息进行同异性比较,若相同,则判定所对应的 各关键段的内容相同,若不同,则判定所对应的各关键段的内容不相同,并返 回步骤S203,所述第三非必要信息包括时间戳信息;
多次进行上述步骤S203至步骤S211后,可得到对各待分析文件的各个段 的比较结果,从而可进入步骤S212,对各PE文件是不是基于相同的源代码进 行综合性判定;
步骤S212:处理上述各步骤的比较结果,判断各待分析PE文件是否基于 相同的源代码,即,在具有自定义段的情况下,若各PE文件所包含的段的数目 相同、所包含的自定义段的数量和内容、调试信息相同且各关键段的内容相同, 则判定所述各PE文件是基于相同的源代码。
本实施例的其他技术特征与实施例一相同,在此不予赘述。
由此可见,当软件开发优化在进行软件开发时,如果用户定义了自定义段,
基于相同源代码的各项分析更全面且更准确。
其中,在本实施例二中,对自定义段的同异性判断是在对调试信息的判定 之前进行,实际上,对各PE文件所包含的自定义段的同异性判断,还可以是在 对调试信息判别之后进行,可以是在对关键段的判别之前进行,也可以是在对关键段的内容进行判别之后进行,根据具体的需要及应用环境的不同可以有所 不同。
此外,在上述各实施例中,均是针对判断各PE文件是否基于相同的源代码
进行说明,本发明的PE文件源代码一致性的判定方法,还可以用于查找与某一 个特定的PE文件是基于相同源代码的其他PE文件,也可以用来判定两个不同 的目录中是否存在是基于相同的源代码的PE文件,在这种应用中,可在执行本 发明方法之前,首先判定是否存在待分析文件,若存在,则执行本发明方法的 步骤,若不存在,则可以直接结束,不进行判别。
如图3所示,是本发明PE文件源代码一致性的判定装置的一个较佳实施例 的结构示意图,如图所示,在该较佳实施例中,本发明的装置包括
段数目判别模块301,用于判断各PE文件所包含的段的数目是否相同,若
段枚举模块302,用于当所述段数目判别模块301判断结果为相同时,对所 述各PE文件所包含的段进行枚举;
关键段判别模块305,用于判断所述段枚举模块302所枚举的当前枚举段是 否为关键段,若是,判断各关键段是否相同,若否,则不进行判断;;
比较结果处理模块306,用于根据所述段数目判别模块301及所述关键段判 别模块305的判别结果,判断所述各PE文件内容是否基于相同的源代码,当所 述段数目判别模块301的判定结果为相同且所述关键段判别模块305的判定结 果为相同时,所述比较结果处理模块306判定所述各PE文件内容是基于相同的 源代码。
根据本发明的PE文件源代码一致性的判定装置,其不需要依赖于各PE文 件所对应的源代码内容,只需结合各PE文件所包含的段的数目、以及各PE文 件所包含的内容的异同,即可对PE文件是不是基于相同的源代码进行判定,即, 当各PE文件所包含的数目相同,且所包含的关键段的内容相同,则可以判定各分析PE文件是基于相同的源代码,从而不会破坏了源代码数据库的安全性,具 有较大的便利性。
本发明的PE文件源代码一致性的判定装置,还可以包括
调试信息判别模块303,用于判断所述段枚举模块301的当前枚举段是否包 含调试信息,若是时,判断调试信息中除了第一非必要信息之外的其他信息是 否相同,若不相同,则所述比较结果处理模块306直接判定所述各PE文件内容 是基于不同的源代码,若相同,则由所述关键段判别模块进行判断;当所述段 数目判别模块的判定结果为相同、所述关键段判别模块判定结果为相同以及所 述调试信息判别模块的判定结果为相同时,所述比较结果处理模块判定所述各 PE文件是基于相同的源代码,其中,所述第一非必要信息包括时间戳信息。
由于调试信息既可以位于关键段,也可以位于非关键段,若确定调试信息 位于关键段,则可以釆用上述装置进行判定,若无法确定调试信息所在段为关 键段还是非关键段,则可以通过该调试信息判别模块303事先判定当前枚举段 是否包含调试信息,若是,当枚举段所包含的调试信息中除了第一非必要信息 之外的其他信息不相同时,则可以直接确定各PE文件是基于不同的源代码,仅 当PE文件所包含的段的数目相同、调试信息中除了第一非必要信息之外的其他 信息相同且各关4定段相同时,判定PE文件是基于相同的源代码,判定速度更快, 效率更高。
此外,本发明的PE文件源代码一致性的判定装置,还可以包括
自定义段判别模块304,用于当PE文件具有自定义段时,判断各PE文件 的自定义段的数量和内容是否相同,若不相同,则所述比较结果处理模块306 可直接判定所述各PE文件内容是基于不同的源代码;
当所述段数目判别模块判定结果为相同、所述关键段判别模块判定结果为 相同且所述自定义段判别结果为相同时,所述比较结果处理;漠块判定所述各PE文件内容是基于相同的源代码。
根据软件开发所采用的方法手段的不同,软件开发人员在进行开发时可能 会增加自定义段,故在侦测PE文件是否基于相同源代码时,可通过自定义段判
别模块304对自定义段进行判别,以完整地进行判断,当该自定义段判别模块 304判断出各待分析文件的自定义段的数量和/或内容不同时,可直接判定各PE 文件是基于不同的源代码,仅当各PE文件所包含的段的数目相同、关键段的内 容相同、自定义段的内容相同,在具有调试信息判别模块303时,调试信息中 除了第 一非必要信息之外的其他信息也相同时,即可判定各PE文件是基于相同 的源代码。
由于关键段可以包含资源段与非资源段,而资源信息可以包括图片信息、 版本信息、位图信息、图标信息、波形信息等信息,而即使是对于相同的源代 码,根据编译次数的不同,版本信息也可以有所不同,而图片信息、位图信息 等信息,如果是对于相同的源代码,即使编译多次也不会发生改变,因此,在 对资源段的同异性进行判断时,可以排除对版本信息等第二非必要信息的判断。
同理,由于非资源段可以包含时间戳信息,即使对于相同的源代码,其所 生成的PE文件中所包含的时间戳信息可能不同,因此,在对非资源段的同异性 进行判断时,可以排除对时间戳信息等信息的判断。
基于此,本发明中的关键段判别模块305具体可以包括
资源段判别模块3051,用于当所述关键段为资源段时,比较该资源段中除 了第二非必要信息之外的信息是否相同,若相同,则判定所述各关键段的内容 相同,所述第二非必要信息包括版本信息;
非资源段判别模块3052,用于当所述关键段为非资源段时,比较该资源段 中除了第三非必要信息之外的信息是否相同,若相同,则判定所述各关键段的 内容相同,所述第三非必要信息包括时间戳信息。
从而,本发明的PE文件源代码的一致性的判别装置,在对资源,殳进行判断时,可以通过资源段判别模块3051对资源段所包含的资源信息进行遍历搜索, 当除了第二非必要信息之外的其他信息相同时,即判定各资源段相同,而当除
了该第二非必要信息之外的其他信息不相同时,则判定各资源段不相同;在对 非资源段的同异性进行判断时,可以通过非资源段判别模块3052排除对时间戳 信息的判断,即,当除了第三非必要信息之外的其他信息相同时,则判定各非 资源段相同,而当除了该第三非必要信息之外的其他信息不相同时,则判定各 非资源段不相同,其通过对关键段为资源段以及关键段为非资源段进行区别对 待,有效提高对PE文件源代码的一致性判断的准确性,。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在 本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明 的权利要求保护范围之内。
权利要求
1、一种PE文件源代码一致性的判定方法,包括步骤判断各PE文件所包含的段的数目是否相同;若是,枚举所述各PE文件所包含的段,并判断所述各PE文件所具有的关键段的内容是否相同,若相同,则判定所述各PE文件内容是基于相同的源代码,若不相同,则判定所述各PE文件内容是基于不同的源代码;若否,则判定所述各PE文件基于不同的源代码。
2、 根据权利要求1所述的PE文件源代码一致性的判定方法,其特征在于, 在判断所述各PE文件所具有的关键段的内容是否相同之前,还包括步骤检测当前枚举段是否包含调试信息;若是,判断调试信息中除了第一非必要信息之外的信息是否相同,若不相 同,则判定所述各PE文件内容是基于不同的源代码,若相同,则判断所述当前 枚举段是否为关键段,所述第 一非必要信息包括时间戳信息;若否,则判断所述当前枚举段是否为关键段。
3、 根据权利要求1所述的PE文件源代码一致性的判定方法,其特征在于, 还包括步骤当所述各PE文件具有自定义段时,判断所述各PE文件的自定义段的数量 和内容是否相同;若不相同,则判定所述各PE文件内容是基于不同的源代码;若相同,且所述各PE文件所包含的段的数目相同以及所包含的关键段的内 容相同,则判定所述各PE文件是基于相同的源代码。
4、 根据权利要求1所述的PE文件源代码一致性的判定方法,其特征在于, 还包括步骤在判断所述各PE文件所具有的关键段的内容是否相同之前,检测当前枚举 段是否包含调试信息;若是,判断调试信息中除了第一非必要信息之外的信息是否相同,若不相 同,则判定所述各PE文件内容是基于不同的源代码,若相同,则判断所述当前枚举段是否为关键段,所述第一非必要信息包括时间戳信息; 若否,则判断所述当前枚举段是否为关键段;以及,当所述各PE文件具有自定义段时,判断所述各PE文件的自定义段 的数量和内容是否相同;若相同,且所述各PE文件所包含的段的数目相同以及所包含的关键段的内 容相同,则判定所述各PE文件是基于相同的源代码。
5、 根据权利要求1至4任意一项所述的PE文件源代码一致性的判定方法, 其特征在于,所述判断关键段的内容是否相同的方法具体包括当所述关键段为资源段时,比较所述资源段中除了第二非必要信息之外的 信息是否相同,若相同,则判定所述各关键段的内容相同,若不相同,则判定 所述各关键段的内容不相同,所述非必要信息包括版本信息;当所述关键段为非资源段时,比较该资源段中除了第三非必要信息之外的 信息是否相同,若相同,则判定所述各关键段的内容相同,若不相同,则判定 所述各关键段的内容不相同,所述第三非必要信息包括时间戳信息。
6、 一种PE文件源代码一致性的判定装置,包括段数目判别模块,用于判断各PE文件所包含的段的数目是否相同,若不相 同,则比较结果处理模块判定所述各PE文件是基于不同的源代码;段枚举模块,用于当所述段数目判别模块判断结果为相同时,对所述各PE 文件所包含的段进行枚举;关键段判别模块,用于判断所述段枚举模块所枚举的当前枚举段是否为关 键段,若是,则判断各关键段是否相同,若否,则不进行判断;比较结果处理模块,用于根据所述段数目判别模块及所述关键段判别模块的判别结果,判断所述各PE文件内容是否基于相同的源代码,当所述段数目判 别模块判定结果为相同且所述关键段判别模块判定结果为相同时,所述比较结 果处理;漠块判定所述各PE文件内容是基于相同的源代码。
7、 根据权利要求6所述的PE文件源代码一致性的判定装置,其特征在于, 还包括调试信息判别模块,用于判断所述段枚举模块的当前枚举段是否包含调试 信息,若是时,判断调试信息中除了第一非必要信息之外的信息是否相同,若 不相同,则所述比较结果处理模块判定所述各PE文件内容是基于不同的源代码, 若相同,则由所述关键段判别模块进行判断,所述第一非必要信息包括时间戳 信息;当所述段数目判别模块的判定结果为相同、所述关键段判别模块判定结果 为相同以及所述调试信息判别模块的判定结果为相同时,所述比较结果处理模 块判定所述各PE文件是基于相同的源代码。
8、 根据权利要求6所述的PE文件源代码一致性的判定装置,其特征在于, 还包括自定义段判别模块,用于当所述各PE文件具有自定义段时,判断所述各 PE文件的自定义段的数量和内容是否相同,若不相同,则所述比较结果处理模 块判定所述各PE文件内容是基于不同的源代码;当所述段数目判别模块判定结果为相同、所述关键段判别模块判定结果为 相同且所述自定义段判别结果为相同时,所述比较结果处理模块判定所述各PE 文件内容是基于相同的源代码。
9、 根据权利要求6所述的PE文件源代码一致性的判定装置,其特征在于, 还包括调试信息判别模块,用于判断所述段枚举模块的当前枚举段是否包含调试 信息,若是时,判断调试信息中除了第一非必要信息的信息是否相同,若不相 同,则所述比较结果处理模块判定所述各PE文件内容是基于不同的源代码,若相同,则由所述关键段判别模块进行判断,所述第 一非必要信息包括时间戳信息;自定义段判别模块,用于当所述各PE文件具有自定义段时,判断所述各 PE文件的自定义段的数量和内容是否相同,若不相同,则所述比较结果处理模 块判定所述各PE文件内容是基于不同的源代码;当所述段数目判别模块判定结果为相同、所述关键段判别模块的判定结果 为相同、所述调试信息判别模块判定结果为相同且所述自定义段判别模块的判 定结果为相同时,所述比较结果处理模块判定所述各PE文件内容是基于相同的 源代码。
10、根据权利要求6至9任意一项所述的PE文件源代码一致性的判定装置, 其特征在于,所述关键段判别模块包括资源段判别模块,用于当所述关键段为资源段时,比较该资源段中除了第 二非必要信息之外的信息是否相同,若相同,则判定所述各关键段的内容相同, 若不相同,则判定所述各关键段的内容不相同,所述非必要信息包括版本信息;非资源段判别模块,用于当所述关键段为非资源段时,比较该资源段中除 了第三非必要信息之外的信息是否相同,若相同,则判定所述各关键段的内容 相同,若不相同,则判定所述各关键段的内容不相同,所述第三非必要信息包 括时间戳信息。
全文摘要
本发明公开了一种PE文件源代码一致性的判定方法及装置,通过对PE文件的公开结构进行分析,当各待分析PE文件所包含的段的数目相同、包含的关键段的内容相同时,即可判定各待分析PE文件是基于相同的源代码,这种PE文件源代码一致性的判定方法及装置,不依赖于原始源代码的内容,可以不访问源代码库,保证了源代码库的保密安全性。
文档编号G06F9/45GK101470620SQ20071003303
公开日2009年7月1日 申请日期2007年12月29日 优先权日2007年12月29日
发明者张康宗, 钊 王 申请人:珠海金山软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1