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

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

Info

Publication number
CN1185589C
CN1185589C CNB98120158XA CN98120158A CN1185589C CN 1185589 C CN1185589 C CN 1185589C CN B98120158X A CNB98120158X A CN B98120158XA CN 98120158 A CN98120158 A CN 98120158A CN 1185589 C CN1185589 C CN 1185589C
Authority
CN
China
Prior art keywords
processor
memory position
program
routine
pattern
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 - Lifetime
Application number
CNB98120158XA
Other languages
English (en)
Other versions
CN1215870A (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 II处理器中的名称,但其含义仅仅是实际上所有型号和/或牌号的处理器的类似寄存器的示例性代表。寄存器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、根据权利要求12的方法,其中操作的暂停执行模式是一个单步骤模式。
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 CN1215870A (zh) 1999-05-05
CN1185589C true 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)

Families Citing this family (20)

* 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
GB2381625C (en) 2000-07-18 2008-12-12 Bitarts Ltd 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
CN100594509C (zh) * 2005-02-11 2010-03-17 辛普雷克斯梅杰有限公司 软件保护方法
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
WO2007147495A2 (en) * 2006-06-21 2007-12-27 Wibu-Systems Ag Method and system for intrusion detection
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
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
US9262250B2 (en) 2011-12-12 2016-02-16 Crashlytics, Inc. System and method for data collection and analysis of information relating to mobile applications
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
AU2014318585B2 (en) 2013-09-12 2018-01-04 Virsec Systems, Inc. Automated runtime detection of malware
AU2015279923B9 (en) 2014-06-24 2018-01-25 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US11409870B2 (en) 2016-06-16 2022-08-09 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
WO2019231000A1 (ko) * 2018-05-29 2019-12-05 라인플러스 주식회사 프로그램 보호를 위한 자바 디버거 차단 방법 및 시스템

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
US5446904A (en) * 1991-05-17 1995-08-29 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor
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

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1185589C (zh) 防止对计算机程序非授权访问的方法和系统
CN1151414C (zh) 计算机存储装置的可修改分区引导记录
US5953530A (en) Method and apparatus for run-time memory access checking and memory leak detection of a multi-threaded program
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
US20030093685A1 (en) Method and system for obfuscation of computer program execution flow to increase computer program security
US6026236A (en) System and method for enabling software monitoring in a computer system
US6071316A (en) Automated validation and verification of computer software
US5740413A (en) Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
ATE340723T1 (de) Verfahren zum betrieb eines kraftfahrzeugs- managementrechnersystems
EP0457426B1 (en) Method and system for optimizing termination in systems of programmable devices
Evans et al. On-line debugging techniques: a survey
US7152226B2 (en) Flexible horizontal stack display and editor
EP3506100A1 (en) Automated software application verification system
WO1993013477A1 (en) Computer protection device
EP2171590A2 (en) Authorised debugging
AU651682B2 (en) Improved system and method for detecting cross-domain instruction calls and data references especiallly adapted for code interface jacketing in a multi-code execution and debugging system within a multi-architecture environment
WO2005045611A2 (en) System for selectively enabling operating modes of a device
EP1879128B1 (de) Abgesicherter Programmcode
EP0657812A1 (en) System and method for monitoring library software
KR19990024648A (ko) 오오피 기반의 마이크로컨트롤러 응용 개발 시스템
Impson The Perl Debugger
Schaller Tutorial: Buffer Overflows
Rosenberg et al. Using the Tool Kits
Strom Point: do programmers need seatbelts?
Van De Vanter Debugging in Pan I

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

Granted publication date: 20050119

CX01 Expiry of patent term