CN115291918A - 用于智能卡的代码升级方法及装置、电子设备、存储介质 - Google Patents
用于智能卡的代码升级方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN115291918A CN115291918A CN202211221662.2A CN202211221662A CN115291918A CN 115291918 A CN115291918 A CN 115291918A CN 202211221662 A CN202211221662 A CN 202211221662A CN 115291918 A CN115291918 A CN 115291918A
- Authority
- CN
- China
- Prior art keywords
- function
- code
- replaced
- smart card
- memory capacity
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000006870 function Effects 0.000 claims abstract description 287
- 238000012937 correction Methods 0.000 claims description 93
- 238000012986 modification Methods 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 13
- 241001517610 Funa Species 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及智能卡技术领域,公开一种用于智能卡的代码升级方法,包括:获取智能卡的问题函数和问题函数所处的内存地址;根据问题函数确定待替换代码;将待替换代码写入内存地址以替换问题函数。这样,将待替换代码直接写入问题函数所处的内存地址。待替换代码占用的是问题函数原本占用的存储空间,不需要占用智能卡额外的存储空间。能够在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。本申请还公开一种用于智能卡的代码升级装置、电子设备、存储介质。
Description
技术领域
本申请涉及智能卡技术领域,例如涉及一种用于智能卡的代码升级方法及装置、电子设备、存储介质。
背景技术
目前智能卡已经广泛应用到各个行业中,例如:金融、交通、电信等行业。在智能卡发行到用户手中后,可以很方便的下载各个服务器提供的符合智能卡规范的应用,例如:一卡通应用、SIM盾等。但是,已发行的智能卡可能会存在问题,由此需要对智能卡的代码进行升级。相关技术中,通常根据需要升级的代码制作补丁包,将补丁包下载到智能卡预留的存储空间中,从而利用补丁包解决智能卡中的问题。例如:公开号为CN103677933A的中国专利文件公开了一种为智能卡打补丁的方法,包括:在智能卡平台系统软件中预留补丁代码调用接口,在智能卡上的可擦写存储空间内预留补丁代码运行空间;将补丁代码下载到预留的可擦写存储空间内,向所述补丁代码调用接口返回所述补丁代码运行的入口地址;如所述智能卡平台系统软件检测到所述补丁代码调用接口包含补丁代码运行的入口地址,则通过该补丁代码调用接口运行该补丁代码。公开号为CN104007985A的中国专利文件公开了一种智能卡APDU命令修正方法,包括:(1).在所述补丁存储区的相应位置写入补丁指令;(2).在数据存储区设置与各个补丁指令对应的补丁状态信息;(3).在智能卡上电且APDU命令开始执行后,当判断到所述APDU命令是补丁指令时,执行对应的补丁指令。
在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:
智能卡的存储空间有限,而现有技术中对智能卡进行代码升级时,将代码对应的补丁下载到智能卡预留的存储空间中,会额外占用智能卡的存储空间。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
本公开实施例提供了一种用于智能卡的代码升级方法及装置、电子设备、存储介质,在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。
在一些实施例中,所述用于智能卡的代码升级方法,包括:获取智能卡的问题函数和所述问题函数所处的内存地址;根据所述问题函数确定待替换代码;将所述待替换代码写入所述内存地址以替换所述问题函数。
在一些实施例中,根据所述问题函数确定待替换代码,包括:确定所述问题函数中的若干个问题语句;修改各所述问题语句,获得修正函数;获取所述修正函数的内存容量和所述问题函数的内存容量;比较所述修正函数的内存容量与所述问题函数的内存容量,根据比较结果确定待替换代码。
在一些实施例中,根据比较结果确定待替换代码,包括:在所述修正函数的内存容量小于所述问题函数的内存容量的情况下,在所述修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致;将添加了空操作语句的修正函数确定为待替换代码;和/或,在所述修正函数的内存容量等于所述问题函数的内存容量的情况下,将所述修正函数确定为待替换代码。
在一些实施例中,将所述待替换代码写入所述内存地址以替换所述问题函数,包括:将所述待替换代码转换为hex格式数据;将所述hex格式数据写入所述内存地址以替换所述问题函数。
在一些实施例中,所述用于智能卡的代码升级装置,包括:获取模块,被配置为获取智能卡的问题函数和所述问题函数所处的内存地址;确定模块,被配置为根据所述问题函数确定待替换代码;替换模块,被配置为将所述待替换代码写入所述内存地址以替换所述问题函数。
在一些实施例中,确定模块被配置为按照以下方式根据所述问题函数确定待替换代码:确定所述问题函数中的若干个问题语句;修改各所述问题语句,获得修正函数;获取所述修正函数的内存容量和所述问题函数的内存容量;比较所述修正函数的内存容量与所述问题函数的内存容量,根据比较结果确定待替换代码。
在一些实施例中,确定模块被配置为按照以下方式根据比较结果确定待替换代码:在所述修正函数的内存容量小于所述问题函数的内存容量的情况下,在所述修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致;将添加了空操作语句的修正函数确定为待替换代码;和/或,在所述修正函数的内存容量等于所述问题函数的内存容量的情况下,将所述修正函数确定为待替换代码。
在一些实施例中,替换模块被配置为按照以下方式将所述待替换代码写入所述内存地址以替换所述问题函数:将所述待替换代码转换为hex格式数据;将所述hex格式数据写入所述内存地址以替换所述问题函数。
在一些实施例中,所述电子设备,包括处理器和存储有程序指令的存储器,所述处理器被配置为在执行所述程序指令时,执行上述的用于智能卡的代码升级方法。
在一些实施例中,所述存储介质,存储有程序指令,所述程序指令在运行时,执行上述的用于智能卡的代码升级方法。
本公开实施例提供的用于智能卡的代码升级方法及装置、电子设备、存储介质,可以实现以下技术效果:通过获取智能卡的问题函数和问题函数所处的内存地址;根据问题函数确定待替换代码;将待替换代码写入内存地址以替换问题函数。这样,将待替换代码直接写入问题函数所处的内存地址。待替换代码占用的是问题函数原本占用的存储空间,不需要占用智能卡额外的存储空间。能够在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。
以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
图1是本公开实施例提供的一个智能卡的空间分配示意图;
图2是本公开实施例提供的一种用于智能卡的代码升级方法的示意图;
图3是本公开实施例提供的另一种用于智能卡的代码升级方法的示意图
图4是本公开实施例提供的一个智能卡空间的代码升级前后对比示意图;
图5是本公开实施例提供的一种用于智能卡的代码升级装置的示意图;
图6是本公开实施例提供的一种电子设备的示意图。
附图标记:
1:用户数据区;2:Java Code区;3:Natvie Code区。
具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。
本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
术语“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
在一些实施例中,图1为智能卡的空间分配示意图。如图1所示,智能卡的空间通常被分配为用户数据区1、Java Code区2和Natvie Code区3。其中,Java Code区2用于存储Java Code。Java Code是使用标准的Java语言实现的函数。Natvie Code区3用于存储Natvie Code。Natvie Code是使用C语言实现的函数。在对智能卡进行调试的过程中,可以通过JCDK编译工具将Java源代码编译成对应的字节码,然后利用虚拟机根据读取到的字节码执行对应的操作。
在一些实施例中,智能卡即JavaCard。JavaCard预留的存储空间即智能卡的用户空间,智能卡的用户空间即用户数据区。
本公开实施例应用于存储介质为Flash的智能卡,例如:JavaCard。通过获取智能卡的问题函数和问题函数所处的内存地址;根据问题函数确定待替换代码;将待替换代码写入内存地址以替换问题函数。这样,将待替换代码直接写入问题函数所处的内存地址。待替换代码占用的是问题函数原本占用的存储空间,不需要占用智能卡额外的存储空间。能够在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。
结合图2所示,本公开实施例提供一种用于智能卡的代码升级方法,包括:
步骤S201,电子设备获取智能卡的问题函数和问题函数所处的内存地址。
步骤S202,电子设备根据问题函数确定待替换代码。
步骤S203,电子设备将待替换代码写入内存地址以替换问题函数。
采用本公开实施例提供的用于智能卡的代码升级方法,通过获取智能卡的问题函数和问题函数所处的内存地址;根据问题函数确定待替换代码;将待替换代码写入内存地址以替换问题函数。这样,将待替换代码直接写入问题函数所处的内存地址。待替换代码占用的是问题函数原本占用的存储空间,不需要占用智能卡额外的存储空间。能够在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。
在一些实施例中,获取智能卡的问题函数,即获取用户输入的问题函数。其中,问题函数可以是使用标准的Java语言实现的函数,也可以是使用C语言实现的函数。即,问题函数的本质是一串代码。这样,由于用户在对智能卡调试的过程中,可能存在问题函数影响智能卡的使用。从而需要对问题函数进行升级,以克服智能卡的问题。获取用户输入的问题函数,便于之后对智能卡的代码进行升级。
可选地,根据问题函数确定待替换代码,包括:确定问题函数中的若干个问题语句。修改各问题语句,获得修正函数。获取修正函数的内存容量和问题函数的内存容量。比较修正函数的内存容量与问题函数的内存容量,根据比较结果确定待替换代码。其中,修正函数的内存容量,即修正函数占用智能卡的内存空间的大小。问题函数的内存容量,即问题函数占用智能卡的内存空间的大小。
进一步的,确定问题函数中的若干个问题语句,包括:将问题函数发送给预设的第一代码调试系统,并从第一代码调试系统获取若干个问题语句。第一代码调试系统响应于用户的确认指令从问题函数中确定若干问题语句。这样,根据用户的确认指令从问题函数中确定若干问题语句,能够使得用户能够灵活的确认问题语句,便于后续对问题语句的修改。
可选地,修改各问题语句,包括:删除各问题语句。
可选地,修改各问题语句,包括:将问题函数和各问题语句发送给预设的第二代码调试系统,并从第二代码调试系统获取修正函数。第二代码调试系统响应于用户的第一修改指令根据各问题语句对问题函数进行修改。
进一步的,根据比较结果确定待替换代码,包括:在修正函数的内存容量小于问题函数的内存容量的情况下,在修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致。将添加了空操作语句的修正函数确定为待替换代码。和/或,在修正函数的内存容量等于问题函数的内存容量的情况下,将修正函数确定为待替换代码。这样,增加空操作语句使得修正函数的内存容量与问题函数的内存容量一致,使得与问题函数存储位置相邻的函数的在被访问时不会受到影响,能够保证虚拟机的正常运行。
结合图3所示,本公开实施例提供另一种用于智能卡的代码升级方法,包括:
步骤S301,电子设备获取智能卡的问题函数和问题函数所处的内存地址,然后执行步骤S302。
步骤S302,电子设备确定问题函数中的若干个问题语句,然后执行步骤S303。
步骤S303,电子设备修改各问题语句,获得修正函数,然后执行步骤S304。
步骤S304,电子设备获取修正函数的内存容量和问题函数的内存容量,然后执行步骤S305。
步骤S305,电子设备判断修正函数的内存容量是否比问题函数的内存容量小,在修正函数的内存容量小于问题函数的内存容量的情况下,执行步骤S306;在修正函数的内存容量不小于问题函数的内存容量的情况下,执行步骤S307。
步骤S306,电子设备在修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致;将添加了空操作语句的修正函数确定为待替换代码,然后执行步骤S309。
步骤S307,电子设备判断修正函数的内存容量是否与问题函数的内存容量相同,在修正函数的内存容量等于问题函数的内存容量的情况下,执行步骤S308;在修正函数的内存容量不等于问题函数的内存容量的情况下,执行步骤S310。
步骤S308,电子设备将修正函数确定为待替换代码,然后执行步骤S309。
步骤S309,电子设备将待替换代码写入内存地址以替换问题函数。
步骤S310,结束流程。
采用本公开实施例提供的用于智能卡的代码升级方法,通过获取智能卡的问题函数和问题函数所处的内存地址。确定问题函数中的若干个问题语句。修改各问题语句,获得修正函数。根据修正函数的内存容量和问题函数的内存容量确定待替换代码。将待替换代码写入内存地址以替换问题函数。这样,将待替换代码直接写入问题函数所处的内存地址。待替换代码占用的是问题函数原本占用的存储空间,不需要占用智能卡额外的存储空间。能够在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。
可选地,将待替换代码写入内存地址以替换问题函数,包括:将待替换代码转换为hex格式数据;将hex格式数据写入内存地址以替换问题函数。其中,hex格式数据即转换为hex文件格式的待替换代码。
在一些实施例中,使用COS(Chip Operating System,智能卡操作系统)专有的写Flash的指令,将hex格式数据写入内存地址以替换问题函数。且在写入的过程中,智能卡不能断电。
在一些实施例中,Natvie Code区存储的函数funA为问题函数。例如:问题函数funA为:
Void funA() {
unsigned char var1;
unsigned short var2;
语句1;
语句2;
语句3;
语句4;
return;
}。
确定问题函数中的问题语句为语句3和语句4。修改语句3为语句3’,并删除问题语句4,获得修正函数funA’。例如:修正函数funA’为:
Void funA’() {
unsigned char var1;
unsigned short var2;
语句1;
语句2;
语句3’;
return;
}。
获取修正函数的内存容量和问题函数的内存容量。比较修正函数的内存容量与问题函数的内存容量。修正函数的内存容量小于问题函数的内存容量,在修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致。添加了空操作语句的修正函数为函数funA”。例如:修正函数funA”为:
Void funA”() {
unsigned char var1;
unsigned short var2;
语句1;
语句2;
语句3’;
return;
NOP;
NOP;
}。
在一些实施例中,Java Code区存储的函数funB为问题函数,例如,问题函数funB为:
/* method@0x0c022b28:0x0036: public funB()V */
0x05, 0x20,
/* 0x0c022b2a:0x0038: */ _GETFIELD_A_THIS, 0x00,
/* 0x0c022b2c:0x003a: */ _SCONST_0,
/* 0x0c022b2d:0x003b: */ _SCONST_1,
/* 0x0c022b2e:0x003c: */ _SLOAD_1,
/* 0x0c022b2f:0x003d: */ _BSPUSH, 8,
/* 0x0c022b31:0x003f: */ _SUSHR,
/* 0x0c022b32:0x0040: */ _S2B,
/* 0x0c022b33:0x0041: */ _INVOKESTATIC, 0x00, 0x4e,
/* 0x0c022b36:0x0044: */ _POP,
/* 0x0c022b37:0x0045: */ _GETFIELD_A_THIS, 0x00,
/* 0x0c022b39:0x0047: */ _SCONST_1,
/* 0x0c022b3a:0x0048: */ _SCONST_1,
/* 0x0c022b3b:0x0049: */ _SLOAD_1,
/* 0x0c022b3c:0x004a: */ _S2B,
/* 0x0c022b3d:0x004b: */ _INVOKESTATIC, 0x00, 0x4e,
/* 0x0c022b40:0x004e: */ _POP,
/* 0x0c022b41:0x004f: */ _RETURN。
其中,问题语句,例如:
/* 0x0c022b39:0x0047: */ _SCONST_1,
/* 0x0c022b3a:0x0048: */ _SCONST_1,
/* 0x0c022b3b:0x0049: */ _SLOAD_1,
/* 0x0c022b3c:0x004a: */ _S2B,
/* 0x0c022b3d:0x004b: */ _INVOKESTATIC, 0x00, 0x4e,
/* 0x0c022b40:0x004e: */ _POP。
删除问题语句,获取修正函数的内存容量和问题函数的内存容量。比较修正函数的内存容量与问题函数的内存容量。修正函数的内存容量小于问题函数的内存容量,在修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致。获得添加了空操作语句的修正函数funB’。例如:修正函数funB’为:
/* method@0x0c022b28:0x0036: public funB()V */
0x05, 0x20,
/* 0x0c022b2a:0x0038: */ _GETFIELD_A_THIS, 0x00,
/* 0x0c022b2c:0x003a: */ _SCONST_0,
/* 0x0c022b2d:0x003b: */ _SCONST_1,
/* 0x0c022b2e:0x003c: */ _SLOAD_1,
/* 0x0c022b2f:0x003d: */ _BSPUSH, 8,
/* 0x0c022b31:0x003f: */ _SUSHR,
/* 0x0c022b32:0x0040: */ _S2B,
/* 0x0c022b33:0x0041: */ _INVOKESTATIC, 0x00, 0x4e,
/* 0x0c022b36:0x0044: */ _POP,
/* 0x0c022b37:0x0045: */ _GETFIELD_A_THIS, 0x00,
/* 0x0c022b39:0x0047: */ _NOP,
/* 0x0c022b3a:0x0048: */ _NOP,
/* 0x0c022b3b:0x0049: */ _NOP,
/* 0x0c022b3c:0x004a: */ _NOP,
/* 0x0c022b3d:0x004b: */ _NOP, _NOP, _NOP,
/* 0x0c022b40:0x004e: */ _NOP,
/* 0x0c022b41:0x004f: */ _RETURN。
在一些实施例中,图4为智能卡空间的代码升级前后对比示意图,如图4所示,用户数据区1是智能卡预留的存储空间。在对智能卡的代码升级前,Java Code区2存储有第一函数,例如:函数funB。Natvie Code区3存储有第二函数,例如:函数funA。第一函数和第二函数均为问题函数。在对智能卡的代码升级过程中,使用第一修正函数替换第一函数。其中,第一修正函数,例如:添加了空操作语句的修正函数funB’。使用第二修正函数替换第二函数。其中,第二修正函数,例如:添加了空操作语句的修正函数funA”。由此,在对智能卡的代码升级后Java Code区2存储有第一修正函数:修正函数funB’。Natvie Code区3存储有第二修正函数:修正函数funA”。这样,添加了空操作语句的修正函数作为待替换代码,将待替换代码直接替换问题函数。待替换代码占用的是问题函数原本占用的存储空间,不会占用智能卡的用户数据区。能够在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。
结合图5所示,本公开实施例提供一种用于智能卡的代码升级装置,包括获取模块501、确定模块502和替换模块503。获取模块501,被配置为获取智能卡的问题函数和问题函数所处的内存地址;确定模块502,被配置为根据问题函数确定待替换代码;替换模块503,被配置为将待替换代码写入内存地址以替换问题函数。
采用本公开实施例提供的用于智能卡的代码升级装置,通过获取模块获取智能卡的问题函数和问题函数所处的内存地址;确定模块根据问题函数确定待替换代码;替换模块将待替换代码写入内存地址以替换问题函数。这样,将待替换代码直接写入问题函数所处的内存地址。待替换代码占用的是问题函数原本占用的存储空间,不需要占用智能卡额外的存储空间。能够在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。
可选地,确定模块被配置为按照以下方式根据问题函数确定待替换代码:确定问题函数中的若干个问题语句;修改各问题语句,获得修正函数;获取修正函数的内存容量和问题函数的内存容量;比较修正函数的内存容量与问题函数的内存容量,根据比较结果确定待替换代码。
进一步的,确定模块被配置为按照以下方式根据比较结果确定待替换代码:在修正函数的内存容量小于问题函数的内存容量的情况下,在修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致;将添加了空操作语句的修正函数确定为待替换代码;和/或,在修正函数的内存容量等于问题函数的内存容量的情况下,将修正函数确定为待替换代码。
可选地,替换模块被配置为按照以下方式将待替换代码写入内存地址以替换问题函数:将待替换代码转换为hex格式数据;将hex格式数据写入内存地址以替换问题函数。
结合图6所示,本公开实施例提供一种电子设备,包括处理器(processor)600和存储器(memory)601。可选地,该装置还可以包括通信接口(Communication Interface)602和总线603。其中,处理器600、通信接口602、存储器601可以通过总线603完成相互间的通信。通信接口602可以用于信息传输。处理器600可以调用存储器601中的逻辑指令,以执行上述实施例的用于智能卡的代码升级方法。
可选地,电子设备为计算机或服务器。
采用本公开实施例提供的电子设备,通过获取智能卡的问题函数和问题函数所处的内存地址;根据问题函数确定待替换代码;将待替换代码写入内存地址以替换问题函数。这样,将待替换代码直接写入问题函数所处的内存地址。待替换代码占用的是问题函数原本占用的存储空间,不需要占用智能卡额外的存储空间。能够在不占用智能卡预留的存储空间的情况下,对智能卡的代码升级。
此外,上述的存储器601中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器601作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器600通过运行存储在存储器601中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中用于智能卡的代码升级方法。
存储器601可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器601可以包括高速随机存取存储器,还可以包括非易失性存储器。
本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述用于智能卡的代码升级方法。
本公开实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述用于智能卡的代码升级方法。
上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (10)
1.一种用于智能卡的代码升级方法,其特征在于,包括:
获取智能卡的问题函数和所述问题函数所处的内存地址;
根据所述问题函数确定待替换代码;
将所述待替换代码写入所述内存地址以替换所述问题函数。
2.根据权利要求1所述的方法,其特征在于,根据所述问题函数确定待替换代码,包括:
确定所述问题函数中的若干个问题语句;
修改各所述问题语句,获得修正函数;
获取所述修正函数的内存容量和所述问题函数的内存容量;
比较所述修正函数的内存容量与所述问题函数的内存容量,根据比较结果确定待替换代码。
3.根据权利要求2所述的方法,其特征在于,根据比较结果确定待替换代码,包括:
在所述修正函数的内存容量小于所述问题函数的内存容量的情况下,在所述修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致;将添加了空操作语句的修正函数确定为待替换代码;和/或,
在所述修正函数的内存容量等于所述问题函数的内存容量的情况下,将所述修正函数确定为待替换代码。
4.根据权利要求1至3任一项所述的方法,其特征在于,将所述待替换代码写入所述内存地址以替换所述问题函数,包括:
将所述待替换代码转换为hex格式数据;
将所述hex格式数据写入所述内存地址以替换所述问题函数。
5.一种用于智能卡的代码升级装置,其特征在于,包括:
获取模块,被配置为获取智能卡的问题函数和所述问题函数所处的内存地址;
确定模块,被配置为根据所述问题函数确定待替换代码;
替换模块,被配置为将所述待替换代码写入所述内存地址以替换所述问题函数。
6.根据权利要求5所述的装置,其特征在于,确定模块被配置为按照以下方式根据所述问题函数确定待替换代码:
确定所述问题函数中的若干个问题语句;
修改各所述问题语句,获得修正函数;
获取所述修正函数的内存容量和所述问题函数的内存容量;
比较所述修正函数的内存容量与所述问题函数的内存容量,根据比较结果确定待替换代码。
7.根据权利要求6所述的装置,其特征在于,确定模块被配置为按照以下方式根据比较结果确定待替换代码:
在所述修正函数的内存容量小于所述问题函数的内存容量的情况下,在所述修正函数内添加若干个空操作语句,使得修正函数的内存容量与问题函数的内存容量一致;将添加了空操作语句的修正函数确定为待替换代码;和/或,
在所述修正函数的内存容量等于所述问题函数的内存容量的情况下,将所述修正函数确定为待替换代码。
8.根据权利要求5至7任一项所述的装置,其特征在于,替换模块被配置为按照以下方式将所述待替换代码写入所述内存地址以替换所述问题函数:
将所述待替换代码转换为hex格式数据;
将所述hex格式数据写入所述内存地址以替换所述问题函数。
9.一种电子设备,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在执行所述程序指令时,执行如权利要求1至4任一项所述的用于智能卡的代码升级方法。
10.一种存储介质,存储有程序指令,其特征在于,所述程序指令在运行时,执行如权利要求1至4任一项所述的用于智能卡的代码升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211221662.2A CN115291918A (zh) | 2022-10-08 | 2022-10-08 | 用于智能卡的代码升级方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211221662.2A CN115291918A (zh) | 2022-10-08 | 2022-10-08 | 用于智能卡的代码升级方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115291918A true CN115291918A (zh) | 2022-11-04 |
Family
ID=83833082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211221662.2A Pending CN115291918A (zh) | 2022-10-08 | 2022-10-08 | 用于智能卡的代码升级方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115291918A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021383A (zh) * | 2017-12-01 | 2018-05-11 | 东信和平科技股份有限公司 | 一种智能卡操作系统升级方法及系统 |
CN111930412A (zh) * | 2019-05-13 | 2020-11-13 | 阿里巴巴集团控股有限公司 | 差分文件生成及固件在线升级的方法和装置 |
CN114942779A (zh) * | 2022-05-17 | 2022-08-26 | 重庆物奇微电子有限公司 | 一种补丁实现方法、装置、嵌入式系统及存储介质 |
-
2022
- 2022-10-08 CN CN202211221662.2A patent/CN115291918A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021383A (zh) * | 2017-12-01 | 2018-05-11 | 东信和平科技股份有限公司 | 一种智能卡操作系统升级方法及系统 |
CN111930412A (zh) * | 2019-05-13 | 2020-11-13 | 阿里巴巴集团控股有限公司 | 差分文件生成及固件在线升级的方法和装置 |
CN114942779A (zh) * | 2022-05-17 | 2022-08-26 | 重庆物奇微电子有限公司 | 一种补丁实现方法、装置、嵌入式系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273148B (zh) | 数据的更新驱动迁移 | |
US20070143616A1 (en) | Flexibly loading a tamper resistant module | |
CN109598107B (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN111078279B (zh) | 字节码文件的处理方法、装置、设备及存储介质 | |
CN108694052B (zh) | 一种固件升级方法、固件升级装置及固件升级系统 | |
KR100489783B1 (ko) | 선택적 애플릿 관리가 가능한 스마트카드 및 그 운용방법 | |
JP2002524792A (ja) | プロセッサのワークメモリに後ロードされたプログラムモジュールをチップカード上でリンクする方法 | |
EP3507690B1 (en) | Java card application memory footprint optimization | |
CN107678770B (zh) | 接口芯片升级方法、装置、存储介质和处理器 | |
NO985803L (no) | Bµrbart, sikkert transaksjonssystem for programmerbare, intelligente utstyrsenheter | |
CN103677933A (zh) | 一种为智能卡打补丁的方法和系统 | |
JP2007510211A (ja) | コンピュータ装置におけるダイナミック・リンク・ライブラリのマッピング | |
CN109408226A (zh) | 数据处理方法、装置及终端设备 | |
CN103339603A (zh) | 计算机重新编程方法、数据存储介质和机动车辆计算机 | |
CN109614773B (zh) | 代码自修改方法、装置及电子设备 | |
CN115291918A (zh) | 用于智能卡的代码升级方法及装置、电子设备、存储介质 | |
US6736325B1 (en) | Codelets | |
US20040015943A1 (en) | Embedded computer system equipped with an upgradeable software library | |
CN116821043A (zh) | 物联网操作系统软硬一体化应用扩展装置及其应用 | |
CN112860595B (zh) | Pci设备或pcie设备、数据存取方法及相关组件 | |
EP4020297A1 (en) | Method for managing a volatile memory and java card device | |
CN116382785B (zh) | 用于数据处理的方法及装置、计算设备及存储介质 | |
CN112073218B (zh) | 一种网络配置文件兼容方法、电子设备及存储介质 | |
CN111158658B (zh) | 指令处理方法、装置、终端设备及存储介质 | |
CN114995843B (zh) | 一种程序包组件的下载存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20221104 |
|
RJ01 | Rejection of invention patent application after publication |