CN103198011B - 一种探测java程序文件扰动的方法及装置 - Google Patents

一种探测java程序文件扰动的方法及装置 Download PDF

Info

Publication number
CN103198011B
CN103198011B CN201210004813.9A CN201210004813A CN103198011B CN 103198011 B CN103198011 B CN 103198011B CN 201210004813 A CN201210004813 A CN 201210004813A CN 103198011 B CN103198011 B CN 103198011B
Authority
CN
China
Prior art keywords
label
class
program file
disturbance
equations
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.)
Active
Application number
CN201210004813.9A
Other languages
English (en)
Other versions
CN103198011A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201210004813.9A priority Critical patent/CN103198011B/zh
Publication of CN103198011A publication Critical patent/CN103198011A/zh
Priority to HK13110053.8A priority patent/HK1182805A1/zh
Application granted granted Critical
Publication of CN103198011B publication Critical patent/CN103198011B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本申请公开了一种探测JAVA程序文件扰动的方法及装置,应用于计算机技术领域。方法包括:根据第一程序文件运行过的每个类和每个方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;第一程序文件程序修改得到第二程序文件,扫描第二程序文件的java字节码文件,根据第二程序文件中每个类和每个方法的内容信息确定每个类的第二类标签以及每个方法的第二方法标签;将第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定发生了扰动的类和方法。本申请公开的方法和装置通过采用JAVA字节码来探测JAVA类与API扰动,解决了现有技术中不能检测到程序代码中类和API信息发生扰动的问题。

Description

一种探测JAVA程序文件扰动的方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种探测JAVA程序文件扰动的方法及装置。
背景技术
程序员编写程序的过程中,每个程序都会有很多不同的版本,从而需要程序员很好的管理各版本的代码,在需要的时间可以取出需要的版本,并且每个版本都有一个完整的说明。SVN(SubVersion,代码版本管理软件)作为版本管理工具。
SVN(Subversion,版本控制系统)与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。
现有技术中如果使用SVN代码版本管理软件对不同版本的JAVA程序文件进行检测,在JAVA代码生产过程中,只能通过文本对比方法检测文本扰动,探测到的变化是与JAVA类和API无关的,则通过文本对比方法检测文本扰动,不能探测到JAVA类和API的变化。而在实际的工程生产中,如果需要检测到JAVA类和API的变化,则需要依靠人工的干预来组织JAVA类和API发生的变化。一个普通的工程包含的JAVA类和API数量是惊人的,从而导致实现JAVA类和API检测的难度大,程序复杂。
发明内容
本申请实施例提供一种探测JAVA程序文件扰动的方法及装置,本申请实施例所提供的方法和装置解决了现有技术中不能检测到程序代码中类和API信息发生扰动的问题。
本申请实施例提供一种探测JAVA程序文件扰动的方法,该方法包括:
在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;
所述第一程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签插装到所述java字节码文件;
将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法。
根据上述方法本申请实施例还提供一种探测JAVA程序文件扰动的装置,该装置包括:
动态标签获取模块,用于在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;
静态标签获取模块,用于所述程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签插装到所述java字节码文件;
扰动确定模块,用于将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法。
上述技术方案中的一个或两个,至少具有如下技术效果:
本申请实施例所提供的方法和装置,采用JAVA字节码来探测JAVA类与API扰动,从而能够检测到java程序中出现扰动的类和API信息,有效降低了JAVA类和API检测的难度和复杂度。
附图说明
图1为本申请实施例一种探测JAVA程序文件扰动的方法的流程图;
图2为本申请实施例现有技术中em、ec文件结构;
图3为本申请实施例进行插装后的em、ec;
图4为本申请实施例插装方法标签后的em文件结构示意图;
图4A为本申请实施例插装方法标签后的cm文件结构示意图;
图5为本申请实施例在em文件中写入和读出methodsstamp的方法流程图;
图6为本申请实施例在ec文件中写入和读出methodsstamp的方法流程图;
图7为本申请实施例对比em和ec文件中methodsstamp的方法流程图;
图8为本申请实施例一种探测JAVA程序文件扰动的装置的结构示意图;
图9为本申请实施例扰动确定模块的结构示意图。
具体实施方式
本申请实施例提供一种探测JAVA程序文件扰动的方法,该方法包括:在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;所述程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签插装到所述java字节码文件;将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法。
如图1所示,本申请实施例提供一种探测JAVA程序文件扰动的方法,下面结合说明书附图对本申请的具体实施方式进行详细说明:
本申请实施例所提供的方法应用于JAVA程序中,任一JAVA编写的程序文件通常包括多个类而且每个类中都包括多个实现特定功能的方法,应用本申请提供的方法对应用JAVA编写的第一程序进行探测时,具体实现步骤包括:
步骤101,在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;
本申请实施例更优化方法,因为在JAVA程序结构中,方法包含在每一个类中,所以如果想要知道每个方法是否发生了改变,则需要根据方法标签确定标签对应的方法,因为在具体的运行环境中,每个方法对应特定常量池中的一个常数,根据这个常数可以确定运行的方法是哪一个,所以在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签之后,该方法还包括:
根据每个方法的内容信息计算得到每个方法对应的第一方法标签后,获取所述第一方法标签对应的常量池中的常数,并根据所属常数确定每个第一方法标签对应的方法。
由于程序在使用过程中,随着功能模块增多等情况会对程序做相应的修改,为了明确修改的部分,本申请实施例中将修改后的程序(即第二程序文件)与原始的程序(即第一程序文件)进行比较确定修改部分。
步骤102,所述第一程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签写入所述java字节码文件;
在本申请实施例中,将所述第二方法标签写入到所述java字节码文件包括:
扫描java字节码文件中的每个类,根据每个类中每个方法对应的内容信息生成与每个方法对应的第二方法标签;
将每个类生成的多个第二方法标签存入对应的数组中,并将所述数组写入第二程序文件的java字节码文件。
在本申请实施例中,类与类对应的方法存放时按照一定的对应关系,具体的实现方式可以是在存放一个类标签之后顺序排列该类中包括的多个方法标签。
步骤103,将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法。
本申请实施例中,步骤103的具体实现方式可以是:
将所述第一类标签与对应的第二类标签进行比较,如果检测到任一第一类标签与对应的第二类标签不相同,则确定不相同的第一类标签对应的类发生了扰动;
因为在第一文件程序文件中包括多个第一类标签,并且每个第一类标签对应的包含多个第一方法标签,因为第二程序文件是在第一程序文件的基础上做了相应修改的所以第二程序文件中的类与第一程序文件中的类标签进行比较时候包括三种情况,相同、不相同和添加了一个新的类。因为第一程序文件和第二程序文件之间的关系,所以程序文件中各个类的排列顺序不会有太大的变化,所以第一程序文件中的第一类标签和第二程序文件中的第二类标签进行比较时,可以直接将第一类标签和对应位置上的第二类标签进行比较。
将不相同的第二类标签对应的第二方法标签与第一类标签对应的第一方法标签进行比较;如果检测到任一第二方法标签与对应的第一方法标签不相同,则确定不相同的第一方法标签对应的方法发生了扰动;
如果,类标签存在不相同,则不相同的类中个方法也会存在不相同。所以要将两个不相同的类的方法再做进一步的比较,确定不相同的方法。
根据类和方法扰动方式对所述类和方法的源代码进行处理。
其中,根据类和方法扰动方式对所述类和方法的源代码进行处理包括:
如果没有检测到与任一第一方法标签对应的第二方法标签,则将所述任一第一方法标签对应的类及API信息保存到设定地址;
如果任一第一方法标签与对应的第二方法标签不相同,则所述任一第二方法标签对应的类及API信息保存到设定地址;
如果任一第一方法标签与对应的方法标签相同,则将第一方法标签对应方法对应的覆盖率信息数据复制到当前数组中,表示覆盖率按原来的数据计算。
在本申请实施例中,将插装产品代码编译后的字节码文件(未改进前的em、ec文件结构如图2所示)中插装类标签(插装后的em、ec如图3所示),会得到程序的静态信息文件(即所述JAVA字节码文件),并存为文件coverage.em。所述coverage.em中包括每个类的属性信息,例如:被插装的程序中包含了多少类,classstamp,类当中源代码的信息,类中block的信息等等。
在步骤101执行之后,还可以在程序运行时,通过对程序动态信息分析,通过被执行的程序内容确定被执行的类标签从而确定程序中哪些类被执行,哪些类未被执行,并将相关的信息存储为动态信息文件coverage.ec。该动态信息文件中包括步骤101中得到的每个类的第一类标签以及每个类包括的方法的第一方法标签。
如图2和图3所示的程序为例对插装过程做详细的说明:
在“ClassDescriptor”中有个“longm_stamp”(类标签)代表的是在coverage.em文件中某一个class的类标签stamp(即前述的第二类标签),在”DataHolder”中的”longm_stamp”是存储在coverage.ec文件中的某个class的类标签stamp(即前述的第一类标签)。在通常情况下这两个“m_stamp”是相同的。但是在下列场景中会出现不一致的情况:
具体情况包括:
1)将被插装过ClassA的.class文件或者。.jar文件加载进JBoss运行应用。这时生成coverage.em;
2)执行某个测试用例,假设这个测试用例会覆盖ClassA这时生成coverage.ec。此时coverage.em,coverage.ec中ClassA的m_stamp是相同;
3)修改ClassA的源代码,重新编译,加载进JBoss对应得到2coverage.em.这时2coverage.em与原ClassA文件运行时生成的coverage.ec的m_stamp就不同了;
则可将步骤3出现的m_stamp不同视为一个程序异常,抛出并处理CLASS_STAMP_MISMATCH的异常。见如下的代码:
进一步,还可利用classstamp的对比,知道两个软件版本的产品源代码中,哪些类被修改了。
同样地,如果想知道被改动类中的哪些方法被修改了,利用methodstamp的对比可准确的判断出某个被改动的类中哪些方法被修改过,哪些方法是新添加的。图4和图4A为插装methodstamp后的coverage.em,coverage.ec的结构。
在MethodDescriptor中,添加一个新的attribute:longm_methodStamps。这个attribute用来存储一个类中的某个method的stamp;同样的,在DataHolder中,添加了一个新的attribute:HashMapm_methodStamps.这个attribute用来存储一个类中所有的methodstamps。
如图5所示,在coverage.em中写入和读出方法标签methodstamp包括:
步骤501,在InstrVistor类中添加一个数组m_methodstamps[],用来存储测试过程中扫描每个类时收集的methodstamps;
步骤502,在InstrVistor类的consumeSignatureData()方法中添加对methodstamps的计算;
步骤503,修改MethodDescriptor类的构造函数,将methodstamps作为参数传入构造函数中,赋值给m_methodstamps数组;
步骤504,在InstrVisitor中调用MethodDescriptor的地方,调用新的MethodDescriptor()。
在InstrVistor类中调用过MethodDescriptor类构造函数实例化对象的的地方,需重新调用新的MethodDescriptor构造函数传入consumeSignatureData()方法计算得到的methodstamps实例化对象;
步骤505,在MethodDescriptor类的writeExternal()方法中添加将m_methodStamps写入em的语句;
步骤506,在MethodDescriptor类的readExternal()方法中添加将m_methodStamps读出em的语句。
如图6所示,在coverage.ec写入和读出methodstamp,具体步骤:
步骤601,在InstrVistor类中添加二个数组m_method_stamp_index[]和m_methodstamps[]。
其中,m_method_stamp_index[]用来存放获取的m_methodstamps在常量池中的index,m_methodstamps[]用来存储测试过程中扫描每个类时收集的methodstamps;
步骤602,在InstrVistor类consumeSignatureData()方法计算某个方法的m_methodstamps[i]。
步骤603,在InstrVistor的visit()方法内将由consumeSignatureData()方法计算获取的m_methodstamps[i]添加入常量池中,并将m_methodstamps[i]在常量池中的index赋给m_method_stamp_index[i];
步骤604,在InstrVistor的visit()方法内添加编码,用于在.class文件的VRi的方法中插入methodstamps信息;
步骤605,修改com.vladium.tcc.rt.r()的参数,添加一个参数用于传递m_methodstamps。
步骤606,在DataHolder类中添加一个Hashmap,存储m_methodstamps,修改DataHolder的构造函数和coverage.addclass()方法,添加参数用于传递m_methodstamps;
步骤607,JVM关闭或执行ctl命令时,会调用CoverageData.writeExternal(),将m_methodStamps、m_method_stamp_index写入ec;
步骤608,在生成覆盖率报告时,会调用CoverageData.readExternal(),将m_methodStamps、m_method_stamp_index读出ec。
如图7所示,针对以上生成的em和ec文件,对比coverage.em,coverage.ec中methodstamps的异同从而确定被改动的方法:
步骤701,首先对比em、ec文件中classstamp的异同,若相同,正常处理,否则,转入步骤702;
步骤702,进一步对比em、ec文件中methodstamp的异同,获知改动类中哪些方法被改动,若em中有某个methodstamp,而ec中不存在,转步骤703;若em、ec中的methodsatmp不同,则转步骤704;若em、ec文件中methodstamp相同,则转步骤705;
步骤703,将新添加的类及API信息写入changefile.html;
步骤704,将相应改动的类及API的信息写入changefile.html;
步骤705,将ec中每个block的覆盖信息赋给tempCoverage[i];
步骤706,将tempCoverage赋给coverage,将存储最新block信息的tempCoverage更新至coverage.ec。
如图8所示,根据上述方法本申请实施例还提供一种探测JAVA程序文件扰动的装置,该装置包括:
动态标签获取模块801,用于在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;
静态标签获取模块802,用于所述程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签插装到所述java字节码文件;
扰动确定模块803,用于将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法。
另外,所述静态标签获取模块802还用于扫描java字节码文件中的每个类,根据每个类中每个方法对应的内容信息生成与每个方法对应的第二方法标签;并将生成的第二方法标签存入第一数组中,将每个类生成的多个第二方法标签存入对应的数组中,并将所述数组写入第二程序文件的java字节码文件。
如图9所示,为了精确的确定程序文件中出现扰动的方法和类,本申请实施例所提供的扰动确定模块803包括:
扰动类确定单元901,用于将所述第一类标签与对应的第二类标签进行比较,如果检测到任一第一类标签与对应的第二类标签不相同,则确定不相同的第一类标签对应的类发生了扰动;
扰动方法确定单元902,用于将不相同的第二类标签对应的第二方法标签与第一类标签对应的第一方法标签进行比较;如果检测到任一第二方法标签与对应的第一方法标签不相同,则确定不相同的第一方法标签对应的方法发生了扰动;
扰动处理单元903,用于根据类和方法扰动方式对所述类和方法的源代码进行处理。
进一步,所述扰动处理单元903还用于如果没有检测到与任一第一方法标签对应的第二方法标签,则将所述任一第一方法标签对应的类及API信息保存到设定地址;如果任一第一方法标签与对应的第二方法标签不相同,则所述任一第二方法标签对应的类及API信息保存到设定地址;如果任一第一方法标签与对应的方法标签相同,则将第一方法标签对应方法对应的覆盖率信息数据复制到当前数组中。
为了通过方法标签对应的确定出线扰动的方法,则本申请实施例所提供的动态标签获取模块801还用于根据每个方法的内容信息确定每个方法对应的第一方法标签后,将得到的第一方法标签添加到对应常量池,根据所述第一方法标签对应的常量池中的常数确定每个第一方法标签对应的方法。
本申请实施例中的上述一个或多个技术方案,至少具有如下的技术效果:
本申请实施例所提供的方法和装置采用JAVA字节码来探测JAVA类与API扰动,解决了现有技术中不能检测到程序代码中类和API信息发生扰动的问题。通过本申请实施例所提供的方法和装置,每次在产品代码发生变化后,都能够对应到直观的检测到对应变化的JAVA类和方法。
本申请所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本申请的技术方案得出其它的实施方式,同样属于本申请的技术创新范围。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (8)

1.一种探测JAVA程序文件扰动的方法,其特征在于,该方法包括:
在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;
所述第一程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签插装到所述java字节码文件;
将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法;
其中,将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法,包括:
将所述第一类标签与对应的第二类标签进行比较,如果检测到任一第一类标签与对应的第二类标签不相同,则确定不相同的第一类标签对应的类发生了扰动;
将不相同的第二类标签对应的第二方法标签与第一类标签对应的第一方法标签进行比较;如果检测到任一第二方法标签与对应的第一方法标签不相同,则确定不相同的第一方法标签对应的方法发生了扰动;
根据类和方法扰动方式对所述类和方法的源代码进行处理。
2.如权利要求1所述的方法,其特征在于,在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签,之后该方法还包括:
根据每个方法的内容信息计算得到每个方法对应的第一方法标签后,获取所述第一方法标签对应的常量池中的常数,并根据所述常数确定每个第一方法标签对应的方法。
3.如权利要求1所述的方法,其特征在于,将所述第二方法标签插装到所述java字节码文件包括:
扫描java字节码文件中的每个类,根据每个类中每个方法对应的内容信息生成与每个方法对应的第二方法标签;
将每个类生成的多个第二方法标签存入对应的数组中,并将所述数组写入第二程序文件的java字节码文件。
4.如权利要求1所述的方法,其特征在于,所述根据类和方法扰动方式对所述类和方法的源代码进行处理包括:
如果没有检测到与任一第一方法标签对应的第二方法标签,则将所述任一第一方法标签对应的类及API信息保存到设定地址;
如果任一第一方法标签与对应的第二方法标签不相同,则将所述任一第二方法标签对应的类及API信息保存到设定地址;
如果任一第一方法标签与对应的方法标签相同,则将第一方法标签对应方法对应的覆盖率信息数据复制到当前数组中。
5.一种探测JAVA程序文件扰动的装置,其特征在于,该装置包括:
动态标签获取模块,用于在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;
静态标签获取模块,用于所述程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签插装到所述java字节码文件;
扰动确定模块,用于将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法;
所述扰动确定模块包括:
扰动类确定单元,用于将所述第一类标签与对应的第二类标签进行比较,如果检测到任一第一类标签与对应的第二类标签不相同,则确定不相同的第一类标签对应的类发生了扰动;
扰动方法确定单元,用于将不相同的第二类标签对应的第二方法标签与第一类标签对应的第一方法标签进行比较;如果检测到任一第二方法标签与对应的第一方法标签不相同,则确定不相同的第一方法标签对应的方法发生了扰动;
扰动处理单元,用于根据类和方法扰动方式对所述类和方法的源代码进行处理。
6.如权利要求5所述的装置,其特征在于,所述静态标签获取模块还用于扫描java字节码文件中的每个类,根据每个类中每个方法对应的内容信息生成与每个方法对应的第二方法标签;将每个类生成的多个第二方法标签存入对应的数组中,并将所述数组写入第二程序文件的java字节码文件。
7.如权利要求5所述的装置,其特征在于,扰动处理单元还用于如果没有检测到与任一第一方法标签对应的第二方法标签,则将所述任一第一方法标签对应的类及API信息保存到设定地址;如果任一第一方法标签与对应的第二方法标签不相同,则将所述任一第二方法标签对应的类及API信息保存到设定地址;如果任一第一方法标签与对应的方法标签相同,则将第一方法标签对应方法对应的覆盖率信息数据复制到当前数组中。
8.如权利要求5所述的装置,其特征在于,动态标签获取模块还用于根据每个方法的内容信息确定每个方法对应的第一方法标签后,将得到的第一方法标签添加到对应常量池,根据所述第一方法标签对应的常量池中的常数确定每个第一方法标签对应的方法。
CN201210004813.9A 2012-01-09 2012-01-09 一种探测java程序文件扰动的方法及装置 Active CN103198011B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210004813.9A CN103198011B (zh) 2012-01-09 2012-01-09 一种探测java程序文件扰动的方法及装置
HK13110053.8A HK1182805A1 (zh) 2012-01-09 2013-08-28 種探測 程序文件擾動的方法及裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210004813.9A CN103198011B (zh) 2012-01-09 2012-01-09 一种探测java程序文件扰动的方法及装置

Publications (2)

Publication Number Publication Date
CN103198011A CN103198011A (zh) 2013-07-10
CN103198011B true CN103198011B (zh) 2016-08-03

Family

ID=48720593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210004813.9A Active CN103198011B (zh) 2012-01-09 2012-01-09 一种探测java程序文件扰动的方法及装置

Country Status (2)

Country Link
CN (1) CN103198011B (zh)
HK (1) HK1182805A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559132B (zh) * 2013-11-08 2016-03-16 北京京东尚科信息技术有限公司 一种java应用程序健壮性的检测方法和装置
CN104407855B (zh) * 2014-11-12 2018-11-02 国家电网公司 一种插件动态参数设置方法及装置
CN106021094A (zh) * 2016-04-29 2016-10-12 南京慕测信息科技有限公司 一种基于程序静态分析的Java单元测试教学反馈方法
CN110134498A (zh) * 2018-02-09 2019-08-16 中移(苏州)软件技术有限公司 一种应用兼容性评估方法及装置
CN112579330B (zh) * 2019-09-30 2024-02-06 奇安信安全技术(珠海)有限公司 操作系统异常数据的处理方法、装置及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101025688A (zh) * 2006-09-08 2007-08-29 威盛电子股份有限公司 更新计算机程序的方法及系统
CN101236496A (zh) * 2007-01-29 2008-08-06 展讯通信(上海)有限公司 一种软件一致性检测方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1889076A (zh) * 2005-06-27 2007-01-03 国际商业机器公司 定制数据库模式的移植差异检测方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101025688A (zh) * 2006-09-08 2007-08-29 威盛电子股份有限公司 更新计算机程序的方法及系统
CN101236496A (zh) * 2007-01-29 2008-08-06 展讯通信(上海)有限公司 一种软件一致性检测方法和装置

Also Published As

Publication number Publication date
HK1182805A1 (zh) 2013-12-06
CN103198011A (zh) 2013-07-10

Similar Documents

Publication Publication Date Title
US11106475B2 (en) Correlating class loader objects across execution environments
CN103198011B (zh) 一种探测java程序文件扰动的方法及装置
CN105683924A (zh) 通过从在本机模式中执行转变为在经解释的模式中执行来调试本机代码
US20050204342A1 (en) Method, system and article for detecting memory leaks in Java software
CN111240689B (zh) 应用程序的构建方法、装置、设备及存储介质
US20190146777A1 (en) Method and apparatus for generating patch
WO2019005228A1 (en) AUTOMATED ADAPTATION OF A SOURCE CODE IN ORDER TO INJECT FUNCTIONS BETWEEN VERSIONS OF A PLATFORM
EP3504617B1 (en) Hybrid deoptimization mechanism for class hierarchy analysis
CN105426310A (zh) 一种检测目标进程的性能的方法和装置
CN101290596A (zh) 一种任务堆栈溢出的实时检测方法及装置
CA2753626C (en) Packed data objects
CN104899257A (zh) 分布式数据仓库中的数据更新方法和装置
US20120290560A1 (en) Mechanism for efficiently querying application binary interface/application programming interface-related information
CN104133699A (zh) 设备系统软件升级方法与系统
CN103677778A (zh) 一种CAP文件Classref常量的解析方法
CN106326129A (zh) 一种程序异常信息生成方法及装置
CN106446064B (zh) 一种数据转换方法及装置
US20240037164A1 (en) Webpage display method, system and medium
US9417988B2 (en) Tracking subclasses of and operations performed by generic objects in a computer system
US20130198716A1 (en) Configuration file compatibility
CN111857847A (zh) 一种动态配置bios字符串的方法、装置、设备及存储介质
CN108664487B (zh) 一种散列表数据的写入、读取方法及系统
CN104461676A (zh) 二进制转译堆栈操作加速处理方法及其处理器
CN110795358B (zh) 代码插桩检测方法、装置、设备及介质
US7478284B2 (en) Methods, systems, and computer program products for compensating for disruption caused by trace enablement

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1182805

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant