公开/公告号CN105589904A
专利类型发明专利
公开/公告日2016-05-18
原文格式PDF
申请/专利权人 中国银联股份有限公司;
申请/专利号CN201410756025.4
申请日2014-12-11
分类号G06F17/30;G06F17/27;G06F17/22;
代理机构中国专利代理(香港)有限公司;
代理人臧霁晨
地址 200135 上海市浦东新区含笑路36号银联大厦
入库时间 2023-12-18 15:20:54
法律状态公告日
法律状态信息
法律状态
2018-11-27
授权
授权
2016-06-15
实质审查的生效 IPC(主分类):G06F17/30 申请日:20141211
实质审查的生效
2016-05-18
公开
公开
技术领域
本发明涉及计算机领域,具体地涉及基于字节码比对进行影响性分析的回溯分析方法以及回溯分析装置。
背景技术
关于代码的分析,一般有以下几种:
(1)类型推断方法:类型推断是一个处理过程,其目的是保证每个操作都是针对一组数目正确、类型合适的对象进行,以保证操作的有效性。类型推断可以检查类型错误,选择合适的操作,根据情况确定必要的类型转换;
(2)数据流分析方法:数据流分析是一项编译时使用的技术,它能从程序代码中收集程序的语义信息并通过代数的方法在编译时确定变量的定义和使用,数据流分析被用于解决编译优化、程序验证、调试、测试并行、向量化和串行编程环境等问题。
(3)约束分析方法是将程序分析过程分为约束产生和约束求解两个阶段,前者利用约束产生规则建立变量类型或分析状态之间的约束系统,后者对这些约束系统进行求解。
另外,在现有技术通常是依赖于源代码进行数据分析。
另一方面,如果是对字节码进行分析的情况下,通常情况下是对一份字节码做合法性验证、数据流分析、逻辑验证等。
现有技术中的数据分析依赖于源代码,而且,存在信息抽取不够快速和准确的问题。
发明内容
鉴于上述问题,本发明旨在提供一中信息抽取准确且快速、通用性强的基于字节码比对的影响性回溯分析方法以及基于字节码比对的影响性回溯分析系统。
本发明的基于字节码比对的影响性回溯分析方法,其特征在于,
字节码输入步骤,输入第一字节码和第二字节码;
字节码抽取步骤,对所述输入的所述第一字节码和第二字节码进行抽取分析获得样第一字节码关键信息和第二字节码码关键信息;
字节码图谱分析步骤,对所述第一字节码关键信息、所述第二字节码关键信息进行图谱分析以获得表示字节码的关联图谱的第一图谱分析结果和第二图谱分析结果;
字节码比对步骤,将所述第一图谱分析结果存储到字节码样本库,并且将存储在所述字节码样本库中的所述第一图谱分析结果与所述第二图谱分析结果进行比对获得比对结果;
影响性分析步骤,根据所述比对结果进行差异结果的影响性分析。
优选地,所述第一字节码是样本库输入用字节码,所述第二字节码是比对输入用字节码。
优选地,所述字节码图谱分析步骤包括下述子步骤:
对所述第一字节码关键信息、所述第二字节码关键信息分别进行语义分析以得到直接调用关系;
将所述直接调用关系进行回溯分析得到表示字节码的关联图谱的图谱分析结果。
优选地,所述语义分析包括接口分析、继承关系分析、方法调用分析中的至少一种。
优选地,所述影响性分析步骤包括下述子步骤:
以所述比对结果的字节码的一个逻辑片段作为输入;
在所述字节码样本库中搜索出具有类似结构的字节码片段作为影响性分析的输出。
本发明的基于字节码比对的影响性回溯分析装置,其特征在于,
字节码输入模块,用于输入第一字节码和第二字节码;
字节码抽取模块,用于对所述输入的所述第一字节码和第二字节码进行抽取分析获得样第一字节码关键信息和第二字节码码关键信息;
字节码图谱分析模块,对所述第一字节码关键信息、所述第二字节码关键信息进行图谱分析以获得表示字节码的关联图谱的第一图谱分析结果和第二图谱分析结果;
字节码样本库,用于存储所述第一图谱分析结果;
字节码比对模块,将存储在所述字节码样本库中的所述第一图谱分析结果与所述第二图谱分析结果进行比对获得比对结果;
影响性分析模块,根据所述比对结果进行差异结果的影响性分析。
优选地,所述第一字节码是样本库输入用字节码,所述第二字节码是比对输入用字节码。
优选地,所述字节码图谱分析模块用于对所述第一字节码关键信息、所述第二字节码关键信息进行语义分析以得到直接调用关系并且将所述直接调用关系进行回溯分析得到表示字节码的关联图谱的图谱分析结果。
优选地,所述语义分析包括接口分析、继承关系分析、方法调用分析中的至少一种。
优选地,所述影响性分析模块用于以所述比对结果的字节码的一个逻辑片段作为输入并且在所述字节码样本库中搜索出具有类似结构的字节码片段作为影响性分析的输出。
本发明的基于字节码比对的影响性回溯分析方法以及基于字节码比对的影响性回溯分析系统能够获得以下技术效果:直接对字节码分析,不依赖源代码,通用性强,且信息抽取准确快速;做比对分析时,可以准确定位变更点和影响范围,有助于测试人员指定测试方案;不做比对分析时,可以分析字节码的关联图谱,为复杂性分析等等提供支撑。
附图说明
图1是表示本发明的基于字节码比对的影响性回溯分析方法的流程图。
图2表示利用方法调用分析获得的调用图谱。
图3是表示本发明的基于字节码比对的影响性回溯分析系统的构造图。
具体实施方式
下面介绍的是本发明的多个实施例中的一些,旨在提供对本发明的基本了解。并不旨在确认本发明的关键或决定性的要素或限定所要保护的范围。
图1是表示本发明的基于字节码比对的影响性回溯分析方法的流程图。
如图1所示,本发明的一实施例的基于字节码比对的影响性回溯分析方法包括:字节码输入步骤、字节码抽取步骤、字节码图谱分析步骤、字节码比对步骤以及影响性分析步骤。
下面对于各步骤进行具体说明。
(1)字节码输入步骤
在该步骤中,输入第一字节码和第二字节码。第一字节码可以是用于作为样本库输入的字节码(也称为样本库输入用字节码),分析之后将存储如下述的字节码样本库,供后续的比对使用。第二字节码是作为比对输入的字节码(也称为比对输入用字节码),用于在后续步骤中做影响性分析。
(2)字节码抽取步骤
对所述输入的所述第一字节码和第二字节码进行抽取分析获得样第一字节码关键信息和第二字节码关键信息。
具体地,字节码中包含了名称,方法,属性等等内容,通过对字节码指令的抽取分析,得到字节码中对后续分析有用的关键信息,这些信息可进入字节码样本库。
(3)字节码图谱分析步骤
对所述第一字节码关键信息、所述第二字节码关键信息进行图谱分析以获得表示字节码的关联图谱的第一图谱分析结果和第二图谱分析结果。
具体地,作为字节码图谱分析,主要是指通过语义分析形成字节码的关联图谱。所谓语义分析主要包括接口分析、继承关系分析、方法调用分析等。其中,对影响性分析最重要的是方法调用分析。在下文中再进行详细描述。
(4)字节码比对步骤
将所述第一图谱分析结果存储到字节码样本库,并且将所述第二图谱分析结果与存储在所述字节码样本库中的所述第一图谱分析结果进行比对,获得比对结果。该步骤的目的是为了找出输入和样本库的差异所在。
(5)影响性分析步骤,根据所述比对结果进行差异结果的影响性分析。
具体地,以字节码比对的差异结果作为输入,结合字节码图谱,进行差异结果的影响性分析。即变更的部分,对其它软件组件的影响性分析。
接着,对于字节码图谱分析步骤中采用的方法调用分析进行具体说明。
字节码的方法体中包含了对其它组件的方法调用指令。这种调用关系可以表述为:caller:[callee1,callee2,…]。
举例说明,A:[B,C,D],含义为A方法调用了B,C,D方法。则可知,若B方法做了变更,将会影响到A方法,因为A方法可能直接或间接引用了B方法的处理结果。
对字节做分析,将会得到类似于上的很多条调用关系。
但是上面的这种直接调用关系,不适合做回溯分析,于是在本发明中借鉴了反向索引的思想,将调用关系反过来表述为:callee:[caller1,caller2]。
这样,前面的例子将会调整为B:[A],C:[A],D:[A]。这样若B方法做了变更,就能得到其直接影响的方法列表[A],再对这个方法列表[A]的每一个元素,做类似的回溯分析,最终得到完整的调用图谱。
图2表示利用方法调用分析获得的调用图谱。
如图2所示,A被BCD调用,B被E调用,A的变化影响性很好地通过图方式得到表达。
接着,对于影响图谱分析步骤进行具体说明。
一段大的程序一般可以按照语义逻辑划分为小的逻辑片段,典型的如按程序分支进行划分。一个程序组件运行出了错误(如处理了非法的输入导致逻辑异常),并不代表程序所有的部分都是错误的。影响性图谱分析是以字节码的一个逻辑片段为输入,在字节码样本库中,搜索出具有类似结构的字节码片段,作为分析的输出。这里,多数应用场景是对字节码比对步骤比对后的差异做搜索分析。功能上讲,就是对特征字节码,在多份样本空间内去搜索和分析,而比对的差异部分是重要的分析入口。当然,换一种方式的话,也可以不基于比对差异作为起点,而是在字节码信息抽取之后,指定一段字节码做分析。
下面举例说明影响性图谱分析。
有A代码片段的逻辑为
If(conditionexpression){//分支1
dosomething…
}
另有B代码片段逻辑为
If(conditionexpression){//分支1
dosomething…
}else{//分支2
Dosomethingelse…
}
假定,A和B代码片段有相同分支1,则如果A代码片段为有缺陷片段,则和A有类似结构的B逻辑片段,也是有缺陷的。定位这样的缺陷片段,是影响性图谱分析的主要工作之一。
数据流向分析是影响分分析的另一工作。
借用图2举例说明数据流向分析。假使E组件确定了一个缺陷,原因是处理了不合理的输入参数,一般的思路是在E组件上直接修复。但是如果进行参数的回溯分析,发现该非法参数来源于B组件,再进一步分析,发现最终源头是A组件。那么,在A组件上,进行修复,比在E组件上修复是要高效得多的,因为在更前的位置处理掉不合理的输入,能更有效避免系统受到攻击,同时,也节省了修复的成本。
下面对于本发明的基于字节码比对的影响性回溯分析装置进行说明。
图3是表示本发明的基于字节码比对的影响性回溯分析系统的构造图。
如图3所示,本发明的基于字节码比对的影响性回溯分析系统包括下述模块:字节码输入模块100、字节码抽取模块200、字节码图谱分析模块300、字节码样本库400、字节码比对模块500以及影响性分析模块600。
其中,字节码输入模块100用于输入第一字节码和第二字节码。
字节码抽取模块200用于对所述输入的所述第一字节码和第二字节码进行抽取分析获得样第一字节码关键信息和第二字节码码关键信息。所述第一字节码是样本库输入用字节码,所述第二字节码是比对输入用字节码。
字节码图谱分析模块300用于对所述第一字节码关键信息、所述第二字节码关键信息进行图谱分析以获得表示字节码的关联图谱的第一图谱分析结果和第二图谱分析结果。具体地,所述字节码图谱分析模块300用于对所述第一字节码关键信息、所述第二字节码关键信息进行语义分析以得到直接调用关系并且将所述直接调用关系进行回溯分析得到表示字节码的关联图谱的图谱分析结果。
字节码样本库400用于存储所述第一图谱分析结果。
字节码比对模块500用于将存储在所述字节码样本库中的所述第一图谱分析结果与所述第二图谱分析结果进行比对获得比对结果。
影响性分析模块600用于根据所述比对结果进行差异结果的影响性分析。具体地,所述影响性分析模块600用于以所述比对结果的字节码的一个逻辑片段作为输入并且在所述字节码样本库中搜索出具有类似结构的字节码片段作为影响性分析的输出。
本发明的基于字节码比对的影响性回溯分析方法以及基于字节码比对的影响性回溯分析系统能够获得以下技术效果:
(1)直接对字节码分析,不依赖源代码,通用性强,且信息抽取准确快速;
(2)做比对分析时,可以准确定位变更点和影响范围,有助于测试人员指定测试方案;
(3)不做比对分析时,可以分析字节码的关联图谱,为复杂性分析等等提供支撑。
以上例子主要说明了本发明的基于字节码比对的影响性回溯分析方法以及基于字节码比对的影响性回溯分析系统,尽管只对其中一些本发明的具体实施方式进行了描述,但是本领域普通技术人员应当了解,本发明可以在不偏离其主旨与范围内以许多其他的形式实施。因此,所展示的例子与实施方式被视为示意性的而非限制性的,在不脱离如所附各权利要求所定义的本发明精神及范围的情况下,本发明可能涵盖各种的修改与替换。
机译: 基于自主学习基于比对的比对语料生成装置及其方法,利用比对语料进行破坏表达的语素分析装置及其形态分析方法
机译: 基于自主学习比对的比对语料生成装置和方法,利用比对语料进行破坏性表达的形态学分析装置及其形态分析方法
机译: 基于串联连接监视(TCM)坐标和缺陷回溯的用于定位缺陷位置的装置和方法以及用于识别光传输网(OTN)中缺陷的原因的装置和方法