CN1323413A - 保护入口地址的方法 - Google Patents
保护入口地址的方法 Download PDFInfo
- Publication number
- CN1323413A CN1323413A CN99811943A CN99811943A CN1323413A CN 1323413 A CN1323413 A CN 1323413A CN 99811943 A CN99811943 A CN 99811943A CN 99811943 A CN99811943 A CN 99811943A CN 1323413 A CN1323413 A CN 1323413A
- Authority
- CN
- China
- Prior art keywords
- entry address
- code
- correlativity
- data
- special
- 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
Links
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Devices For Executing Special Programs (AREA)
- Hardware Redundancy (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种高效地保护计算机程序中的入口地址的方法,其中准许直接跳至允许的入口地址,并且可以利用不在同一单个指令中的数据的相关性来识别该允许的入口地址。在此,可以由编译程序或链接程序通过组织程序代码来确保只有合法的入口地址才满足所述的相关性。
Description
在未来的芯片卡上,应允许可以调用操作系统功能的第三方的应用。为此可能存在如下危险,即该第三方的应用包含关于其它程序段的干扰或破坏企图。这种可能的侵害有:从所述的应用出发不是采用操作系统程序的有效功能指针,而是采用另一入口地址。由此,操作系统的代码不是按规定执行的,并且可能譬如因错误重写存储器区而引起数据损失。
根据现有技术设计了一种解决方案,它利用的是进入到固定间隔(门)中的预定地址上。在此,首先必须检验门地址是否位于模块所允许的地址范围之内。在结果肯定的情况下,便跳向该门,然后从那里进一步跳跃到原本的功能中。这是有缺陷的,因为此处必须执行所计算出的跳跃,该跳跃在CPU流水线中将导致一个窥孔。也可选择在功能的一些预先处理的程序指令之后延迟地跳跃到所述的功能中。如果在所述功能的开始处引入一个循环,并且必须持续地在门处的代码和调出的代码之间来回跳跃,那么这将会给编译程序带来很困难的优化问题。
因此,本发明任务在于,创造一种保护这种类型的入口地址的方法,其中无须执行所计算的跳跃,由此在CPU指令流水线中不会出现窥孔。
根据本发明,该任务通过如下方式解决,即准许直接跳至允许的入口地址,并且可利用不在同一单个指令中的数据的相关性来识别该允许的入口地址。
在此,编译程序或链接程序通过组织程序代码来确保只有合法的入口地址才满足该相关性。譬如可以通过如下方式来实现所述的相关性,即直接位于入口地址之前或之后的存储单元包含有相关数据的地址。
为此,一种优选的可能性在于,直接位于入口地址之前或之后的存储单元包含有一个针对合法入口地址的保护目录内的相应项的参考。
在此,尤其优选的是,在执行功能调用时自动地检验是否满足数据的相关性。
特别优选的是,在执行功能调用时自动地检验所述的相关数据是否位于预定的预备存储区。
只要程序指令不超过某个最大数目n的字节,则可以通过如下方式应用本发明的另一解决方案,即设定一种特殊的无操作代码,用以避免随机的相关性,并且可以由编译程序或链接程序补充加入该无操作代码。
在此,如下做法是尤其优选的,即在至少相距n字节的代码数据之间产生所述的相关性。
此外,根据本发明,所述的入口地址可以通过加入一个特殊的、可以不出现在常规代码内的字节序列来进行暂存,譬如利用特殊的无操作代码。
因此,根据本发明,可以通过直接跳至功能指针的地址来避免流水线中的窥孔。但是,必须负责通过非局部的代码相关性来标出合法的跳跃地址。所述的编译程序或链接程序必须通过组织程序代码来确保只有合法的功能跳跃地址才能满足该相关性。在此,“非局部的相关性”意味着那些可以不位于同一单个指令内的数据的相关性。
因此,譬如下列的优选实施方案是可能的:
1.与为此而预备的存储区内的数据相关:一种简单的实现方法可以是譬如在直接位于入口地址之前的存储单元内包含相关数据的地址,该相关数据譬如又对应着功能的合法入口地址。在执行功能调用时,可以自动地检验是否满足该相关性,以及/或者该相关数据是否位于预定的预备存储区。该机理乍一看来非常近似于迄今的门机理,但有个优点,就是不会出现所计算的跳跃,而且可以直接把功能的指令取至流水线的预取器中。窥孔只有在非法进入的故障情况下才出现。
2.与非预备的存储区内的程序数据相关。该解决方案的前提条件是,程序指令不超过某个最大数目n的字节。于是必须排除代码段中有较长的数据区。此外,该方法还有一个前提条件是特殊的无操作代码(SNOP),该无操作代码从不装入在常规代码中,而只是为了避免随机的相关性而由编译程序/链接程序补充加入。在此还可以区别为两种不同的解决方案:
a)所述的相关性是在至少相距n个字节的代码数据之间产生的。在此,所述的编译程序或链接程序必须确保通过引入SNOP中间代码来避免代码中可能的随机相关性。
一种可能的实现规定如下:直接在所述功能的入口地址之前存在一个值,该值是接下来n+m(m≥0,否则是任意的)个字节的功能。如果代码中任何地方都可能随机地满足该相关性,则编译程序或链接程序必须消除该随机的相关性:因为根据前提条件在n+m个字节的序列中是以至少一个实指令结束,所以在该指令结束后可以加入一系列SNOP指令,直到所述的功能值发生变化。在此,该功能可以在某个界限内自由地进行选择。
b)所述的入口地址是通过加入特殊的字节序列来进行暂存的,该特殊字节序列可以不出现在常规代码之内。此处的例子为OP代码序列(SNOP)。
因此,根据本发明可以通过非局部的只可能在入口地址处出现的代码相关性来暂存功能的入口地址。
由此有利地避免了所述的门机理,该门机理会产生一种计算的跳跃,而且在指令流水线中引起一种窥孔。
更具体地讲,可直接在入口地址处跳至所述的功能中。接下来的指令可被装入到流水线内,且与验证跳跃地址的对或错无关。由此提高了监视功能调用的效率。
Claims (10)
1.保护入口地址的方法,其特征在于:准许直接跳至允许的入口地址,并且可利用不在同一单个指令中的数据的相关性来识别该允许的入口地址。
2.如权利要求1所述的方法,其特征在于:编译程序或链接程序通过组织程序代码来确保只有合法的入口地址才满足所述的相关性。
3.如权利要求1或2所述的方法,其特征在于:通过如下方式来实现所述的相关性,即直接位于所述入口地址之前或之后的存储单元包含有相关数据的地址。
4.如权利要求3所述的方法,其特征在于:所述直接位于入口地址之前或之后的存储单元包含有一个针对合法入口地址的保护目录内的相应项的参考。
5.如权利要求1~4中任一项所述的方法,其特征在于:在执行功能调用时自动地检验是否满足数据的相关性。
6.如权利要求5所述的方法,其特征在于:在执行功能调用时自动地检验所述的相关数据是否位于预定的预备存储区。
7.如权利要求1或2所述的方法,其特征在于:程序指令不超过某个最大数目n的字节;设定一种特殊的无操作代码(SNOP),用以避免随机的相关性,并且可以由编译程序或链接程序补充加入该无操作代码。
8.如权利要求7所述的方法,其特征在于:在至少相距n字节的代码数据之间产生所述的相关性。
9.如权利要求1、2或7所述的方法,其特征在于:通过加入一个特殊的字节序列来暂存所述的入口地址,而该字节序列可以不出现在常规代码内。
10.如权利要求9所述的方法,其特征在于:采用一种特殊的无操作代码(SNOP)作为特殊的字节序列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19846676.5 | 1998-10-09 | ||
DE19846676A DE19846676C1 (de) | 1998-10-09 | 1998-10-09 | Verfahren zur Absicherung von Einsprungsadressen |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1323413A true CN1323413A (zh) | 2001-11-21 |
CN1237444C CN1237444C (zh) | 2006-01-18 |
Family
ID=7884005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB998119431A Expired - Fee Related CN1237444C (zh) | 1998-10-09 | 1999-10-01 | 保护入口地址的方法 |
Country Status (12)
Country | Link |
---|---|
US (1) | US7039907B2 (zh) |
EP (1) | EP1127311B1 (zh) |
JP (1) | JP2002527809A (zh) |
KR (1) | KR20010080068A (zh) |
CN (1) | CN1237444C (zh) |
AT (1) | ATE257255T1 (zh) |
BR (1) | BR9914396A (zh) |
DE (2) | DE19846676C1 (zh) |
ES (1) | ES2214062T3 (zh) |
RU (1) | RU2216770C2 (zh) |
UA (1) | UA57855C2 (zh) |
WO (1) | WO2000022506A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150438A (zh) * | 2013-03-12 | 2013-06-12 | 青岛中星微电子有限公司 | 一种电路编译方法及装置 |
CN105786524A (zh) * | 2016-03-23 | 2016-07-20 | 福建正孚软件有限公司 | 软件钩子设置方法及装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7584354B2 (en) * | 2003-01-31 | 2009-09-01 | Intel Corporation | Implementing portable content protection to secure secrets |
KR100617698B1 (ko) * | 2004-06-07 | 2006-08-28 | 삼성전자주식회사 | 기능별 데이터 저장을 위한 바이너리 파일 생성 장치 및방법과 그 방법이 저장된 컴퓨터 판독 가능한 저장 매체 |
KR102014083B1 (ko) * | 2012-12-31 | 2019-08-27 | 삼성전자주식회사 | 단말기의 메모리 관리방법 및 장치 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
JPS59205605A (ja) * | 1983-05-07 | 1984-11-21 | Hitachi Ltd | シ−ケンス制御装置 |
US5507028A (en) * | 1992-03-30 | 1996-04-09 | International Business Machines Corporation | History based branch prediction accessed via a history based earlier instruction address |
JP3499252B2 (ja) * | 1993-03-19 | 2004-02-23 | 株式会社ルネサステクノロジ | コンパイル装置及びデータ処理装置 |
JP3491365B2 (ja) * | 1995-01-31 | 2004-01-26 | ソニー株式会社 | 符号化データ復号方法および復号装置 |
US5797014A (en) * | 1995-12-14 | 1998-08-18 | International Business Machines Corporation | Method for reducing processor cycles used for global offset table address computation in a position independent shared library |
JPH10228421A (ja) * | 1997-02-14 | 1998-08-25 | Nec Ic Microcomput Syst Ltd | メモリアクセス制御回路 |
DE19709975C2 (de) * | 1997-03-11 | 1999-04-22 | Siemens Ag | Mikrocomputer |
-
1998
- 1998-10-09 DE DE19846676A patent/DE19846676C1/de not_active Expired - Fee Related
-
1999
- 1999-01-10 UA UA2001042325A patent/UA57855C2/uk unknown
- 1999-10-01 WO PCT/DE1999/003169 patent/WO2000022506A2/de active IP Right Grant
- 1999-10-01 DE DE59908212T patent/DE59908212D1/de not_active Expired - Lifetime
- 1999-10-01 EP EP99970480A patent/EP1127311B1/de not_active Expired - Lifetime
- 1999-10-01 JP JP2000576345A patent/JP2002527809A/ja active Pending
- 1999-10-01 CN CNB998119431A patent/CN1237444C/zh not_active Expired - Fee Related
- 1999-10-01 AT AT99970480T patent/ATE257255T1/de not_active IP Right Cessation
- 1999-10-01 BR BR9914396-8A patent/BR9914396A/pt not_active IP Right Cessation
- 1999-10-01 KR KR1020017004482A patent/KR20010080068A/ko active IP Right Grant
- 1999-10-01 ES ES99970480T patent/ES2214062T3/es not_active Expired - Lifetime
- 1999-10-01 RU RU2001112417/09A patent/RU2216770C2/ru not_active IP Right Cessation
-
2001
- 2001-04-09 US US09/829,328 patent/US7039907B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150438A (zh) * | 2013-03-12 | 2013-06-12 | 青岛中星微电子有限公司 | 一种电路编译方法及装置 |
CN103150438B (zh) * | 2013-03-12 | 2016-01-06 | 青岛中星微电子有限公司 | 一种电路编译方法及装置 |
CN105786524A (zh) * | 2016-03-23 | 2016-07-20 | 福建正孚软件有限公司 | 软件钩子设置方法及装置 |
CN105786524B (zh) * | 2016-03-23 | 2019-03-12 | 福建正孚软件有限公司 | 软件钩子设置方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
DE19846676C1 (de) | 2000-03-02 |
EP1127311B1 (de) | 2004-01-02 |
RU2216770C2 (ru) | 2003-11-20 |
ES2214062T3 (es) | 2004-09-01 |
DE59908212D1 (de) | 2004-02-05 |
JP2002527809A (ja) | 2002-08-27 |
ATE257255T1 (de) | 2004-01-15 |
KR20010080068A (ko) | 2001-08-22 |
EP1127311A2 (de) | 2001-08-29 |
CN1237444C (zh) | 2006-01-18 |
US7039907B2 (en) | 2006-05-02 |
UA57855C2 (uk) | 2003-07-15 |
US20010039652A1 (en) | 2001-11-08 |
BR9914396A (pt) | 2001-06-26 |
WO2000022506A2 (de) | 2000-04-20 |
WO2000022506A3 (de) | 2000-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113384B2 (en) | Stack overflow protection by monitoring addresses of a stack of multi-bit protection codes | |
US7287166B1 (en) | Guards for application in software tamperproofing | |
US8510571B1 (en) | System and method for inserting security mechanisms into a software program | |
US6202176B1 (en) | Method of monitoring the correct execution of software programs | |
US8315382B2 (en) | Method for monitoring execution of data processing program instructions in a security module | |
US6934887B1 (en) | Method for protecting a program flow | |
CN107330320A (zh) | 应用进程监控的方法和装置 | |
CN1237444C (zh) | 保护入口地址的方法 | |
US20060047955A1 (en) | Application code integrity check during virtual machine runtime | |
CN116150739A (zh) | 一种基于关键地址动态保护的栈溢出自动防御方法 | |
Sinnadurai et al. | Transparent runtime shadow stack: Protection against malicious return address modifications | |
US7207066B2 (en) | Method for protecting a microcomputer system against manipulation of data stored in a storage arrangement of the microcomputer system | |
DuVarney et al. | SELF: a transparent security extension for ELF binaries | |
CN101128802B (zh) | 数据保护用的方法和用于其实施的设备 | |
US20240012886A1 (en) | Code flow protection with error propagation | |
US7634640B2 (en) | Data processing apparatus having program counter sensor | |
US11704404B2 (en) | Method for control-flow integrity protection, apparatus, device and storage medium | |
Jang et al. | IBV-CFI: Efficient fine-grained control-flow integrity preserving CFG precision | |
CN113032737B (zh) | 软件的保护方法、装置、电子设备及存储介质 | |
KR102351663B1 (ko) | Cfi 기반 got 변조 공격 방지 장치 및 그 방법 | |
RU2198424C2 (ru) | Микрокомпьютер | |
US20210182175A1 (en) | Compilation scheme for tagged global variables | |
CN111881485A (zh) | 一种基于arm指针验证的内核敏感数据完整性保护方法 | |
MXPA01003581A (en) | Method for protecting entry addresses | |
CN116743499B (zh) | 一种针对智能合约攻击的模仿交易生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060118 Termination date: 20151001 |
|
EXPY | Termination of patent right or utility model |