CN1237444C - 保护入口地址的方法 - Google Patents
保护入口地址的方法 Download PDFInfo
- Publication number
- CN1237444C CN1237444C CNB998119431A CN99811943A CN1237444C CN 1237444 C CN1237444 C CN 1237444C CN B998119431 A CNB998119431 A CN B998119431A CN 99811943 A CN99811943 A CN 99811943A CN 1237444 C CN1237444 C CN 1237444C
- Authority
- CN
- China
- Prior art keywords
- entry address
- data
- code
- address
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)
- Executing Machine-Instructions (AREA)
- Hardware Redundancy (AREA)
Abstract
一种高效地保护计算机程序中的入口地址的方法,其中通过在直接位于所述入口地址之前或之后的存储单元中存放相关数据的地址,而利用不在同一单个指令中的数据的相关性来识别允许的入口地址;或者通过用非预备存储区内的程序数据实现相关,而利用不在同一单个指令中的数据的相关性来识别允许的入口地址。在此,可以由编译程序或链接程序通过组织程序代码来确保只有合法的入口地址才满足所述的相关性。根据本发明无须执行所计算的跳跃,由此在CPU指令流水线中不会出现窥孔。
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.如权利要求1~2中任一项所述的方法,其中,在执行功能调用时,自动地为有关的入口地址检验是否满足数据的相关性。
5.保护与被调用功能相关的入口地址的方法,其中,通过用非预备存储区内的程序数据实现相关,而利用不在同一单个指令中的数据的相关性来识别允许的入口地址。
6.如权利要求5所述的方法,其中,程序指令不超过某个最大数目n的字节,设定一种特殊的无操作代码,用以避免随机的相关性。
7.如权利要求5或6所述的方法,其中,在至少相距每个程序指令的最大数目字节的代码数据之间产生所述的相关性。
8.如权利要求5~6中任一项所述的方法,其中,通过加入一个特殊的字节序列来暂存所述的入口地址,而该字节序列可以不出现在常规代码内。
9.如权利要求8所述的方法,其中,采用一种特殊的无操作代码作为特殊的字节序列。
10.如权利要求5~6中任一项所述的方法,其中,直接跳至所述允许的入口地址。
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 CN1323413A (zh) | 2001-11-21 |
| CN1237444C true 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) |
Families Citing this family (5)
| 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 | 삼성전자주식회사 | 단말기의 메모리 관리방법 및 장치 |
| CN103150438B (zh) * | 2013-03-12 | 2016-01-06 | 青岛中星微电子有限公司 | 一种电路编译方法及装置 |
| CN105786524B (zh) * | 2016-03-23 | 2019-03-12 | 福建正孚软件有限公司 | 软件钩子设置方法及装置 |
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 CN CNB998119431A patent/CN1237444C/zh not_active Expired - Fee Related
- 1999-10-01 RU RU2001112417/09A patent/RU2216770C2/ru not_active IP Right Cessation
- 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 JP JP2000576345A patent/JP2002527809A/ja active Pending
- 1999-10-01 WO PCT/DE1999/003169 patent/WO2000022506A2/de not_active Ceased
- 1999-10-01 ES ES99970480T patent/ES2214062T3/es not_active Expired - Lifetime
- 1999-10-01 DE DE59908212T patent/DE59908212D1/de not_active Expired - Lifetime
- 1999-10-01 KR KR1020017004482A patent/KR20010080068A/ko not_active Abandoned
- 1999-10-01 EP EP99970480A patent/EP1127311B1/de not_active Expired - Lifetime
-
2001
- 2001-04-09 US US09/829,328 patent/US7039907B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| DE19846676C1 (de) | 2000-03-02 |
| US7039907B2 (en) | 2006-05-02 |
| WO2000022506A3 (de) | 2000-08-24 |
| EP1127311A2 (de) | 2001-08-29 |
| EP1127311B1 (de) | 2004-01-02 |
| BR9914396A (pt) | 2001-06-26 |
| RU2216770C2 (ru) | 2003-11-20 |
| US20010039652A1 (en) | 2001-11-08 |
| ES2214062T3 (es) | 2004-09-01 |
| KR20010080068A (ko) | 2001-08-22 |
| ATE257255T1 (de) | 2004-01-15 |
| JP2002527809A (ja) | 2002-08-27 |
| CN1323413A (zh) | 2001-11-21 |
| UA57855C2 (uk) | 2003-07-15 |
| DE59908212D1 (de) | 2004-02-05 |
| WO2000022506A2 (de) | 2000-04-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11113384B2 (en) | Stack overflow protection by monitoring addresses of a stack of multi-bit protection codes | |
| US7581089B1 (en) | Method of protecting a computer stack | |
| US7287166B1 (en) | Guards for application in software tamperproofing | |
| US7757097B2 (en) | Method and system for tamperproofing software | |
| JP7154365B2 (ja) | ソフトウェアコードをセキュアにするための方法 | |
| CA2372034A1 (en) | Foiling buffer-overflow and alien-code attacks by encoding | |
| EP4248340B1 (en) | Code flow protection with error propagation | |
| CN1237444C (zh) | 保护入口地址的方法 | |
| US20090125728A1 (en) | Security method of system by encoding instructions | |
| EP1295200A2 (en) | Data processing method and device for protected execution of instructions | |
| WO2007100116A1 (en) | Control flow protection mechanism | |
| DuVarney et al. | SELF: a transparent security extension for ELF binaries | |
| EP1507185A1 (fr) | Méthode et dispositif de protection contre l'accès non-autorisé à une routine sensible | |
| JP2008287449A (ja) | データプロセッサ | |
| US11055202B1 (en) | Compilation scheme for tagged global variables | |
| KR102351663B1 (ko) | Cfi 기반 got 변조 공격 방지 장치 및 그 방법 | |
| EP4248344B1 (en) | Execution protection using data colouring | |
| Lehniger et al. | Combination of rop defense mechanisms for better safety and security in embedded systems | |
| EP1739519A1 (en) | Method to secure the execution of a program against attacks by radiation or other | |
| CN118673474B (zh) | 一种防止动态链接库劫持的链接方法、设备及介质 | |
| CN113885887B (zh) | 一种并发应用运行时加固方法与装置 | |
| CN120805128A (zh) | 一种数字多用表控制流程重建方法、系统、设备及介质 | |
| WO2026002387A1 (en) | Hardware-assisted jit emission protection | |
| MXPA01003581A (en) | Method for protecting entry addresses | |
| Shinagawa | Segmentshield: Exploiting segmentation hardware for protecting against buffer overflow attacks |
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 |