CN106845225A - 一种java卡帧的边界检查方法 - Google Patents
一种java卡帧的边界检查方法 Download PDFInfo
- Publication number
- CN106845225A CN106845225A CN201611186553.6A CN201611186553A CN106845225A CN 106845225 A CN106845225 A CN 106845225A CN 201611186553 A CN201611186553 A CN 201611186553A CN 106845225 A CN106845225 A CN 106845225A
- Authority
- CN
- China
- Prior art keywords
- java
- local variable
- java card
- stack
- variable index
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开一种JAVA卡帧的边界检查方法,属于智能卡技术领域。该方法包括:Java卡虚拟机执行应用的Java方法时,建立一个方法帧,并压入栈,记录方法帧的起始地址。同时记录两个范围:合法操作数范围和合法局部变量索引范围;Java卡虚拟机执行应用的Java方法内字节码时,获取其操作的栈数据类型。如果当前操作数据是局部变量,则判断局部变量索引是否在合法局部变量索引范围内,是则允许操作,否则抛出异常。如果当前操作数据是操作数,则判断操作数地址是否在合法操作数范围内,是则允许操作,否则抛出异常。本发明实现了Java卡的多应用安全管理。
Description
技术领域
本发明涉及智能卡技术领域,尤其涉及一种JAVA卡帧的边界检查方法。
背景技术
随着电子政务和电子商务的发展,Java卡的应用越来越广泛,为解决用户对一卡多用的需要,目前多应用的Java卡越来越普遍,而应用之间的安全问题也日益重要。
现有的攻击手段中可通过激光攻击java卡的存储介质或者下载恶意Applet应用等方式,修改java方法的局部变量索引或者增减弹栈压栈操作,对方法帧的操作数栈和局部变量区进行越界访问,非法获取卡的存储数据。Java卡需要提供一种帧的边界检查方法,识别针对Java虚拟机的越界访问,即保证应用不能访问权限之外的栈数据。
发明内容
为了解决Java卡平台现有技术中存在的上述问题,本发明提供了一种JAVA卡帧的边界检查方法。
本发明采取的技术方案如下:
一种JAVA卡帧的边界检查方法,包括如下步骤:
步骤S1:Java卡虚拟机执行应用的Java方法时,建立一个方法帧,并压入栈,记录方法帧的起始地址。同时记录两个范围:合法操作数范围和合法局部变量索引范围。
步骤S2:所述Java卡虚拟机执行所述所述Java方法的字节码时如需访问栈数据,获取需要访问的栈数据类型。
步骤S3:根据所述数据类型;如果当前操作数据是局部变量,则执行步骤A1;如果当前操作数据是操作数,则执行步骤B1。
步骤A1:判断局部变量索引是否在合法局部变量索引范围内,是则执行步骤S4,否则抛出异常。
步骤B1:判断操作数地址是否在合法操作数范围内,是则执行步骤S4,否则抛出异常。
步骤S4:Java卡虚拟机执行当前字节码。
进一步的,所述的记录两个范围,其特征是:所述Java卡虚拟机解析所述应用的Java方法的method_header_info数据结构中的max_stack,max_locals,nargs信息结合所述方法帧的起始地址信息。使用0作为合法局部变量索引范围的下边界;使用方法帧下边界加上(max_locals+nargs-1)作为合法局部变量索引范围的上边界;使用方法帧起始地址+((max_locals+nargs)*2)作为合法操作数范围的下边界;使用合法操作数范围的下边界加上(max_stack*2)作为合法操作数范围的上边界。
本发明的有益效果在于:本发明实现了Java卡的多应用安全管理,尤其是通过边界检查的方法控制栈帧数据的访问,提高了多应用共存的安全性。
附图说明
图1是一个Java方法在java卡虚拟机上的执行流程图。
图2是合法操作数范围和合法局部变量索引范围的位置示意图。
图3是以sstore_2字节码为示例的执行流程图。
具体实施方式
下面将结合附图和具体实施例对本发明做进一步的说明。
图1指出了一个java方法在java卡虚拟机上的执行流程。Java卡虚拟机执行该方法时,会为其建立一个方法帧,并压入栈,记录方法帧的起始地址。同时记录两个范围:合法操作数范围和合法局部变量索引范围。然后依次执行java方法中的字节码。直至java方法执行结束,方法帧弹出栈。
图2指出了合法操作数范围和合法局部变量索引范围的位置示意图。从方法帧的起始地址开始,是局部变量区。因此合法局部变量范围为方法帧起始地址到((max_locals+nargs)*2)。则合法局部变量索引范围为0到(max_locals+nargs-1)。局部变量区上方是操作数区。因此合法操作数范围为(方法帧起始地址+((max_locals+nargs)*2))到(方法帧起始地址+(max_locals+nargs)*2+max_stack*2)。
图3是上述Java方法中sstore_2字节码的执行流程图。检查字节码所要写入索引为2的局部变量是否在合法局部变量索引范围内,在则继续执行,不在则抛出异常结束。从帧中将两个字节数据弹栈,并将帧顶指针减2存储。检查帧顶指针是否在合法操作数范围内,在则继续执行,不在则抛出异常结束。将两个字节数据写入到局部变量中。
显然,本领域的技术人员可以对本发明进行各种改动和变形而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变形属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (2)
1.一种JAVA卡帧的边界检查方法,其特征是:所述方法包括:
步骤S1:Java卡虚拟机调用Java方法时,建立一个方法帧,并压入栈,记录方法帧的起始地址,同时记录两个范围:合法操作数范围和合法局部变量索引范围;
步骤S2:Java卡虚拟机执行Java方法的字节码时如需操作栈数据,获取需要操作的栈数据类型;
步骤S3:根据所述数据类型;如果是局部变量,则执行步骤A1;如果是操作数,则执行步骤B1;
步骤A1:判断局部变量索引是否在合法局部变量索引范围内,是则执行步骤S4,否则抛出异常;
步骤B1:判断操作数地址是否在合法操作数范围内,是则执行步骤S4,否则抛出异常;
步骤S4:Java卡虚拟机执行当前字节码。
2.根据权利要求1所述的方法,其特征是:所述的两个范围是通过所述Java卡虚拟机解析所述应用的Java方法的method_header_info数据结构中的max_stack,max_locals,nargs信息结合所述方法帧的起始地址信息,使用0作为合法局部变量索引范围的下边界,使用(max_locals+nargs-1)作为合法局部变量索引范围的上边界;使用方法帧起始地址加上((max_locals+nargs)*2)作为合法操作数范围的下边界;使用合法操作数范围的下边界加上(max_stack*2)作为合法操作数范围的上边界。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611186553.6A CN106845225A (zh) | 2016-12-20 | 2016-12-20 | 一种java卡帧的边界检查方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611186553.6A CN106845225A (zh) | 2016-12-20 | 2016-12-20 | 一种java卡帧的边界检查方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106845225A true CN106845225A (zh) | 2017-06-13 |
Family
ID=59140115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611186553.6A Pending CN106845225A (zh) | 2016-12-20 | 2016-12-20 | 一种java卡帧的边界检查方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106845225A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090049258A1 (en) * | 2005-04-22 | 2009-02-19 | Gemplus | Method of verifying pseudo-code loaded in an embedded system, in particular a smart card |
CN102662807A (zh) * | 2012-03-13 | 2012-09-12 | 浙江大学 | 一种Java卡栈性能测试应用程序及其框架的制作方法 |
CN105573814A (zh) * | 2015-09-01 | 2016-05-11 | 北京中电华大电子设计有限责任公司 | 一种java卡局部变量字节码采用芯片硬件解析执行的方法 |
-
2016
- 2016-12-20 CN CN201611186553.6A patent/CN106845225A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090049258A1 (en) * | 2005-04-22 | 2009-02-19 | Gemplus | Method of verifying pseudo-code loaded in an embedded system, in particular a smart card |
CN102662807A (zh) * | 2012-03-13 | 2012-09-12 | 浙江大学 | 一种Java卡栈性能测试应用程序及其框架的制作方法 |
CN105573814A (zh) * | 2015-09-01 | 2016-05-11 | 北京中电华大电子设计有限责任公司 | 一种java卡局部变量字节码采用芯片硬件解析执行的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150029003A1 (en) | Mifare push | |
CN105260659B (zh) | 一种基于qemu的内核级代码重用型攻击检测方法 | |
CN103946855A (zh) | 用于检测面向返回编程攻击的方法、装置和系统 | |
CN105335197B (zh) | 终端中应用程序的启动控制方法和装置 | |
CN110908865A (zh) | 内存泄漏监控方法、装置及电子设备 | |
CN107357929A (zh) | 文件读取方法、移动终端及可读存储介质 | |
CN105678183B (zh) | 一种智能终端的用户数据管理方法及装置 | |
CN113312676A (zh) | 数据访问方法、装置、计算机设备及可读存储介质 | |
CN102841802B (zh) | 移动终端的软件升级方法 | |
CN106598572A (zh) | 一种应用的退出方法及装置 | |
CN106569750A (zh) | 一种数据压缩方法及装置 | |
CN107301020A (zh) | 数据管理方法及管理装置 | |
CN105653980A (zh) | 一种虚拟内存数据的保护方法及其系统 | |
CN106845225A (zh) | 一种java卡帧的边界检查方法 | |
CN108268291A (zh) | 一种应用程序删除方法及终端设备 | |
CN107547538A (zh) | 一种资源数据处理方法及装置 | |
CN107122315A (zh) | 一种访问控制方法及终端 | |
CN103065079B (zh) | 一种防骗签的方法 | |
CN114238162B (zh) | 垃圾回收方法、装置、可读存储介质及电子设备 | |
CN101425120B (zh) | 读卡器及其执行方法 | |
CN101470673A (zh) | 一种移动存储设备的实现防病毒的方法 | |
CN105260130A (zh) | 一种希捷硬盘系统文件的读写方法 | |
CN113760193A (zh) | 用于资源受限制装置的数据读写方法、装置及指令集 | |
CN104809037B (zh) | eMMC基于特殊页的快速启动方法及装置 | |
CN102737193A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170613 |
|
WD01 | Invention patent application deemed withdrawn after publication |