CN103645917A - Java卡的Java代码补丁方法 - Google Patents

Java卡的Java代码补丁方法 Download PDF

Info

Publication number
CN103645917A
CN103645917A CN201310636946.2A CN201310636946A CN103645917A CN 103645917 A CN103645917 A CN 103645917A CN 201310636946 A CN201310636946 A CN 201310636946A CN 103645917 A CN103645917 A CN 103645917A
Authority
CN
China
Prior art keywords
java
patch
card
code
address
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.)
Granted
Application number
CN201310636946.2A
Other languages
English (en)
Other versions
CN103645917B (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.)
Beijing CEC Huada Electronic Design Co Ltd
Original Assignee
Beijing CEC Huada Electronic Design Co 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 Beijing CEC Huada Electronic Design Co Ltd filed Critical Beijing CEC Huada Electronic Design Co Ltd
Priority to CN201310636946.2A priority Critical patent/CN103645917B/zh
Publication of CN103645917A publication Critical patent/CN103645917A/zh
Application granted granted Critical
Publication of CN103645917B publication Critical patent/CN103645917B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及一种Java卡的Java代码补丁方法,本发明所提供的Java卡的Java代码补丁方法,解决了Java卡的实现代码固化到Java卡芯片的ROM或EEPROM或FLASH等物理介质中之后,需要修改Java卡实现代码中由Java语言所实现的问题,避免重新生产Java卡所造成的资金和时间上的额外消耗,并且由于只需下载修改后的Java方法的Java代码,降低了对Java卡芯片的资源占用。

Description

Java卡的Java代码补丁方法
技术领域
本发明涉及智能卡领域,尤其涉及一种Java卡的Java代码补丁方法。
背景技术
智能卡自诞生之日起,几十年来,随着集成电路技术、计算机技术和信息安全技术的发展,从接触式卡发展到多界面卡,从单一应用发展到多应用,种类日渐丰富,技术也更趋先进。支持多应用的智能卡——Java卡,因其强大的功能、便捷的使用和开发,获得了越来越多的关注与应用。
作为一个产品,很可能出现缺陷,或者用户的需求变更,这些问题导致Java卡需要做某些小修改,由于Java卡的发行量大、应用广、成本要求严,重新生产Java卡的时间成本和资金成本均难以接受。
针对Java卡技术的上述问题,本发明提供一种便捷的Java卡Java代码补丁方法,在无需重新生产Java卡的情况下,仅占用少量的Java卡的空间资源,对Java卡上的Java方法进行修改。
发明内容
本发明的目的是提供一种便捷的Java卡Java代码补丁方法。
Java卡Java代码补丁方法的目的是:在不重新生产Java卡的前提下,修正Java卡中Java方法的实现,并尽量少地占用Java卡中的有限资源空间。
为了实现上述发明目的,本方法提供的Java卡Java代码补丁方法包括以下步骤:
根据Java卡的设计需求,在Java卡芯片中预先分配一定大小的EEPROM或FLASH作为Java补丁代码空间;
在Java卡外将修改后的Java方法的Java代码提取出来,作为被修改的Java方法的补丁代码,Java补丁代码中含有异常处理信息和方法体两部分,Java卡上的Java方法的补丁代码也按照这种结构存储。
表1Java补丁代码结构
Figure BSA0000098417010000011
Figure BSA0000098417010000021
在Java卡内Java补丁代码空间中建立一个二级的补丁管理表,用于管理Java补丁代码,并辅助Java卡查询和定位Java补丁代码。其中一级表的大小为Java包的数目*4字节,用于记录每一个Java包所修改的方法数目(1字节)以及该包二级表的相对偏移(相对于补丁代码空间的起始地址,2字节),剩下一个字节用于补丁数据的校验。
一级表用于表示每一个Java包被修改的方法的数目和二级表的起始地址。一级表为每一个Java包均创建一个条目。一级表的内容按照Java卡上的Java包ID的顺序排列,包ID小的在前。
表2补丁管理表一级表
Figure BSA0000098417010000022
如果某个Java包存在被修正的Java方法,则需要为这个Java包创建一个二级表,二级表的内容按照被修正的Java方法的方法体的绝对地址排序,地址小的在前。
表3补丁管理表二级表
Figure BSA0000098417010000023
Figure BSA0000098417010000031
二级表的个数等于修改的Java包的个数,每个二级表的大小不同,大小等于本包修改的方法的数目*8字节。二级表用于记录被修改的Java方法的方法体的绝对地址(4字节)、修改后的Java方法的方法体的相对偏移(相对于补丁代码空间的起始地址,2字节)、修改后的方法所包含的异常处理信息的相对偏移(相对于补丁代码空间的起始地址,2字节)。为了提高补丁管理表的查找定位补丁速度,一级表的内容按照Java包在Java卡上的包ID从小到大排列,二级表的内容按照被修改的Java方法的方法体的绝对地址从小到大排列;
所有方法的Java补丁代码通过APDU流等方式从卡外下载到卡上Java代码补丁空间;
在Java卡的运行期间,Java卡在获取到当前执行的Java代码的地址之后,通过查询补丁管理表来确认Java卡是否需要跳转到Java补丁代码空间执行补丁代码。确认方式分两种情况:一种是如果JAVA卡在调用Java方法,则通过Java代码的包ID,在一级表中获取修改的方法数目,如果数目大于零,则获取二级表的位置,然后在二级表的被修改的Java方法的方法体的地址项中,查找是否有等于当前执行的代码地址的对应表项,如果能找到,则确认需要跳转;二、如果JAVA卡在捕捉处理Java异常,则先判断当前执行的Java代码的地址是否在Java代码补丁区,如果在,则通过Java代码的包ID在一级表中获取二级表的位置,然后在二级表的修改后的Java方法的方法体的地址项中,查找小于当前执行的代码地址的表项中的最大地址项,如果能找到并且存在异常处理信息,则确认需要跳转;
如果JAVA卡确认需要跳转,在第一种情况下,JAVA卡的执行地址跳转到找到的表项中的修改后的Java方法的方法体偏移地址加上补丁代码区的起始地址处。在第二种情况下,JAVA卡查找异常处理信息的地址跳转到找到的表项中的修改后的Java方法的异常处理信息偏移地址加上补丁代码区的起始地址处;
如果不需要跳转,按照一般的Java卡的执行流程继续进行,即在第一种情况下,JAVA卡的执行地址等于当前执行的代码地址,在第二种情况下,JAVA卡查找异常处理信息的地址等于当前执行的代码所属包的异常处理信息地址。
本发明所提供的Java卡Java代码补丁方法可以在不重新生产Java卡的情况下,通过下载Java补丁代码的方式,修改Java卡中的Java方法,并尽量降低补丁代码对Java卡的空间资源的占用。
附图说明
图1Java补丁代码空间的数据分布示意图。
图2Java卡调用Java方法的流程图。
图3Java卡捕捉处理Java方法异常情况的流程图。
以下结合实施例及其附图作进一步的详细说明。
具体实施方式
根据Java卡的设计需求,在Java卡芯片中预先分配一定大小的EEPROM或FLASH等物理介质空间作为Java补丁代码空间。Java补丁代码空间用于存放各个Java方法的Java补丁代码以及管理Java补丁代码的二级的补丁代码管理表,参见图1。
在Java卡外对修改后的Java代码文件进行编译,并从编译结果中将修改后的Java方法的Java代码提取出来,作为这个Java方法的补丁代码,Java补丁代码含有异常信息和方法体两部分。所有Java方法的Java补丁代码通过APDU流等方式从卡外下载到卡上的Java补丁代码空间。Java卡上的Java补丁代码存放格式参见图1和表3。
在卡内的Java补丁代码空间建立一个二级的补丁管理表,用于管理Java卡上的Java补丁代码,并且辅助Java卡查询和定位Java方法的补丁代码。其中一级表的大小为Java包的数目*4字节,用于记录每一个Java代码包所修改的方法数目(1字节)以及该包二级表的相对偏移位置(相对于补丁代码空间的起始地址,2字节),剩下一个字节用于补丁数据校验,见表1。二级表的个数等于修改的Java包的个数,每个二级表的大小不同,大小等于本包修改的方法的数目*8字节。二级表用于记录被修改的Java方法的方法体的绝对地址(4字节)、修改后的Java方法的方法体的相对偏移(相对于补丁代码空间的起始地址,2字节)、修改后的Java方法所包含的异常处理信息的相对偏移(相对于补丁代码空间的起始地址,2字节),见表2。为了提高补丁管理表的查找定位速度,一级表的内容按照Java包在Java卡上的包ID从小到大排列,二级表的内容按照被修改的Java方法的方法体的绝对地址从小到大排列。
在Java卡的运行期间,Java卡在获取到当前执行的Java代码的地址之后,通过查询补丁管理表来确认JAVA卡是否需要跳转到Java补丁代码区。JAVA卡的确认和执行方式分两种情况:
一、如果Java卡是在调用Java方法,先通过Java代码的包ID,在一级表中先读取修正的方法数目,如果数目不为零,则说明本Java包存在补丁代码,再获取二级表的位置,然后在二级表的被修正方法的方法体地址中,查找是否有等于当前执行的代码地址的对应表项,如果能找到,则确认JAVA卡需要跳转。此时JAVA卡要跳转到的执行地址=找到的表项中的修改后的Java方法的方法体偏移地址+补丁代码区的起始地址。如果不需要跳转,则JAVA卡按照当前代码的地址继续执行,参见图2。
二、如果Java卡是在捕捉处理Java异常,先判断当前执行的Java代码的地址是否在Java代码补丁区,如果在,则通过Java代码的包ID在一级表中获取二级表的位置,然后在二级表的修正后的Java方法的方法体地址中,查找小于当前执行的代码地址的表项,如果能找到,则取这些表项中最接近当前执行的代码地址的(也就是最大的)项,读取该项中的异常处理信息的地址,如果不为零,则确认JAVA卡需要跳转。此时JAVA卡要跳转到的查找异常处理信息的地址=找到的表项中的修改后的Java方法的异常处理信息偏移地址+补丁代码区的起始地址。否则,Java卡在Java代码所属的包的异常处理信息地址中查找,参见图3。
总之,Java卡的实现代码固化到Java卡芯片中后,如果需要修改Java语言所实现的方法,可以采用本发明所提供的补丁方法,通过将卡外生成的修改后的Java方法的Java补丁代码下载到Java卡内,在Java卡使用过程中,由卡内的二级补丁管理表协助JAVA卡查询并定位Java补丁代码,从而实现在不重新生产Java卡的情况下对Java方法进行修正。另外,由于只需要下载修改的Java方法的代码,本方法对Java卡芯片的存储空间资源要求很低。

Claims (8)

1.Java卡的Java代码补丁方法,其特征在于:
在Java卡芯片中预先分配一定大小的EEPROM或FLASH作为Java补丁代码空间;在Java卡外将修改后的Java方法的Java代码提取出来,作为被修改的Java方法的Java补丁代码;在Java卡内的Java补丁代码空间建立一个二级补丁管理表,用于管理Java补丁代码并辅助Java卡查询和定位Java补丁代码;把所有的Java补丁代码下载到Java卡内的Java补丁代码空间;在Java卡运行期间,在获取到当前执行的Java代码的地址之后,通过查询补丁管理表来确认Jav卡是否需要跳转到Java补丁代码空间执行补丁代码;其中:
所述的二级补丁管理表中的一级表用于记录每一个Java包所修改的方法数目以及该Java包的二级表相对于Java补丁代码空间的起始地址,二级表用于记录被修改的Java方法的方法体的绝对地址、修改后的Java方法的方法体相对于Java补丁代码空间的起始地址、修改后的Java方法所包含的异常处理信息相对于Java补丁代码空间的起始地址。
2.如权利要求1所述的方法,其特征在于二级补丁管理表位于Java补丁代码空间的起始地址处,补丁管理表之后存放所有被修改的Java方法的Java补丁代码。
3.如权利要求1所述的方法,其特征在于二级补丁管理表中的一级表的大小为Java包的数目*4字节,具体分配为:1字节用于记录每一个Java包所修改的方法数目、2字节用于记录该Java包的二级表的相对于Java补丁代码空间的起始地址、一个字节用于该包的Java补丁数据校验。
4.如权利要求1所述的方法,其特征在于二级补丁管理表中的二级表的个数等于修改的Java包的数目,每个二级表的大小不同,其大小等于Java包修改的方法的数目*8字节,具体分配为:4字节用于记录被修改的Java方法的方法体的绝对地址、2字节用于记录修改后的Java方法的方法体相对于Java补丁代码空间的起始地址、2字节用于记录修改后的Java方法所包含的异常处理信息相对于Java补丁代码空间的起始地址。
5.如权利要求1所述的方法,其特征在于为了提高二级补丁管理表的查询定位补丁的速度,一级表的内容按照Java包在Java卡上的包ID从小到大排列,二级表的内容按照被修改的Java方法的方法体的绝对地址从小到大排列。
6.如权利要求1所述的方法,其特征在于修改后的Java方法的Java补丁代码包括方法体和异常信息,方法体和异常信息均作为被修改的Java方法的Java补丁代码从Java卡外下载到Java卡内的Java补丁代码空间。
7.如权利要求1所述的方法,其特征在于确认Java卡是否需要跳转到Java补丁代码空间执行补丁代码分两种情况:一种情况是Java卡在调用Java方法时,另一种情况是Java卡在捕捉处理Java代码异常时;如果Java卡在调用Java方法,则通过当前执行的Java代码的包ID,在补丁管理表的一级表中先获取修改的方法数目,如果该数目大于零,则进一步获取二级表的位置,然后在二级表的被修改的Java方法的方法体的绝对地址项中,查找是否存在等于当前执行的Java代码地址的对应表项,如果存在,则确认JAVA卡需要跳转;如果Java卡在捕捉处理Java代码异常,则首先判断当前执行的Java代码地址是否属于Java补丁代码空间,如果属于,则进一步通过当前执行的Java代码的包ID,在补丁管理表的一级表中获取二级表的位置,然后在二级表的修改后的Java方法的方法体的相对偏移项中,查找小于当前执行的代码地址的表项,如果存在多项,则最接近当前执行的Java代码地址的表项为查找到的表项,如果查找到的表项中存在异常处理信息,则确认JAVA卡需要跳转。
8.如权利要求1所述的方法,其特征在于确认Java方法被修改后,Java卡执行Java补丁代码的方式分两种情况:一种情况是Java卡在调用Java方法时,另一种情况是Java卡在捕捉处理Java代码异常时;如果Java卡在调用Java方法,则从二级表找到的对应表项中,读取修改后的Java方法的方法体的相对于Java补丁代码空间的起始地址,JAVA卡执行地址跳转为这个相对于Java补丁代码空间的起始地址加上Java补丁代码空间的起始地址;如果Java卡在捕捉处理Java代码异常,则从二级表找到的对应表项中,读取修改后的Java方法的异常处理信息相对于Java补丁代码空间的起始地址,JAVA卡查找异常处理信息的地址跳转为相对于Java补丁代码空间的起始地址加上Java补丁代码空间的起始地址。
CN201310636946.2A 2013-12-03 2013-12-03 Java卡的Java代码补丁方法 Active CN103645917B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310636946.2A CN103645917B (zh) 2013-12-03 2013-12-03 Java卡的Java代码补丁方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310636946.2A CN103645917B (zh) 2013-12-03 2013-12-03 Java卡的Java代码补丁方法

Publications (2)

Publication Number Publication Date
CN103645917A true CN103645917A (zh) 2014-03-19
CN103645917B CN103645917B (zh) 2016-09-14

Family

ID=50251140

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310636946.2A Active CN103645917B (zh) 2013-12-03 2013-12-03 Java卡的Java代码补丁方法

Country Status (1)

Country Link
CN (1) CN103645917B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331275A (zh) * 2014-08-26 2015-02-04 大唐微电子技术有限公司 一种Java卡及其应用打补丁的方法
CN105630516A (zh) * 2014-10-28 2016-06-01 苏州融卡智能科技有限公司 适用于java卡上应用软件的补丁升级方法
CN105631505A (zh) * 2014-11-07 2016-06-01 北京同方微电子有限公司 一种支持java卡补丁函数的智能卡

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101334734A (zh) * 2007-06-27 2008-12-31 北京中电华大电子设计有限责任公司 电信卡动态下载补丁程序方案
US7814261B2 (en) * 2004-02-25 2010-10-12 Samsung Electronics Co., Ltd. Flash memory and method of dynamically loading firmware operation module in optical drive
CN103412779A (zh) * 2013-08-14 2013-11-27 浙江大学 一种嵌入式实时操作系统的补丁文件系统实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814261B2 (en) * 2004-02-25 2010-10-12 Samsung Electronics Co., Ltd. Flash memory and method of dynamically loading firmware operation module in optical drive
CN101334734A (zh) * 2007-06-27 2008-12-31 北京中电华大电子设计有限责任公司 电信卡动态下载补丁程序方案
CN103412779A (zh) * 2013-08-14 2013-11-27 浙江大学 一种嵌入式实时操作系统的补丁文件系统实现方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331275A (zh) * 2014-08-26 2015-02-04 大唐微电子技术有限公司 一种Java卡及其应用打补丁的方法
CN104331275B (zh) * 2014-08-26 2018-10-12 大唐微电子技术有限公司 一种Java卡及其应用打补丁的方法
CN105630516A (zh) * 2014-10-28 2016-06-01 苏州融卡智能科技有限公司 适用于java卡上应用软件的补丁升级方法
CN105631505A (zh) * 2014-11-07 2016-06-01 北京同方微电子有限公司 一种支持java卡补丁函数的智能卡
CN105631505B (zh) * 2014-11-07 2024-01-05 紫光同芯微电子有限公司 一种支持java卡补丁函数的智能卡

Also Published As

Publication number Publication date
CN103645917B (zh) 2016-09-14

Similar Documents

Publication Publication Date Title
CN108958796B (zh) 业务请求处理方法及装置、业务请求处理系统
Walsh Machines that think: the future of artificial intelligence
CN103559065B (zh) 一种ota升级的方法和系统
Lah et al. Technology-as-a-service playbook: How to grow a profitable subscription business
CN107506219A (zh) 一种基于Android系统的通用版本升级方法
US11086638B2 (en) Method and apparatus for loading application
CN109669709A (zh) 一种区块链升级的数据迁移方法及数据迁移系统
CN104750528B (zh) 一种Android程序中的组件管理方法和装置
CN106843842B (zh) 一种应用程序配置文件的更新方法及装置
CN106293782A (zh) 一种系统升级方法及终端
CN103517141A (zh) 基于ip机顶盒分段式数据升级方法
CN108920691A (zh) 前端静态资源的管理方法、装置、计算机设备及存储介质
CN107797818A (zh) 应用程序升级方法及装置
CN102141926A (zh) 一种应用程序管理方法、装置以及数字电视机顶盒
CN104699511A (zh) 插件升级方法及装置
CN105653351B (zh) java卡虚拟机的优化方法及系统
CN103645917A (zh) Java卡的Java代码补丁方法
CN103677778A (zh) 一种CAP文件Classref常量的解析方法
CN108255735A (zh) 关联环境测试方法、电子装置及计算机可读存储介质
CN103870511A (zh) 基于共享内存的信息查询设备及方法
CN102541639B (zh) 一种cpu卡数据处理方法、系统及cpu卡
CN106126595A (zh) 一种文件下载方法及装置
CN109656947A (zh) 数据查询方法、装置、计算机设备和存储介质
CN110162540A (zh) 区块链账本数据的查询方法、电子装置及存储介质
CN105204861A (zh) 一种注册表重定向方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 102209 Beijing, Beiqijia, the future of science and technology in the south area of China electronic network security and information technology industry base C building,

Applicant after: Beijing CEC Huada Electronic Design Co., Ltd.

Address before: 100102 Beijing City, Chaoyang District Lize two Road No. 2, Wangjing science and Technology Park A block five layer

Applicant before: Beijing CEC Huada Electronic Design Co., Ltd.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant