[发明专利]一种JAVA卡字节码引用访问测试方法在审
申请号: | 201611074995.1 | 申请日: | 2016-11-30 |
公开(公告)号: | CN106649009A | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 仲倩黎;曾林 | 申请(专利权)人: | 北京中电华大电子设计有限责任公司 |
主分类号: | G06F11/22 | 分类号: | G06F11/22;G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 102209 北京市昌平区北七家未*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 java 字节 引用 访问 测试 方法 | ||
技术领域
本发明涉及智能卡技术领域,尤其涉及一种JAVA卡字节码引用访问测试方法。
背景技术
Java卡技术因其开放性使得java卡在金融卡、电信卡的市场上被广泛使用。但是其开放性带来的安全问题,也逐渐被人关注。一些后下载应用会构造虚假引用来非法读取卡上存储内容,对这一安全威胁的防范能力成为java卡平台的关键质量指标之一。
由于java卡应用通过字节码在java卡平台上执行相应的操作,因此需要测试字节码访问引用的功能是否正确。对于不存在或受限的引用,应不予访问并抛出异常。
目前对字节码的引用访问测试仅限于applet能构造出来的对象引用,比如测试应用内的全局变量和局部变量,共享接口传递的其它上下文中的数组引用。常规Java Card Applet无法构造虚假引用,也就无法测试字节码访问虚假引用的情况。
发明内容
针对上述技术缺陷,本发明提出一种JAVA卡字节码引用访问测试方法。
为了解决上述技术问题,本发明的技术方案如下:
一种JAVA卡字节码引用访问测试方法,包括如下步骤:
1)构建java语言编写的测试用源程序;
2)在所述java源程序的基础上,添加一个带有short类型入参的测试方法,通过编译、转换得到CAP文件;
3)在所述CAP文件中的测试方法中,找到待测试字节码的位置,然后向前,定位到将其访问的引用压栈的字节码;
4)将所述压栈字节码替换为“XX”;所述“XX”为将测试方法short类型参数值压栈的字节码。
进一步的,所述的测试用源程序,其特征在于,创建并初始化一个对象或数组类型的全局变量,用于一次性建立一个引用,代替在测试方法中建立数组。避免在测试过程中,反复调用测试方法,反复建立数组,消耗E方空间,影响测试流程。
进一步的,在所述java源程序的基础上,添加的一个带有short类型入参的测试方法,该测试方法包括且仅包括以下内容:
带有一个short类型的参数。。
创建一个对象或数组类型的局部变量,将其值初始化为所述的一个对象或数组类型的全局变量。
编写一个语句,该语句调用待测试字节码,并使其访问所述的一个对象或数组类型的局部变量。
进一步的,所述的“XX”,其特征在于,是将测试方法short类型参数值压栈的字节码,替换前的字节码作用是将一个引用压入到栈中,该引用指向的对象是实际存在的。替换后的字节码作用是将一个short数值压入到栈中,待测试字节码从栈中取得这个数据,仍将它作为引用来进行访问。因此替换字节码动作实现了构造虚假引用的目的。
进一步的,所述的一个对象或数组类型的全局变量,其特征在于,其类型与待测试字节码要访问的对象类型一致,即如果字节码要访问byte类型数组,则全局变量定义为一个byte类型数组,如果字节码要访问一个对象,则全局变量定义为同一个类的对象。
进一步的,所述的带有一个short类型的参数,其特征在于,该参数值会从卡外,通过APDU命令传入到所述CAP文件在卡上安装的测试应用,通过测试应用传入到所述测试方法,通过测试方法传入到栈中字节码要读取引用的位置。测试人员在卡外设置该short类型参数的值,决定测试字节码要访问的引种值。从而达到测试字节码引用访问功能的目的。
进一步的,所述的一个对象或数组类型的局部变量,其特征在于,其类型与所述一个对象或数组类型的全局变量的类型一致。
进一步的,所述的一个对象或数组类型的局部变量,其特征在于,使用局部变量作为字节码访问的初始引用,可以简化测试流程,并使得测试流程可控,如果使用全局变量作为字节码访问的初始引用,则将全局变量引用压栈的字节码可能在cap下载时被修改操作数,使得下载到卡上的应用不能做期望的操作,达不到测试目的。
本发明的有益效果在于:本发明在字节码层面对JavaCard CAP文件进行修改,生成的特殊Java Card Applet可用于构造虚假引用,并将其提交给字节码进行测试,解决了常规Java Card Applet无法构造虚假引用,也就无法测试字节码访问虚假引用的情况的问题。
附图说明
图1是用于baload字节码测试的java源程序基本结构图;
图2是引用压栈字节码在cap文件中的定位;
图3是用于baload字节码测试的流程;
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电华大电子设计有限责任公司,未经北京中电华大电子设计有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611074995.1/2.html,转载请声明来源钻瓜专利网。