CN1215870A - 防止对计算机程序非授权访问的方法和系统 - Google Patents

防止对计算机程序非授权访问的方法和系统 Download PDF

Info

Publication number
CN1215870A
CN1215870A CN98120158A CN98120158A CN1215870A CN 1215870 A CN1215870 A CN 1215870A CN 98120158 A CN98120158 A CN 98120158A CN 98120158 A CN98120158 A CN 98120158A CN 1215870 A CN1215870 A CN 1215870A
Authority
CN
China
Prior art keywords
processor
memory position
program
pattern
routine
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
CN98120158A
Other languages
English (en)
Other versions
CN1185589C (zh
Inventor
艾伦·E·贝利茨
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.)
Dell USA LP
Original Assignee
Dell USA LP
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 Dell USA LP filed Critical Dell USA LP
Publication of CN1215870A publication Critical patent/CN1215870A/zh
Application granted granted Critical
Publication of CN1185589C publication Critical patent/CN1185589C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

防止一程序在找错应用程序下运行的系统和方法。该方法是与一个软件程序一起存储在计算机系统的硬驱上的一个例行程序的一部分。该系统有一个用来运行该软件程序和该例行程序的处理器。该例行程序当处理器在找错模式下运行时将防止对软件程序的非授权访问,当该处理器运行软件程序时,该程序能起动执行该例行程序。该例行程序检验某些寄存器以判断是否操作于找错模式,如果是,则使处理器停止运行该程序。

Description

防止对计算机程序非授权访问的方法和系统
本公开一般地涉及计算机和计算机程序,较具体地涉及一种防止在找错应用程序下运行程序的系统和方法。
存储在一个计算机内的计算机程序常常含有许多可受保护的知识产权。其中有些产权可以容易地通过版权和/或专利法律得到保护。然而,其他的产权是作为商业秘密来保护的,因此需要最高级的安全性来防止非授权的使用或访问。
某一特定程序一旦被一个不受软件许可或其他形式的保护限制的用户得到,要防止该程序的非授权使用或访问将变得困难。例如,计算机制造商经常在计算机正安装一些诊断程序,其中含有许多制造商的商业秘密。典型的情况是,只安装程序的可执行(.exe)部分,由此使用户无法得到源码。而且,程序的可执行部分还常常加了密。例如,威斯康星州Brown Deer市PKWARE公司的PKLITE应用程序对程序的可执行部分进行了压缩,由此在处理中对它进行了加密。然而,这没有能防止用户通过找错应用程序来运行该程序,找错应用程序使计算机处理器工作在暂停执行模式,这一模式使处理器在某些预定的间隔上停止执行或跳到另一个例行程序上。例如,该处理器可以是一个加利福尼亚州Santa Clara市Intel(英特)公司生产的PENTIUM(奔腾)处理器,暂停执行模式的例子有找错模式和单步骤操作模式,在Intel公司提供的“INTEL ARCHITECTURE SOFTWAREDEVELOPER’S MANUAL(英特体系软件开发者手册)”(1997,Vol.1-3)中对这两种模式有较详细的说明,这里引用该手册作为参考。通过使用找错程序,用户可以错误地访问程序,由此访问存储在其中的商业秘密。
因此,需要一种用来防止即使通过找错应用程序对一个程序的非授权访问的系统和方法。
为此,提供了一种用来防止一个程序在找错应用程序下运行的系统和方法。在一个实施例中,在一个计算机系统的硬驱上存储了一个例行程序和一个软件程序。该计算机系统有一个用来运行软件程序和例行程序两者的处理器,而且该系统能操作于暂停执行模式。该例行程序能防止例如当处理器在一个找错应用程序下运行于暂停执行模式时对软件程序的非授权访问。当处理器正在运行该软件程序时,该程序将能起动例行程序的执行。该例行程序一旦被起动,它将检查某一预定的存储器位置,判断处理器是否操作于暂停执行模式,如果是,则使处理器停止继续运行该软件程序。
在一个实施例中,该存储器位置是处理器的一个中断寄存器,其中指明了是否正在使用通常在找错工作模式中使用的中断点。该例行程序检验中断寄存器是否指向任何其他的程序或例行程序。如果是这样,则处理器可能正运行于找错模式,从而该例行程序使处理器停止继续运行原来的程序。在另一个实施例中,该存储器位置是处理器的一个旗标寄存器,其中指明了是否是处理器的其他工作模式。在该实施例中,例行程序检验旗标寄存器是否指明了处理器操作的一个单步骤模式。如果是这样,该例行程序将使处理器停止继续运行原来的程序。
图1是实现一个实施例的计算机的方框图。
图2是准备由图1计算机运行的一个例行程序的流程图。
参见图1,代号10代表一个含有一些部件的计算机,这些部件包括:至少一个处理器12,RAM(随机存取存储器)14,一个硬驱16,以及一个软驱18。各个部件都能通过图中的总线20与处理器12进行通信。在本例中,处理器12运行例如由华盛顿州Redmond市Microsoft(微软)公司提供的DOS操作系统代码。然而应该理解,计算机10及其示例性的部件仅仅是许多不同类型的计算机和部件的一个代表。DOS也仅仅是许多不同类型的操作系统,包括也是由Microsoft公司开发的Windows(视窗)和Windows95的一个代表。
处理器12含有多个寄存器,包括中断寄存器22和旗标寄存器24。这里,寄存器22、24的名称是PENTIUM和PENTIUMⅡ处理器中的名称,但其含义仅仅是实际上所有型号和/或牌号的处理器的类似寄存器的示例性代表。寄存器22和24在上面已引入作为参考的“英特体系软件开发者手册”中也有所说明,该手册还说明了几种不同的处理器操作模式,包括正常模式、找错模式和单步骤模式。
存储在硬驱16上的一个可执行(.exe)程序文件26。该程序26已利用一个例如上面较详细说明过的PKLITE音通工具进行了压缩和加密。由于程序26已加密,用户不能简单地通过读出硬盘16来访问和解编译该程序。然而,通常用户可以把程序26安装到RAM14中,并利用一个找错应用程序(未示出)来用处理器12运行该程序。这样做的结果是,用户可以了解程序26中的第一代码行,并解编译该程序,由此做到对该程序的非授权访问。
参见图2,其中示出也是存储在硬盘16上的一个例行程序100,该例行程序可以防止用户利用找错应用程序去运行程序26。当程序26开始操作时,它将起动例行程序100。因此,作为例子,例行程序100是一个初始化例行程序,然而应该理解,例行程序100也可以在执行程序26过程中的任何时间上运行。
在步骤102中,例行程序100检验寄存器22和24。采用上述IntelPENTIUM处理器的例子,上这中断寄存器22是一个找错寄存器7,而上述旗标寄存器24是一个EFLAG(E旗标)寄存器,在步骤104中,例行程序100判断EFLAG寄存器24的捕捉旗标(trap flag)(TF)是否已被设置。如果设置了表明单步骤模式的TF,则例行程序100在步骤106停止执行程序26。如果没有设置TF,则处理进到步骤108,在那里例行程序100判断中断寄存器22的中断点旗标(INT3)指向何处。INT3可能会指向一个常常被找错程序使用的例行程序,例如“中断点除外处理器例行程序(breakpoint exception handler routine)”;或者可能会含有一个返回指令“IRET”,这意味着没有调用其他的程序或例行程序。如果INT3指向除了IRET以外的任何其他指令,则处理将进到前述的步骤106。否则,处理前进到步骤110,在那里例行程序100把控制返回给程序26,使后者可以正常运行。通过检验寄存器22和24,例行程序100将可得知处理器12是否在找错模式下操作,从而可防止程序26在找错应用程序下运行。
虽然已经示出并说明了一些示例性实施例,但在上面的公开中仍希望有修改、改变和替代的自由度,而且在某些情况中,可以只利用某些特性而不相应地利用其他的特性。例如,例行程序100可被程序26重复地调用,以此来进一步保证该程序不是被一个找错程序运行的。此外,程序26和例行程序100可以存储在不同的位置;可以检验附加的或另外的寄存器、旗标或存储装置,还可以在不改变所示实施例的范畴的情况下对其加上附加的错误处理例行程序。所以,应该广义地并以符合本发明范畴的方式去理解所附的权利要求。

Claims (21)

1、一种计算机,它包括:
至少一个用于运行软件程序的处理器,该处理器能够在一个暂停执行模式下操作,并含有一个能指明该处理器当前是否在暂停执行模式下操作的第一存储器位置;
一个可被该处理器访问的存储装置;以及
一个位于该存储装置内的例行程序;
其中,当处理器运行软件程序时,该程序能起动例行程序;并且
其中,当该例行程序一旦被起动时,它将检验第一存储器位置以判断处理器是否处于暂停执行模式,如果是这样,则将使处理器停止继续运行该软件程序。
2、根据权利要求1的计算机,其中的第一存储器位置是处理器的一个中断寄存器。
3、根据权利要求1的计算机,其中的第一存储器位置是处理器的一个旗标寄存器。
4、根据权利要求1的计算机,其中的处理器还含有一个第二存储器位置,而且第一存储器位置是一个中断寄存器,第二存储器位置是一个旗标寄存器,并且,其中两个寄存器中的任一个寄存器都可以指明处理器当前是否在暂停执行模式下操作。
5、根据权利要求1的计算机,其中的暂停执行模式是一个找错模式。
6、根据权利要求1的计算机,其中的暂停执行模式是一个单步骤模式。
7、根据权利要求1的计算机,其中如果例行程序判定了处理器不处于暂停执行模式,则例行程序返回到对软件程序的执行。
8、根据权利要求1的计算机,其中的存储装置是一个硬盘。
9、根据权利要求1的计算机,其中的存储装置是一个软盘。
10、根据权利要求1的计算机,其中的存储装置是一个随机存取存储器。
11、一种用来防止用户在一个操作于暂停执行模式的处理器上运行一个程序的方法,该方法包括以下步骤:
检验一个第一预定存储器位置;
判断该第一存储器位置是否调用另一个例行程序;以及
如果是这样,则使处理器停止继续运行该程序。
12、根据处理11的方法,它还包括以下步骤:
检验一个第二预定存储器位置;
判断该第二存储器位置是否指明了处理器操作的一个暂停执行模式;以及
如果是这样,则使处理器停止继续运行该程序。
13、根据权利要求11的方法,其中的第一存储器位置是处理器的一个中断寄存器。
14、根据权利要求12的方法,其中的第一存储器位置是处理器的一个中断寄存器,并且第二存储器位置是处理器的一个旗标寄存器。
15、根据权利要求11的方法,其中操作的暂停执行模式是一个单步骤模式。
16、根据权利要求12的方法,其中操作的暂停执行模式是一个找错模式。
17、一种用来防止用户在一个操作于找错模式的处理器上运行一个程序的设备,该设备包括:
用来检验一个第一预定存储器位置的装置;
用来判断该第一存储器位置是否指明处理器操作于一个暂停执行模式的装置;以及
用来在响应于第一存储器位置指明了暂停执行模式的判定时,使处理器停止继续运行该程序的装置。
18、根据权利要求17的设备,它还包括:
用来检验一个第二预定存储器位置的装置;
用来判断该第二存储器位置是否指向另一个例行程序的装置;以及
用来在响应于第二存储器位置指向了另一个例行程序的判定时,使处理器停止继续运行该程序的装置。
19、根据权利要求17的设备,其中的第一存储器位置是处理器的一个旗标寄存器。
20、根据权利要求18的设备,其中的第一存储器位置是处理器的一个旗标寄存器,并且第二存储器位置是处理器的一个中断寄存器。
21、根据权利要求17的设备,其中操作的暂停执行模式是单步骤模式或找错模式中的任一种模式。
CNB98120158XA 1997-10-15 1998-10-13 防止对计算机程序非授权访问的方法和系统 Expired - Lifetime CN1185589C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/950,626 US6237137B1 (en) 1997-10-15 1997-10-15 Method and system for preventing unauthorized access to a computer program
US08/950626 1997-10-15

Publications (2)

Publication Number Publication Date
CN1215870A true CN1215870A (zh) 1999-05-05
CN1185589C CN1185589C (zh) 2005-01-19

Family

ID=25490685

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB98120158XA Expired - Lifetime CN1185589C (zh) 1997-10-15 1998-10-13 防止对计算机程序非授权访问的方法和系统

Country Status (14)

Country Link
US (1) US6237137B1 (zh)
JP (1) JPH11175336A (zh)
KR (1) KR100394090B1 (zh)
CN (1) CN1185589C (zh)
AU (1) AU736077B2 (zh)
BR (1) BR9802354B1 (zh)
DE (1) DE19847677C2 (zh)
FR (1) FR2772157A1 (zh)
GB (1) GB2330932B (zh)
IE (1) IE980483A1 (zh)
IT (1) IT1303132B1 (zh)
MY (1) MY115760A (zh)
SG (1) SG75856A1 (zh)
TW (1) TW389859B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101473333B (zh) * 2006-06-21 2011-09-07 威步系统股份公司 入侵检测的方法和系统

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6519721B1 (en) * 1999-05-19 2003-02-11 Intel Corporation Method and apparatus to reduce the risk of observation of program operation
US6983374B2 (en) * 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
AU2001270814A1 (en) 2000-07-18 2002-01-30 Bitarts Limited Digital data protection arrangement
DE10126281A1 (de) 2001-05-29 2002-12-12 Infineon Technologies Ag Programmgesteuerte Einheit
EP1412879B1 (en) 2001-06-29 2012-05-30 Secure Systems Limited Security system and method for computers
KR100781554B1 (ko) 2004-11-29 2007-12-03 주식회사 안철수연구소 실시간 컴퓨터 프로그램의 디버깅 방지 방법 및 그 기록매체
US20060137016A1 (en) * 2004-12-20 2006-06-22 Dany Margalit Method for blocking unauthorized use of a software application
JP4922951B2 (ja) * 2005-02-11 2012-04-25 シンプレックス メジャー センドリアン ベルハッド ソフトウェア保護方法
JP4810846B2 (ja) * 2005-03-15 2011-11-09 富士ゼロックス株式会社 プログラムデータの不正利用を阻止するプログラム
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
JP4048382B1 (ja) 2006-09-01 2008-02-20 富士ゼロックス株式会社 情報処理システムおよびプログラム
US9703680B1 (en) 2011-12-12 2017-07-11 Google Inc. System and method for automatic software development kit configuration and distribution
US9262250B2 (en) 2011-12-12 2016-02-16 Crashlytics, Inc. System and method for data collection and analysis of information relating to mobile applications
US9087154B1 (en) * 2011-12-12 2015-07-21 Crashlytics, Inc. System and method for providing additional functionality to developer side application in an integrated development environment
DE202013101230U1 (de) 2013-03-22 2013-04-10 Oleg A. Schlegel Einrichtung einer Gegenwirkung mit einer Filtrierung von Ereignissen eines unbefugten Zugangs auf ein Programm eines portativen Computers
US10079841B2 (en) 2013-09-12 2018-09-18 Virsec Systems, Inc. Automated runtime detection of malware
EP3161715A1 (en) 2014-06-24 2017-05-03 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
AU2017285429B2 (en) 2016-06-16 2022-03-31 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
JP7076014B2 (ja) * 2018-05-29 2022-05-26 ライン プラス コーポレーション プログラム保護のためのJavaデバッガ遮断方法およびシステム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57161946A (en) 1981-03-30 1982-10-05 Fujitsu Ltd Microcomputer with protecting mechanism for memory contents
US4525780A (en) * 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US4369449A (en) 1981-06-01 1983-01-18 Macdougall James B Linearly polarized omnidirectional antenna
JPS5894195A (ja) 1981-11-30 1983-06-04 Nec Home Electronics Ltd ワンチツプ・マイクロコンピユ−タ
US4525599A (en) * 1982-05-21 1985-06-25 General Computer Corporation Software protection methods and apparatus
EP0153764B1 (en) * 1984-03-02 1993-11-03 Nec Corporation Information processor having an interruption operating function
JPS62126448A (ja) 1985-11-27 1987-06-08 Fuji Electric Co Ltd メモリの管理・保護方式
JPS63163912A (ja) * 1986-12-26 1988-07-07 Toshiba Corp マイクロコンピユ−タシステム
US4819234A (en) * 1987-05-01 1989-04-04 Prime Computer, Inc. Operating system debugger
US5432795A (en) * 1991-03-07 1995-07-11 Digital Equipment Corporation System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program
US5551033A (en) * 1991-05-17 1996-08-27 Zenith Data Systems Corporation Apparatus for maintaining one interrupt mask register in conformity with another in a manner invisible to an executing program
US5446900A (en) * 1992-07-24 1995-08-29 Microtec Research, Inc. Method and apparatus for statement level debugging of a computer program
US5671422A (en) * 1994-11-14 1997-09-23 Intel Corporation Method and apparatus for switching between the modes of a processor
WO1997004394A1 (en) 1995-07-14 1997-02-06 Christopher Nathan Drake Computer software authentication, protection, and security system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101473333B (zh) * 2006-06-21 2011-09-07 威步系统股份公司 入侵检测的方法和系统

Also Published As

Publication number Publication date
KR19990036567A (ko) 1999-05-25
AU8089198A (en) 1999-05-06
DE19847677C2 (de) 2003-08-14
GB2330932B (en) 2002-06-26
MY115760A (en) 2003-08-30
FR2772157A1 (fr) 1999-06-04
IT1303132B1 (it) 2000-10-30
KR100394090B1 (ko) 2003-12-31
GB9821547D0 (en) 1998-11-25
BR9802354B1 (pt) 2009-12-01
US6237137B1 (en) 2001-05-22
DE19847677A1 (de) 1999-05-06
CN1185589C (zh) 2005-01-19
TW389859B (en) 2000-05-11
SG75856A1 (en) 2000-10-24
AU736077B2 (en) 2001-07-26
GB2330932A (en) 1999-05-05
ITTO980865A1 (it) 2000-04-12
BR9802354A (pt) 1999-10-19
JPH11175336A (ja) 1999-07-02
IE980483A1 (en) 1999-06-02

Similar Documents

Publication Publication Date Title
CN1185589C (zh) 防止对计算机程序非授权访问的方法和系统
Baratloo et al. Transparent {Run-Time} defense against {Stack-Smashing} attacks
US5740413A (en) Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
US20030093685A1 (en) Method and system for obfuscation of computer program execution flow to increase computer program security
CN1151414C (zh) 计算机存储装置的可修改分区引导记录
CA2332650C (en) Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
US4974159A (en) Method of transferring control in a multitasking computer system
US7584364B2 (en) Overlapped code obfuscation
EP0729097A1 (en) Method and apparatus for run-time memory access checking and memory leak detection of a multi-threaded program
ATE340723T1 (de) Verfahren zum betrieb eines kraftfahrzeugs- managementrechnersystems
WO2001099034A2 (en) System for obfuscating computer code to prevent disassembly
Evans et al. On-line debugging techniques: a survey
US11269988B2 (en) Automated software application verification system
GB2268293A (en) Installing a resident part of a Terminate and Stay Resident program.
WO1993013477A1 (en) Computer protection device
WO2004026641A8 (de) Verfahren zum schutz gegen manipulationen in einem steuergerät für eine kfz-komponente und steuergerät
EP1685676A2 (en) System for selectively enabling operating modes of a device
KR100512157B1 (ko) 오오피 기반의 마이크로컨트롤러 응용 개발 시스템
Van De Vanter Error management and debugging in Pan I
GLOVER CONTROL SYSTEM PROGRAMMING REMOTE COMPUTING AND DATA DISPLAY
JPS63271542A (ja) Romデバツガ
PIPER Michael L. Van De Vanter
Hogg et al. Control system programming remote computing and data display
Buechler et al. Software error detection
Strom Point: do programmers need seatbelts?

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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20050119