CN104252355A - 一种获取Net程序集间差异信息的方法和装置 - Google Patents

一种获取Net程序集间差异信息的方法和装置 Download PDF

Info

Publication number
CN104252355A
CN104252355A CN201310270955.4A CN201310270955A CN104252355A CN 104252355 A CN104252355 A CN 104252355A CN 201310270955 A CN201310270955 A CN 201310270955A CN 104252355 A CN104252355 A CN 104252355A
Authority
CN
China
Prior art keywords
procedure set
net
net procedure
node
child node
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
Application number
CN201310270955.4A
Other languages
English (en)
Other versions
CN104252355B (zh
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.)
Beijing Feinno Communication Technology Co Ltd
Original Assignee
Beijing Feinno Communication Technology 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 Beijing Feinno Communication Technology Co Ltd filed Critical Beijing Feinno Communication Technology Co Ltd
Priority to CN201310270955.4A priority Critical patent/CN104252355B/zh
Publication of CN104252355A publication Critical patent/CN104252355A/zh
Application granted granted Critical
Publication of CN104252355B publication Critical patent/CN104252355B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种获取Net程序集间差异信息的方法和装置。本发明实施例提供的一种获取Net程序集间差异信息的方法包括:按照划分的Net程序集的组成部分,对第一Net程序集和第二Net程序集进行反编译,得到第一Net程序集的第一反编译结果和第二Net程序集的第二反编译结果;从第一反编译结果中提取第一Net程序集的各组成部分对应的反编译结果,从第二反编译结果中提取第二Net程序集的各组成部分对应的反编译结果;分别将第一Net程序集各组成部分对应的反编译结果与第二Net程序集中相应的组成部分的反编译结果相比对,得到第一Net程序集和第二Net程序集的差异信息。

Description

一种获取Net程序集间差异信息的方法和装置
技术领域
本发明涉及计算机软件技术领域,特别涉及一种获取Net程序集间差异信息的方法和装置。
背景技术
软件代码review(复查)是软件上线前的必要环节,对确认上线内容、提高上线质量起着重要作用。
传统的代码review方法主要由人工完成,开发人员根据经验将待上线软件的代码与原始代码比较,得到软件之间的差异,完成代码review。
现有方案由于根据经验人工比较,易于出现错判、漏判的情况,从而导致比对结果不准确,比对速度慢、比对效率低。
发明内容
本发明提供了一种获取Net程序集间差异信息的方法和装置,以解决现有方案依赖人工比对造成的比对结果不准确,比对速度慢、效率低的问题。
为达到上述目的,本发明实施例采用了如下技术方案:
本发明实施例提供了一种获取Net程序集间差异信息的方法,该方法包括:
按照划分的Net程序集的组成部分,对第一Net程序集和第二Net程序集进行反编译,得到第一Net程序集的第一反编译结果和第二Net程序集的第二反编译结果;
从所述第一反编译结果中提取所述第一Net程序集的各组成部分对应的反编译结果,从所述第二反编译结果中提取所述第二Net程序集的各组成部分对应的反编译结果;
分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息。
本发明实施例还提供了一种获取Net程序集间差异信息的装置,该装置包括:
反编译单元,用于按照划分的Net程序集的组成部分,对第一Net程序集和第二Net程序集进行反编译,得到第一Net程序集的第一反编译结果和第二Net程序集的第二反编译结果;
反编译结果提取单元,用于从所述第一反编译结果中提取所述第一Net程序集的各组成部分对应的反编译结果,从所述第二反编译结果中提取所述第二Net程序集的各组成部分对应的反编译结果;
比对单元,用于分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息。
本发明实施例的有益效果是:
本发明实施例通过对Net程序集的组成部分进行划分,按照各组成部分对Net程序集进行反编译,并提取各组成部分的反编译结果进行比对,得到差异信息的技术手段,能够实现Net程序集之间的自动比对,达到准确、快速、高效地获取Net程序集差异的技术效果。
附图说明
图1为本发明一个实施例提供的一种获取Net程序集间差异信息的方法流程示意图;
图2为本发明又一个实施例提供的一种获取Net程序集间差异信息的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明一个实施例提供了一种获取Net程序集间差异信息的方法,参见图1,该方法包括:
S100:按照划分的Net程序集的组成部分,对第一Net程序集和第二Net程序集进行反编译,得到第一Net程序集的第一反编译结果和第二Net程序集的第二反编译结果。
.NET是微软提出的一种用来实现XML(Extensible Markup Language,可扩展标记语言)、网络服务(Web Services)、SOA(Service-Oriented Architecture,面向服务的体系结构)和敏捷性的技术平台。
在.Net结构中,程序集(Assembly)是自我描述的安装单元,它可以只包括一个PE(可移植可执行)格式的DLL(Dynamic Link Library,动态链接库)或EXE(可执行)文件,也可以由多个文件组成,例如资源(位图、JPEG文件、字符串表等)、DLL和EXE文件等。
其中第一Net程序集和第二Net程序集可以是针对同一项目的程序集,也可以是针对不同项目的程序集。
S101:从第一反编译结果中提取第一Net程序集的各组成部分对应的反编译结果,从第二反编译结果中提取第二Net程序集的各组成部分对应的反编译结果。
S102:分别将第一Net程序集各组成部分对应的反编译结果与第二Net程序集中相应的组成部分的反编译结果相比对,得到第一Net程序集和第二Net程序集的差异信息。
上述步骤S100至步骤S102可以由安装在计算机设备中的应用程序执行。
Net程序集对应的原代码是以项目的形式进行编写,包含项目结构,而对Net程序集进行反编译之后得到的代码不包含项目结构,因此反编译之后的代码和原代码具有不同的结构形式,不能直接实行自动化差异比较,需要进行后续处理后才能进行差异比较,具体的差异比较的实现上也较本申请的方案而言更复杂。而本申请中只需要获取两个Net程序集的位置,然后对两个Net程序集进行反编译,得到的反编译之后的代码具有相同的结构形式,可以直接实现自动化差异比较,实现简单、高效。
其中,如果当得到标记第一Net程序集和第二Net程序集的各组成部分都无变化的差异信息时,判定确认该第一Net程序集和第二Net程序集对应的原代码是同一代码,即该原代码没有发生修改,完成代码复查;
否则,判定该第一Net程序集和第二Net程序集对应的原代码不同,两者之间对应的原代码存在修改,后续可以根据得到的差异信息完成代码review。
本发明实施例通过对Net程序集的组成部分进行划分,按照各组成部分对Net程序集进行反编译,并提取各组成部分的反编译结果进行比对,得到差异信息的技术手段,能够实现Net程序集之间的自动比对,达到准确、快速、高效地获取Net程序集差异的技术效果。
在图1所示实施例的基础上,本发明另一个实施例中,在步骤S100中,采用的Net程序集的组成部分可以如下表1所示:
表1
由上述表1可知,所采用的Net程序集的组成部分主要包括程序集描述节点、引用节点、资源节点和命名空间节点四个部分。然而,一些场景中Net程序集的组成部分可以仅包括程序集描述节点、引用节点和命名空间节点三个部分。
其中,程序集描述节点包括但不局限于下述信息项:
1)程序集名称、版本、区域性设置、公钥;
2)程序集支持的CPU架构、程序集所依赖的.NetFramework(Net框架)版本;
3)描述程序集特性的信息,例如程序集产品名称、标题、描述、版权、公司、由公共语言运行库的实时(JIT)编译器生成的代码的严格性、是否对Com可见、程序集唯一标识(Globally Unique Identifier,Guid)、目标Framework版本。
引用节点包括一个或多个引用子节点,引用子节点具有两种引用类型:模块引用和程序集引用。
资源节点包括一个或多个资源子节点,资源子节点中的资源包括两种资源类型:文本资源和二进制资源。
命名空间节点包括接口、类、枚举和结构的逻辑分组。
按照上述表1中示出的程序集的结构,依次对程序集的各组成部分进行反编译:
程序集描述节点
通过如下方式,对Net程序集的程序集描述节点进行反编译,得到程序集描述节点的反编译结果:
分别将程序集描述中的各信息项反编译为文本内容,得到程序集描述节点的反编译结果。
引用节点
通过如下方式,对Net程序集的引用节点进行反编译,得到引用节点的反编译结果:
分析各引用子节点的引用类型,当引用子节点的引用类型为模块引用时,提取该引用子节点的模块引用名称,将该引用子节点反编译为文本内容,记录该引用子节点的引用类型、模块引用名称和文本内容,得到该引用子节点的反编译结果;
当引用子节点的引用类型为程序集引用时,提取该引用子节点所引用程序集的名称,将该引用子节点反编译为文本内容,记录该引用子节点的引用类型、所引用程序集的名称和文本内容,得到该引用子节点的反编译结果。
可选的,在提取引用子节点所引用程序集的名称时,还可以同时提取引用子节点所引用程序集的版本号、区域性设置和公钥中的一项或多项信息等,将这些信息也设置在该引用子节点的反编译结果中。
示例性的,对一个AC.Demo程序集反编译后,得到的程序集引用子节点对应的反编译结果包括:
mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
上述代码指示该引用子节点的引用类型为程序集引用,所引用程序集的名称为mscorlib,版本为Version=4.0.0.0,区域性设置Culture=neutral,Culture=neutral表示程序集不依赖于特定的区域性设置,所引用程序集的公钥为PublicKeyToken=b77a5c561934e089。
资源节点
通过如下方式,对Net程序集的资源节点进行反编译,得到资源节点的反编译结果:
分析各资源子节点的资源类型,当资源子节点的资源类型为文本资源时,如资源子节点中的资源为字符串、TXT文件、XML文件等文本资源时,提取该资源子节点的名称,将该资源子节点反编译为文本内容,记录该资源子节点的名称和文本内容,得到该资源子节点的反编译结果;
当资源子节点的资源类型为二进制资源时,如资源子节点中的资源为图片资源时,提取该资源子节点的名称,将该资源子节点反编译为字符串编码值,记录该资源子节点的名称和字符串编码制,得到该资源子节点的反编译结果。
可选的,上述将资源子节点反编译为字符串编码值的一种方式为:计算资源子节点中资源的哈希(Hash)值,将计算出的哈希值作为得到的字符串编码值。
示例性的,对一个AC.Demo程序集反编译后,得到的资源子节点对应的反编译结果包括:
Demo.Peacock.jpg,HashCode:0D1A29288C50CEF0286B85160FDC4919
上述代码指示了该资源子节点的资源类型为二进制资源,该资源子节点的名称为Demo.Peacock.jpg,该资源子节点的字符串编码值为HashCode:0D1A29288C50CEF0286B85160FDC4919。
命名空间节点
通过如下方式,对Net程序集的命名空间节点进行反编译,得到命名空间节点的反编译结果:
提取命名空间节点的名称,并分别将命名空间节点的逻辑分组(接口、类、枚举和结构)反编译为文本内容,记录该命名空间节点的名称(如命名空间1、命名空间demo等)和文本内容,得到该命名空间节点的反编译结果。
一个命名空间节点中可以包括逻辑分组中的一项或多项,例如,一个示例中,程序集AC.Demo的命名空间节点中仅包括类。
步骤S101中,从第一反编译结果中将第一Net程序集的程序集描述节点、引用节点、资源节点和命名空间节点对应的反编译结果分别提取出来,以及,从第二反编译结果中将第二Net程序集的程序集描述节点、引用节点、资源节点和命名空间节点对应的反编译结果分别提取出来。在进行提取操作时,可以根据反编译结果中各段代码所指示的内容以及数据结构来区分不同组成部分的反编译结果。
相应于上述步骤S101,在步骤S102中,分别将第一Net程序集各组成部分对应的反编译结果与第二Net程序集中相应的组成部分的反编译结果相比对,得到第一Net程序集和第二Net程序集的差异信息包括:
程序集描述节点
分别将第一Net程序集的程序集描述节点中各信息项的反编译结果,逐项与第二Net程序集的程序集描述节点中相应信息项的反编译结果相比较,计算两者反编译结果的文本行差异,当任一信息项的文本行差异指示存在差异时,得到标记第一Net程序集和第二Net程序集的程序集描述节点修改的差异信息。
引用节点
按照引用子节点的引用类型,利用模块引用名称或所引用程序集的名称查找第一Net程序集和第二Net程序集中是否存在相对应的引用子节点。其中,将两个程序集中相同引用类型下,具有相同模块引用名称或者具有相同所引用程序集的名称的两个引用子节点为相对应的引用子节点。
若存在相对应的引用子节点,比较相对应的一对引用子节点的文本内容是否一致,当至少一对引用子节点的文本内容不一致时,得到标记第一Net程序集和第二Net程序集的引用节点修改的差异信息,否则,得到标记第一Net程序集和第二Net程序集的引用节点无变化的差异信息;
若不存在相对应的引用子节点,得到标记第一Net程序集的引用节点为新增且第二Net程序集的引用节点为删除的差异信息,或者,得到标记第二Net程序集的引用节点为新增且第一Net程序集的引用节点为删除的差异信息。
即当第一Net程序集和第二Net程序集所在的两侧中,若一侧所有引用资源子节点在另一侧不存在,则将该侧标记为删除,另一侧标记为新增(或者反之);若一侧引用子节点数量多于另一侧,或一侧某引用子节点与另一侧引用子节点不同,则将两侧的该引用子节点标记为修改。
资源节点
按照资源子节点的资源类型和名称,查找第一Net程序集和第二Net程序集中是否存在相对应的资源子节点。其中,两个程序中,相同资源类型下,具有相同名称的资源子节点为相对应的资源子节点。
若存在相对应的资源子节点,比较相对应的一对资源子节点的文本内容或字符串编码值是否一致,当至少一对资源子节点的文本内容字符串编码值不一致时,得到标记第一Net程序集和第二Net程序集的资源节点修改的差异信息,否则,得到标记第一Net程序集和第二Net程序集的资源节点无变化的差异信息;
若不存在相对应的资源子节点,得到标记第一Net程序集的资源节点为新增且第二Net程序集的资源节点为删除的差异信息,或者,得到标记第二Net程序集的资源节点为新增且第一Net程序集的资源节点为删除的差异信息。
即当第一Net程序集和第二Net程序集所在的两侧中,若一侧所有资源子节点在另一侧不存在,则将该侧标记为删除,另一侧标记为新增(或者反之);若一侧资源子节点数量多于另一侧,或一侧某资源子节点与另一侧对应的资源子节点不同,则将两侧的该资源子节点标记为修改。
命名空间节点
按照命名空间节点的名称,查找第一Net程序集和第二Net程序集中是否存在相对应的命名空间节点。其中,两个程序集中具有相同名称的命名空间节点为相对应的命名空间节点。
若存在相对应的命名空间节点,比较相对应的一对命名空间节点的各逻辑分组的文本内容是否一致,当至少一对命名空间节点中的至少一个逻辑分组的文本内容不一致时,得到标记第一Net程序集和第二Net程序集的命名空间节点修改的差异信息,否则,得到标记第一Net程序集和第二Net程序集的命名空间节点无变化的差异信息;
若不存在相对应的命名空间节点,得到标记第一Net程序集的命名空间节点为新增且第二Net程序集的命名空间节点为删除的差异信息,或者,得到标记第二Net程序集的命名空间节点为新增且第一Net程序集的命名空间节点为删除的差异信息。
由上,比较时系统查找所有命名空间节点,按照命名空间节点名称对命名空间分类,得到相对应的命名空间节点。然后对相对应的命名空间节点比较接口、类、结构、枚举对应的反编译结果。例如,比较时分别将两个程序集中具有相同名称的接口、类、结构、枚举的反编译结果进行比较,若两者的反编译结果相同,则标记该逻辑分组为无变化,否则标记该逻辑分组为修改。若接口、类、结构、枚举的比较结果中任一项是修改、删除、新增,则对该逻辑分组所属命名空间节点的比较结果是修改,否则比较结果为无变化。
本实施例中,当得到标记第一Net程序集和第二Net程序集的各组成部分都无变化的差异信息时,判定确认所述第一Net程序集和第二Net程序集无变化,该第一Net程序集和第二Net程序集对应的原代码是同一代码,即该原代码没有发生修改,完成代码复查。否则,判定所述第一Net程序集和第二Net程序集分别对应的原代码不同,两者之间对应的原代码存在修改,后续可以根据得到的差异信息完成代码review;其中该原代码存在修改可以表示同一项目的原代码有修改,或者表示该第一Net程序集和第二Net程序集对应的原代码为不同项目的原代码,或者表示Net程序集更新有误等。也就是说当两个Net程序集的程序集描述节点、引用节点、资源节点、命名空间节点完全相同时,则程序集间的差异结果标记为无变化,否则标记为修改。
另外,本实施例还包括:在将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对时,为比对出的每个差异点生成差异信息,记录该差异信息并将该差异信息在交互界面上显示。这种方式能够自动获取两个程序集之间的差异细节信息,方便对程序集的管理和维护。
本发明又一个实施例还提供了一种获取Net程序集间差异信息的装置,参见图2,该装置包括:
反编译单元200,用于按照划分的Net程序集的组成部分,对第一Net程序集和第二Net程序集进行反编译,得到第一Net程序集的第一反编译结果和第二Net程序集的第二反编译结果;
反编译结果提取单元201,用于从第一反编译结果中提取第一Net程序集的各组成部分对应的反编译结果,从第二反编译结果中提取第二Net程序集的各组成部分对应的反编译结果;
比对单元202,用于分别将第一Net程序集各组成部分对应的反编译结果与第二Net程序集中相应的组成部分的反编译结果相比对,得到第一Net程序集和第二Net程序集的差异信息。
其中,反编译单元200采用的Net程序集的组成部分包括程序集描述节点、引用节点、资源节点和命名空间节点,或者,反编译单元200采用的Net程序集的组成部分包括程序集描述节点、引用节点和命名空间节点;其中,程序集描述节点包括下述信息项:程序集名称、版本、区域性设置、公钥;程序集支持的CPU架构、程序集所依赖的Net框架.NetFramework版本;程序集产品名称、标题、描述、版权、公司、由公共语言运行库的实时编译器生成的代码的严格性、是否对Com可见、程序集唯一标识、目标Framework版本;以及,引用节点包括至少一个引用子节点;资源节点包括至少一个资源子节点;命名空间节点包括接口、类、枚举和结构的逻辑分组;
反编译单元200用于分别将程序集描述中的各信息项反编译为文本内容,得到程序集描述节点的反编译结果;
相应的,比对单元202,用于分别将第一Net程序集的程序集描述节点中各信息项的反编译结果,逐项与第二Net程序集的程序集描述节点中相应信息项的反编译结果相比较,计算两者反编译结果的文本行差异,当任一信息项的文本行差异指示存在差异时,得到标记第一Net程序集和第二Net程序集的程序集描述节点修改的差异信息;
以及,
反编译单元200用于分析各引用子节点的引用类型,当引用子节点的引用类型为模块引用时,提取该引用子节点的模块引用名称,将该引用子节点反编译为文本内容,记录该引用子节点的引用类型、模块引用名称和文本内容,得到该引用子节点的反编译结果;当引用子节点的引用类型为程序集引用时,提取该引用子节点所引用程序集的名称,将该引用子节点反编译为文本内容,记录该引用子节点的引用类型、所引用程序集的名称和文本内容,得到该引用子节点的反编译结果;
相应的,比对单元202,用于按照引用子节点的引用类型,利用模块引用名称或所引用程序集的名称查找第一Net程序集和第二Net程序集中是否存在相对应的引用子节点,若存在相对应的引用子节点,比较相对应的一对引用子节点的文本内容是否一致,当至少一对引用子节点的文本内容不一致时,得到标记第一Net程序集和第二Net程序集的引用节点修改的差异信息,否则,得到标记第一Net程序集和第二Net程序集的引用节点无变化的差异信息;若不存在相对应的引用子节点,得到标记第一Net程序集的引用节点为新增且第二Net程序集的引用节点为删除的差异信息,或者,得到标记第二Net程序集的引用节点为新增且第一Net程序集的引用节点为删除的差异信息。
以及,
反编译单元200用于分析各资源子节点的资源类型,当资源子节点的资源类型为文本资源时,提取该资源子节点的名称,将该资源子节点反编译为文本内容,记录该资源子节点的名称和文本内容,得到该资源子节点的反编译结果;当资源子节点的资源类型为二进制资源时,提取该资源子节点的名称,将该资源子节点反编译为字符串编码值,记录该资源子节点的名称和字符串编码制,得到该资源子节点的反编译结果;
比对单元202,用于按照资源子节点的资源类型和名称,查找第一Net程序集和第二Net程序集中是否存在相对应的资源子节点,若存在相对应的资源子节点,比较相对应的一对资源子节点的文本内容或字符串编码值是否一致,当至少一对资源子节点的文本内容字符串编码值不一致时,得到标记第一Net程序集和第二Net程序集的资源节点修改的差异信息,否则,得到标记第一Net程序集和第二Net程序集的资源节点无变化的差异信息;若不存在相对应的资源子节点,得到标记第一Net程序集的资源节点为新增且第二Net程序集的资源节点为删除的差异信息,或者,得到标记第二Net程序集的资源节点为新增且第一Net程序集的资源节点为删除的差异信息。
以及,
反编译单元200用于提取命名空间节点的名称,并分别将命名空间节点的逻辑分组反编译为文本内容,记录该命名空间节点的名称和文本内容,得到该命名空间节点的反编译结果;
比对单元202,用于按照命名空间节点的名称,查找第一Net程序集和第二Net程序集中是否存在相对应的命名空间节点,若存在相对应的命名空间节点,比较相对应的一对命名空间节点的各逻辑分组的文本内容是否一致,当至少一对命名空间节点中的至少一个逻辑分组的文本内容不一致时,得到标记第一Net程序集和第二Net程序集的命名空间节点修改的差异信息,否则,得到标记第一Net程序集和第二Net程序集的命名空间节点无变化的差异信息;若不存在相对应的命名空间节点,得到标记第一Net程序集的命名空间节点为新增且第二Net程序集的命名空间节点为删除的差异信息,或者,得到标记第二Net程序集的命名空间节点为新增且第一Net程序集的命名空间节点为删除的差异信息。
进一步的,比对单元202在将第一Net程序集各组成部分对应的反编译结果与第二Net程序集中相应的组成部分的反编译结果相比对时,为比对出的每个差异点生成差异信息,记录该差异信息并将该差异信息在交互界面上显示。这种方式能够自动获取两个程序集之间的差异细节信息,方便对程序集的管理和维护。
本发明装置实施例中各单元的具体工作方式,可以参见本发明的方法实施例,在此不再赘述。
由上所述,本发明实施例通过对Net程序集的组成部分进行划分,按照各组成部分对Net程序集进行反编译,并提取各组成部分的反编译结果进行比对,得到差异信息的技术手段,能够实现Net程序集之间的自动比对,达到准确、快速、高效地获取Net程序集差异的技术效果。
为了便于清楚描述本发明实施例的技术方案,在发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种获取Net程序集间差异信息的方法,其特征在于,所述方法包括:
按照划分的Net程序集的组成部分,对第一Net程序集和第二Net程序集进行反编译,得到第一Net程序集的第一反编译结果和第二Net程序集的第二反编译结果;
从所述第一反编译结果中提取所述第一Net程序集的各组成部分对应的反编译结果,从所述第二反编译结果中提取所述第二Net程序集的各组成部分对应的反编译结果;
分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息。
2.根据权利要求1所述的方法,其特征在于,
所述Net程序集的组成部分包括程序集描述节点、引用节点、资源节点和命名空间节点,或者,所述Net程序集的组成部分包括程序集描述节点、引用节点和命名空间节点,其中,
所述程序集描述节点包括下述信息项:
程序集名称、版本、区域性设置、公钥;程序集支持的CPU架构、程序集所依赖的Net框架.NetFramework版本;程序集产品名称、标题、描述、版权、公司、由公共语言运行库的实时编译器生成的代码的严格性、是否对Com可见、程序集唯一标识、目标Framework版本;
所述引用节点包括至少一个引用子节点;
所述资源节点包括至少一个资源子节点;
所述命名空间节点包括接口、类、枚举和结构的逻辑分组。
3.根据权利要求2所述的方法,其特征在于,通过如下方式,对Net程序集的程序集描述节点进行反编译,得到程序集描述节点的反编译结果:
分别将所述程序集描述中的各信息项反编译为文本内容,得到所述程序集描述节点的反编译结果;
相应的,所述分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息包括:
分别将所述第一Net程序集的程序集描述节点中各信息项的反编译结果,逐项与所述第二Net程序集的程序集描述节点中相应信息项的反编译结果相比较,计算两者反编译结果的文本行差异,当任一信息项的文本行差异指示存在差异时,得到标记所述第一Net程序集和第二Net程序集的程序集描述节点修改的差异信息。
4.根据权利要求2所述的方法,其特征在于,通过如下方式,对Net程序集的引用节点进行反编译,得到引用节点的反编译结果:
分析所述各引用子节点的引用类型,当所述引用子节点的引用类型为模块引用时,提取该引用子节点的模块引用名称,将该引用子节点反编译为文本内容,记录该引用子节点的引用类型、模块引用名称和文本内容,得到该引用子节点的反编译结果;
当所述引用子节点的引用类型为程序集引用时,提取该引用子节点所引用程序集的名称,将该引用子节点反编译为文本内容,记录该引用子节点的引用类型、所引用程序集的名称和文本内容,得到该引用子节点的反编译结果;
相应的,所述分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息包括:
按照所述引用子节点的引用类型,利用模块引用名称或所引用程序集的名称查找第一Net程序集和第二Net程序集中是否存在相对应的引用子节点,
若存在相对应的引用子节点,比较相对应的一对引用子节点的文本内容是否一致,当至少一对引用子节点的文本内容不一致时,得到标记所述第一Net程序集和第二Net程序集的引用节点修改的差异信息,否则,得到标记所述第一Net程序集和第二Net程序集的引用节点无变化的差异信息;
若不存在相对应的引用子节点,得到标记第一Net程序集的引用节点为新增且第二Net程序集的引用节点为删除的差异信息,或者,得到标记第二Net程序集的引用节点为新增且第一Net程序集的引用节点为删除的差异信息。
5.根据权利要求2所述的方法,其特征在于,通过如下方式,对Net程序集的资源节点进行反编译,得到资源节点的反编译结果:
分析所述各资源子节点的资源类型,当资源子节点的资源类型为文本资源时,提取该资源子节点的名称,将该资源子节点反编译为文本内容,记录该资源子节点的名称和文本内容,得到该资源子节点的反编译结果;
当资源子节点的资源类型为二进制资源时,提取该资源子节点的名称,将该资源子节点反编译为字符串编码值,记录该资源子节点的名称和字符串编码制,得到该资源子节点的反编译结果;
相应的,所述分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息包括:
按照所述资源子节点的资源类型和名称,查找第一Net程序集和第二Net程序集中是否存在相对应的资源子节点,
若存在相对应的资源子节点,比较相对应的一对资源子节点的文本内容或字符串编码值是否一致,当至少一对资源子节点的文本内容字符串编码值不一致时,得到标记所述第一Net程序集和第二Net程序集的资源节点修改的差异信息,否则,得到标记所述第一Net程序集和第二Net程序集的资源节点无变化的差异信息;
若不存在相对应的资源子节点,得到标记第一Net程序集的资源节点为新增且第二Net程序集的资源节点为删除的差异信息,或者,得到标记第二Net程序集的资源节点为新增且第一Net程序集的资源节点为删除的差异信息。
6.根据权利要求2所述的方法,其特征在于,通过如下方式,对Net程序集的命名空间节点进行反编译,得到命名空间节点的反编译结果:
提取所述命名空间节点的名称,并分别将所述命名空间节点的逻辑分组反编译为文本内容,记录该命名空间节点的名称和文本内容,得到该命名空间节点的反编译结果;
相应的,所述分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息包括:
按照命名空间节点的名称,查找第一Net程序集和第二Net程序集中是否存在相对应的命名空间节点,
若存在相对应的命名空间节点,比较相对应的一对命名空间节点的各逻辑分组的文本内容是否一致,当至少一对命名空间节点中的至少一个逻辑分组的文本内容不一致时,得到标记所述第一Net程序集和第二Net程序集的命名空间节点修改的差异信息,否则,得到标记所述第一Net程序集和第二Net程序集的命名空间节点无变化的差异信息;
若不存在相对应的命名空间节点,得到标记第一Net程序集的命名空间节点为新增且第二Net程序集的命名空间节点为删除的差异信息,或者,得到标记第二Net程序集的命名空间节点为新增且第一Net程序集的命名空间节点为删除的差异信息。
7.根据权利要求2所述的方法,其特征在于,所述分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息包括:
当得到标记第一Net程序集和第二Net程序集的各组成部分都无变化的差异信息时,判定确认所述第一Net程序集和第二Net程序集对应的原代码为同一代码,且所述原代码无修改;否则,判定所述第一Net程序集和第二Net程序集分别对应的原代码之间存在修改。
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对时,为比对出的每个差异点生成差异信息,记录该差异信息并将该信息在交互界面上显示。
9.一种获取Net程序集间差异信息的装置,其特征在于,所述装置包括:
反编译单元,用于按照划分的Net程序集的组成部分,对第一Net程序集和第二Net程序集进行反编译,得到第一Net程序集的第一反编译结果和第二Net程序集的第二反编译结果;
反编译结果提取单元,用于从所述第一反编译结果中提取所述第一Net程序集的各组成部分对应的反编译结果,从所述第二反编译结果中提取所述第二Net程序集的各组成部分对应的反编译结果;
比对单元,用于分别将所述第一Net程序集各组成部分对应的反编译结果与所述第二Net程序集中相应的组成部分的反编译结果相比对,得到所述第一Net程序集和第二Net程序集的差异信息。
10.根据权利要求9所述的装置,其特征在于,
所述反编译单元采用的Net程序集的组成部分包括程序集描述节点、引用节点、资源节点和命名空间节点,或者,所述反编译单元采用的Net程序集的组成部分包括程序集描述节点、引用节点和命名空间节点;其中,所述程序集描述节点包括下述信息项:程序集名称、版本、区域性设置、公钥;程序集支持的CPU架构、程序集所依赖的Net框架.NetFramework版本;程序集产品名称、标题、描述、版权、公司、由公共语言运行库的实时编译器生成的代码的严格性、是否对Com可见、程序集唯一标识、目标Framework版本;以及,所述引用节点包括至少一个引用子节点;所述资源节点包括至少一个资源子节点;所述命名空间节点包括接口、类、枚举和结构的逻辑分组;
所述反编译单元,用于分别将所述程序集描述中的各信息项反编译为文本内容,得到所述程序集描述节点的反编译结果;
相应的,所述比对单元,用于分别将所述第一Net程序集的程序集描述节点中各信息项的反编译结果,逐项与所述第二Net程序集的程序集描述节点中相应信息项的反编译结果相比较,计算两者反编译结果的文本行差异,当任一信息项的文本行差异指示存在差异时,得到标记所述第一Net程序集和第二Net程序集的程序集描述节点修改的差异信息;
以及,
所述反编译单元,用于分析所述各引用子节点的引用类型,当所述引用子节点的引用类型为模块引用时,提取该引用子节点的模块引用名称,将该引用子节点反编译为文本内容,记录该引用子节点的引用类型、模块引用名称和文本内容,得到该引用子节点的反编译结果;当所述引用子节点的引用类型为程序集引用时,提取该引用子节点所引用程序集的名称,将该引用子节点反编译为文本内容,记录该引用子节点的引用类型、所引用程序集的名称和文本内容,得到该引用子节点的反编译结果;
相应的,所述比对单元,用于按照所述引用子节点的引用类型,利用模块引用名称或所引用程序集的名称查找第一Net程序集和第二Net程序集中是否存在相对应的引用子节点,若存在相对应的引用子节点,比较相对应的一对引用子节点的文本内容是否一致,当至少一对引用子节点的文本内容不一致时,得到标记所述第一Net程序集和第二Net程序集的引用节点修改的差异信息,否则,得到标记所述第一Net程序集和第二Net程序集的引用节点无变化的差异信息;若不存在相对应的引用子节点,得到标记第一Net程序集的引用节点为新增且第二Net程序集的引用节点为删除的差异信息,或者,得到标记第二Net程序集的引用节点为新增且第一Net程序集的引用节点为删除的差异信息;
以及,
所述反编译单元,用于分析所述各资源子节点的资源类型,当资源子节点的资源类型为文本资源时,提取该资源子节点的名称,将该资源子节点反编译为文本内容,记录该资源子节点的名称和文本内容,得到该资源子节点的反编译结果;当资源子节点的资源类型为二进制资源时,提取该资源子节点的名称,将该资源子节点反编译为字符串编码值,记录该资源子节点的名称和字符串编码制,得到该资源子节点的反编译结果;
所述比对单元,用于按照所述资源子节点的资源类型和名称,查找第一Net程序集和第二Net程序集中是否存在相对应的资源子节点,若存在相对应的资源子节点,比较相对应的一对资源子节点的文本内容或字符串编码值是否一致,当至少一对资源子节点的文本内容字符串编码值不一致时,得到标记所述第一Net程序集和第二Net程序集的资源节点修改的差异信息,否则,得到标记所述第一Net程序集和第二Net程序集的资源节点无变化的差异信息;若不存在相对应的资源子节点,得到标记第一Net程序集的资源节点为新增且第二Net程序集的资源节点为删除的差异信息,或者,得到标记第二Net程序集的资源节点为新增且第一Net程序集的资源节点为删除的差异信息;
以及,
所述反编译单元,用于提取所述命名空间节点的名称,并分别将所述命名空间节点的逻辑分组反编译为文本内容,记录该命名空间节点的名称和文本内容,得到该命名空间节点的反编译结果;
所述比对单元,用于按照命名空间节点的名称,查找第一Net程序集和第二Net程序集中是否存在相对应的命名空间节点,若存在相对应的命名空间节点,比较相对应的一对命名空间节点的各逻辑分组的文本内容是否一致,当至少一对命名空间节点中的至少一个逻辑分组的文本内容不一致时,得到标记所述第一Net程序集和第二Net程序集的命名空间节点修改的差异信息,否则,得到标记所述第一Net程序集和第二Net程序集的命名空间节点无变化的差异信息;若不存在相对应的命名空间节点,得到标记第一Net程序集的命名空间节点为新增且第二Net程序集的命名空间节点为删除的差异信息,或者,得到标记第二Net程序集的命名空间节点为新增且第一Net程序集的命名空间节点为删除的差异信息。
CN201310270955.4A 2013-06-29 2013-06-29 一种获取Net程序集间差异信息的方法和装置 Active CN104252355B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310270955.4A CN104252355B (zh) 2013-06-29 2013-06-29 一种获取Net程序集间差异信息的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310270955.4A CN104252355B (zh) 2013-06-29 2013-06-29 一种获取Net程序集间差异信息的方法和装置

Publications (2)

Publication Number Publication Date
CN104252355A true CN104252355A (zh) 2014-12-31
CN104252355B CN104252355B (zh) 2017-08-04

Family

ID=52187300

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310270955.4A Active CN104252355B (zh) 2013-06-29 2013-06-29 一种获取Net程序集间差异信息的方法和装置

Country Status (1)

Country Link
CN (1) CN104252355B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109446083A (zh) * 2018-10-23 2019-03-08 航天信息股份有限公司 一种持续集成方法和系统
CN110569403A (zh) * 2019-09-11 2019-12-13 腾讯科技(深圳)有限公司 一种字符串提取的方法以及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996336A (zh) * 2006-12-28 2007-07-11 北京飞天诚信科技有限公司 .Net程序保护的方法和系统
CN101315599A (zh) * 2007-05-29 2008-12-03 北京航空航天大学 源程序相似度检测方法及装置
CN101414278A (zh) * 2008-12-01 2009-04-22 浙大网新科技股份有限公司 基于动态反编译技术的二进制应用程序调试方法
CN102789419A (zh) * 2012-07-20 2012-11-21 中国人民解放军信息工程大学 一种使用多样本差异比对的软件故障分析方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996336A (zh) * 2006-12-28 2007-07-11 北京飞天诚信科技有限公司 .Net程序保护的方法和系统
CN101315599A (zh) * 2007-05-29 2008-12-03 北京航空航天大学 源程序相似度检测方法及装置
CN101414278A (zh) * 2008-12-01 2009-04-22 浙大网新科技股份有限公司 基于动态反编译技术的二进制应用程序调试方法
CN102789419A (zh) * 2012-07-20 2012-11-21 中国人民解放军信息工程大学 一种使用多样本差异比对的软件故障分析方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109446083A (zh) * 2018-10-23 2019-03-08 航天信息股份有限公司 一种持续集成方法和系统
CN109446083B (zh) * 2018-10-23 2023-08-22 航天信息股份有限公司 一种持续集成方法和系统
CN110569403A (zh) * 2019-09-11 2019-12-13 腾讯科技(深圳)有限公司 一种字符串提取的方法以及相关装置
CN110569403B (zh) * 2019-09-11 2021-11-02 腾讯科技(深圳)有限公司 一种字符串提取的方法以及相关装置

Also Published As

Publication number Publication date
CN104252355B (zh) 2017-08-04

Similar Documents

Publication Publication Date Title
US11216302B2 (en) Modifying task dependencies at worker nodes using precompiled libraries
WO2017025056A1 (zh) 通过软件开发工具包实现数据跟踪的方法及系统
US20060048107A1 (en) Enhanced compiled representation of transformation formats
CN104978194A (zh) 一种网页前端开发方法及装置
CN102576344A (zh) 识别和清点应用的方法和系统
CN102124481A (zh) 在具有广告的网页中嵌入宏
CN104572085A (zh) 应用程序的分析方法及装置
CN104572072A (zh) 一种对基于mvc模式的程序的语言转换方法与设备
CN105550165A (zh) 可将网页文章导入网页文本编辑器的插件及方法
CN112269588B (zh) 算法的升级方法、装置、终端和计算机可读存储介质
US20150113034A1 (en) Information communication system and information conversion method
CN112445997A (zh) 一种提取cms多版本识别特征规则的方法及装置
CN104748757B (zh) 一种导航电子地图数据更新方法及装置
CN110688096A (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
CN111435367A (zh) 知识图谱的构建方法、系统、设备及存储介质
CN110618842B (zh) 一种业务处理方法、装置及电子设备和存储介质
CN112860662A (zh) 数据血缘关系建立方法、装置、计算机设备及存储介质
CN104090948A (zh) 核电站海量数据处理方法、装置及系统
CN111435326B (zh) 一种分析崩溃日志的方法和装置
CN110895548B (zh) 用于处理信息的方法和装置
CN102624736B (zh) 一种tl1命令校验方法及装置
CN104252355A (zh) 一种获取Net程序集间差异信息的方法和装置
CN105094787B (zh) 企业互联网应用的处理方法及装置
CN112597023A (zh) 基于导图的案例管理方法、装置、计算机设备及存储介质
CN106897287B (zh) 网页发布时间抽取方法和用于网页发布时间抽取的装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder

Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080

Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd.

Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602

Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder