[发明专利]一种Java卡的Java代码补丁方法有效
| 申请号: | 201510108055.9 | 申请日: | 2015-03-12 |
| 公开(公告)号: | CN104657185B | 公开(公告)日: | 2017-08-11 |
| 发明(设计)人: | 刘哲理;隋传波 | 申请(专利权)人: | 东港股份有限公司 |
| 主分类号: | G06F9/445 | 分类号: | G06F9/445 |
| 代理公司: | 山东济南齐鲁科技专利事务所有限公司37108 | 代理人: | 牛传凯 |
| 地址: | 250100 *** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 java 代码 补丁 方法 | ||
1.一种Java卡的Java代码补丁方法,其特征在于:包括如下步骤:
⑴在Java卡芯片中预先在EEPROM中分配一块区域作为Java代码的补丁管理表,在为不同的包打补丁时,动态从EEPROM中分配一块区域作为Java代码的补丁信息表,若每个包内补丁数目超过10,则需要多级补丁信息表;
Java代码补丁由补丁管理表、补丁信息表和补丁代码组成;
补丁管理表大小为固化到ROM区域的Java包的个数×3字节,其中3字节的数据分别为1字节的补丁个数和2字节的补丁信息表的偏移地址;
每级补丁信息表的大小为62字节,每级补丁信息表内包含10个补丁方法,补丁信息表的数据信息包括本级的10个补丁方法×6字节和2字节的下一级补丁信息表的偏移地址,其中6字节的数据分别为2字节方法的绝对地址、2字节修正后方法的异常信息偏移地址和2字节修正后方法的方法体偏移地址;
⑵产生要修改的Java方法的补丁代码,所述的补丁代码包括异常处理信息和方法体;所述方法体为修正后方法的方法体;
⑶将所有方法的Java补丁代码通过应用协议数据单元命令以数据流的方式从卡外下载到卡内,并存储至ROM区域或EEPROM区域,在卡内实现补丁代码存储的步骤为:
如待打补丁的包的ID小于固化到ROM中Java包的个数,为ROM区域的包;对于ROM区域的包采取第一补丁方法;如待打补丁的包的ID不小于固化到ROM中Java包的个数,为EEPROM区域的包;对于EEPROM区域的包采取第二补丁方法;
所述的第一补丁方法为在Java卡芯片中预先分配一定大小的EEPROM作为Java补丁代码空间,该空间包含补丁管理表和补丁信息表,所述的补丁管理表用于维护固化在ROM区域的每个包的补丁数及其对应的补丁信息表的偏移地址;所述的补丁信息表的空间不需要事先分配,而是在打补丁的时候从EEPROM中分配,所述的补丁信息表存储指定个数的方法的绝对地址、修正后方法的异常信息偏移地址、修正后方法的方法体偏移地址和下一级补丁信息表的偏移地址;
所述的第二补丁方法不采用额外的空间,在原有方法的入口地址处,使用第一个字节作为是否打补丁的标志位;如果第一个字节不等于0,表示该方法没有打过补丁;如果等于0,表示方法该打过补丁,则后面2个字节表示新方法的偏移地址;所述原有方法为是补丁信息表内的补丁方法。
2.根据权利要求1所述的一种Java卡的Java代码补丁方法,其特征在于:第一补丁方法包括以下步骤:
①将卡片定位到补丁管理表,访问补丁管理表的静态数组变量,增加补丁方法的个数,检查是否存在补丁信息表,如不存在则需要额外分配空间来存储补丁信息表;
②在补丁信息表中增加一条新的补丁方法信息,包括三部分内容:方法的绝对地址、修正后方法的异常信息偏移地址和修正后方法的方法体偏移地址;
③如果补丁信息表中补丁信息已满,需要从EEPROM申请新的空间,建立下一级补丁信息表,并在现有补丁信息表最后写入新表的偏移地址,然后转到第二步继续执行。
3.根据权利要求1所述的一种Java卡的Java代码补丁方法,其特征在于:第二补丁方法包括以下步骤:
①卡片定位到原方法的方法体,将第一字节更新为0;所述原方法为补丁信息表内的补丁方法;
②从EEPROM分配空间来存储补丁代码,并将补丁代码的偏移地址写入到原方法的方法体的第2和第3字节中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东港股份有限公司,未经东港股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510108055.9/1.html,转载请声明来源钻瓜专利网。





