一种探测JAVA 程序文件扰动的方法及装置制造方法及图纸

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

【技术实现步骤摘要】

本申请涉及计算机
,尤其涉及一种探测JAVA程序文件扰动的方法及装置。
技术介绍
程序员编写程序的过程中,每个程序都会有很多不同的版本,从而需要程序员很好的管理各版本的代码,在需要的时间可以取出需要的版本,并且每个版本都有一个完整的说明。SVN(Sub Version,代码版本管理软件)作为版本管理工具。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文件中写入和读出methods stamp的方法流程图;图6为本申请实施例在ec文件中写入和读出methods stamp的方法流程图;图7为本申请实施例对比em和ec文件中methods stamp的方法流程图;图8为本申请实施例一种探测JAVA程序文件扰动的装置的结构示意图;图9为本申请实施例扰动确定模块的结构示意图。具体实施例方式本申请实施例提供一种探测JAVA程序文件扰动的方法,该方法包括:在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;所述程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签插装到所述java字节码文件;将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法。如图1所示,本申请实施例提供一种探测JAVA程序文件扰动的方法,下面结合说明书附图对本申请的具体实施方式进行详细说明:本申请实施例所提供的方法应用于JAVA程序中,任一 JAVA编写的程序文件通常包括多个类而且每个类中都包括多个实现特定功能的方法,应用本申请提供的方法对应用JAVA编写的第一程序进行探测时,具体实现步骤包括:步骤101,在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;本申请实施例更优化方法,因为在JAVA程序结构中,方法包含在每一个类中,所以如果想要知道每个方法是否发生了改变,则需要根据方法标签确定标签对应的方法,因为在具体的运行环境中,每个方法对应特定常量池中的一个常数,根据这个常数可以确定运行的方法是哪一个,所以在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签之后,该方法还包括:根据每个方法的内容信息计算得到每个方法对应的第一方法标签后,获取所述第一方法标签对应的常量池中的常数,并根据所属常数确定每个第一方法标签对应的方法。由于程序在使用过程中,随着功能模块增多等情况会对程序做相应的修改,为了明确修改的部分,本申请实施例中将修改后的程序(即第二程序文件)与原始的程序(即第一程序文件)进行比较确定修改部分。步骤102,所述第一程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签写入所述java字节码文件;在本申请实施例中,将所述第二方法标签写入到所述java字节码文件包括:扫描java字节码文件中的每个类,根据每个类中每个方法对应的内容信息生成与每个方法对应的第二方法标签;将每个类生成的多个第二方法标签存入对应的数组中,并将所述数组写入第二程序文件的java字节码文件。在本申请实施例中本文档来自技高网...

【技术保护点】
一种探测JAVA程序文件扰动的方法,其特征在于,该方法包括:在第一程序文件运行过程中,根据运行过的每个类和每个类中包括的方法得到每个类的第一类标签以及每个类包括的方法的第一方法标签;所述第一程序文件源代码发生变化生成第二程序文件后,扫描第二程序文件的java字节码文件确定所述第二程序文件中包括类及每个类所包括的方法,并根据每个类和每个方法的内容信息确定每个类的第二类标签以及每个类包括的每个方法的第二方法标签,将所述第二类标签和第二方法标签插装到所述java字节码文件;将java字节码文件中的第二类标签和第二方法标签与所述第一类标签和第一方法标签进行比较,根据比较结果确定第二程序文件相对于第一程序文件发生了扰动的类和方法。

【技术特征摘要】

【专利技术属性】
技术研发人员:马治国何思远
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1