JPH0245829A - Method and circuit for detecting permission-free access of computer program stored in medium - Google Patents

Method and circuit for detecting permission-free access of computer program stored in medium

Info

Publication number
JPH0245829A
JPH0245829A JP1142284A JP14228489A JPH0245829A JP H0245829 A JPH0245829 A JP H0245829A JP 1142284 A JP1142284 A JP 1142284A JP 14228489 A JP14228489 A JP 14228489A JP H0245829 A JPH0245829 A JP H0245829A
Authority
JP
Japan
Prior art keywords
accessed
address
location
computer program
detecting
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
Application number
JP1142284A
Other languages
Japanese (ja)
Inventor
Kurtz Zbika
ツビカ・クルツ
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JPH0245829A publication Critical patent/JPH0245829A/en
Pending legal-status Critical Current

Links

Abstract

PURPOSE: To prevent the unapproved copying of an unapproved user by providing a circuit for detecting that a code is accessed by a sequential order which is not a normal non-sequential order. CONSTITUTION: A go-by flag 103 corresponding to a pre-branch address array 102 is set when the pre-branch address of the array 102 is accessed. That is, in a branch address array 104, an address to be accessed after the pre-branch address is accessed in normal non-sequential access and to be accessed before the access of the pre-branch address in simply sequential access is stored. A comparator circuit 107 checks whether or not valid access is performed by the flag 103 of the array 102 every time the address in the array 104 is accessed, and when it is not performed, instructs an error function generation circuit 110 and turns output data from a ROM 109 to incoherent data.

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はソフトウェアコピー防止の分野に関するもので
あり、更に詳しくいえば、許可されたユーザーがソフト
ウェアをアクセスするやり方と、許可されていないユー
ザーがソフトウェアコードをアクセスするやり方との間
に基本的な違いがあるという仮定を用いてコピー防止を
行う方法および装置に関するものである。
DETAILED DESCRIPTION OF THE INVENTION [Field of Industrial Application] The present invention relates to the field of software copy protection, and more specifically, how software is accessed by authorized users and how unauthorized users The present invention relates to a method and apparatus for providing copy protection using the assumption that there is a fundamental difference between the way software code is accessed.

〔従来の技術〕[Conventional technology]

ソフトウェア産業は許可されていないユーザーによりソ
フトウェアがコピーされるという問題で悩ませられてい
る。ソフトウェアをコピーするという行為により、ソフ
トウェア製作者は、ソフトウェアがコピーされたことに
よりそのソフトウェアが売れないという損害を受けるこ
とになる。
The software industry is plagued by the problem of software being copied by unauthorized users. The act of copying software causes the software producer to suffer damage in that the software cannot be sold because the software has been copied.

本願発明者はコンピュータプログラムコードのコピー防
止法を数多く知っている。たとえば、特定ノコンピュー
タの一連番号にプログラムの実行を結びつける方法や、
コンピュータプログラムをフロッピーディスクに書込む
前にそのフロッピーディスクの所定の場所に物理的損傷
を加え、それからソフトウェアが、そのコンピュータプ
ログラムの実行を許す前に損傷を受けている部分の存在
を検証する方法が用いられる。
The inventors are aware of numerous methods for copy protection of computer program code. For example, how to link the execution of a program to the serial number of a specific computer,
A method involves physically damaging a floppy disk at a predetermined location before writing a computer program to the disk, and then having the software verify the existence of the damaged portion before allowing the computer program to run. used.

しかし、本願発明者は、許可されているユーザーと、許
可されていないユーザーがソフトウェアをアクセスする
やり方の固有の違いを利用する方法は知らない。
However, the inventors are unaware of how to take advantage of the inherent differences in the way authorized and unauthorized users access software.

〔発明の概要〕[Summary of the invention]

この明細書ではソフトウェアの無許可コピーを防止する
方法および装置について説明する。本発明は、許可され
ているユーザーがソフトウェアコードをアクセスするや
り方と、許可を受けていないユーザーがソフトウェアコ
ードをアクセスするやり方の基本的な違いを基にしてい
る。
This specification describes methods and apparatus for preventing unauthorized copying of software. The invention is based on the fundamental difference between the way software code is accessed by authorized users and the way software code is accessed by unauthorized users.

ソフトウェアコードを実行することを望んでいる許可を
受けているユーザーは、コードとともに出版された手続
きを参照してソフトウェアを実行できる。それらの手続
きを用いて許可されているユーザーはそのコードの実行
を開始する。コンピュータプログラムコードの実行は順
次には行われず、ソフトウェアの開発者がソースコード
を書いている時にそのソフトウェア開発者が知っている
ある非順次的な順序で行われる。しかし、その情報ハ、
コンピュータのソースコードをアクセスしない無許可の
ユーザーは利用できない。本発明は許可されているユー
ザーと、許可されていないユーザーがソフトウェアをア
クセスするやり方の基本的な違いを認識し、コードを保
護する方法にその違いを利用するものである。通常の非
順次的順序ではなくて順次的な順序でコードをアクセス
すると、データソースから読出される以後のデータを誤
シ発生器がめちゃめちゃにする。
Authorized users who wish to run software code may do so by reference to the procedures published with the code. Using those procedures, authorized users begin executing the code. Execution of computer program code occurs not sequentially, but in some non-sequential order known to the software developer at the time the software developer wrote the source code. However, that information
It is unavailable to unauthorized users who do not have access to the computer's source code. The present invention recognizes the fundamental differences in the way software is accessed by authorized and unauthorized users and exploits these differences in the way the code is protected. Accessing the code in a sequential order rather than the normal non-sequential order causes the error generator to mess up subsequent data read from the data source.

本発明の上記方法を利用するために、ソフトウェア開発
者はいくつかのわなアドレスを挿入する。
To utilize the above method of the present invention, the software developer inserts several trap addresses.

コードを正常な実行順序で実行するとそれらのわなアド
レスが常に飛越されるようにコードは選択された。コー
ドを始めから終シまで順次ダンプしようとしている無許
可のユーザーをわなに落すためにわなアドレスが用いら
れる。コードをそのように順次ダンプするとわなアドレ
スもダンプされる。わなアドレスがダンプされると誤シ
発生器が動作を開始させられる。そうすると、その誤り
発生器はデータソースから読出される以後の全てのデー
タをめちゃめちゃにする。コピーされているデータをど
のアドレスがめちゃめちゃにするかを無許可のユーザー
は知らない。したがって、保護されるコードの内容の無
許可コピーはむだになる。
The code was chosen so that executing the code in its normal execution order would always skip over those trap addresses. Trap addresses are used to trap unauthorized users attempting to dump code sequentially from beginning to end. Dumping the code sequentially like that also dumps trap addresses. When the trap address is dumped, the error generator is activated. The error generator then messes up all subsequent data read from the data source. Unauthorized users do not know which addresses will mess up the data being copied. Unauthorized copying of the contents of the protected code is therefore futile.

本発明の好適な実施例においては、コンピュータプログ
ラム目的コードを格納するために読出し専用メモ!J 
(ROM)またはそれに類似の記憶装置が用いられる。
In a preferred embodiment of the invention, read-only memory is used to store computer program object code! J
(ROM) or similar storage device is used.

コンピュータプログラム目的コードftROMに格納す
ることに加えて、本発明の方法により用いられる4つの
アレイを格納するために回路が設けられる。
In addition to storing computer program object code in the ftROM, circuitry is provided to store the four arrays used by the method of the invention.

わなブランチアレイと呼ばれる第1のプレイが、コンピ
ュータプログラムの正常な実行中に飛越すべき1組のア
ドレスを格納する。プリブランチアレイと呼ばれる第2
のプレイが、わなブランチアレイ中の各アドレスへブラ
ンチさせるアドレスを格納する。ブリブランチアレイは
、各プリプランチアドレスに対応し、かつそのプリプラ
ンチアドレスがアクセスされるたびにセットされる標識
も格納する。わなブランチアレイ中のアドレスがアクセ
スされるたびに本発明の回路は、わなプランチアドレス
に対応するプリプランチアドレスに対応する標識がセッ
トされたかどうかを判定する。
The first play, called the trap branch array, stores a set of addresses to jump to during normal execution of the computer program. The second one, called the pre-branch array,
stores the address to branch to each address in the trap branch array. The pre-launch array also stores an indicator that corresponds to each pre-launch address and is set each time that pre-launch address is accessed. Each time an address in the trap branch array is accessed, the circuit of the present invention determines whether the indicator corresponding to the pre-plant address corresponding to the trap branch address has been set.

後で実施例の項において詳しく説明するように、標識は
コードの正常な実行中にセットされるが、コードのコピ
ー中に行われるのと同様に、コー・ドの順次アクセス中
には標識はセットされない。
As explained in more detail later in the Examples section, the indicator is set during normal execution of the code, but the indicator is set during sequential access of the code, as is done during copying of the code. Not set.

本発明はクリヤブランチアレイと呼ばれる第3のアレイ
も開示する。そのクリヤブランチアレイは、対応するわ
なプランチアドレスがアクセスされた後でコードに対す
るアクセスを正常に実行中にアクセスされるアドレスを
有する。クリヤブランチアレイ中のアドレスをアクセス
した後で対応する標識フラッグをリセットする回路が設
けられる。
The present invention also discloses a third array called a clear branch array. The clear branch array contains addresses that are accessed during a successful access to code after the corresponding trap branch address is accessed. Circuitry is provided to reset the corresponding indicator flag after accessing an address in the clear branch array.

更に、コードの正常な実行中はアクセスされず、順次コ
ピー中はアクセスされるアドレスをROMの記憶空間中
に有し、ROM中に格納される第4のプレイも開示され
る。
Furthermore, a fourth play is also disclosed that is stored in the ROM and has an address in the ROM storage space that is not accessed during normal execution of the code but is accessed during sequential copying.

違法コピー者がコピー防止技術を破ってソフトウェアを
コピーすることを一層困難にするために種々の別の実施
例も開示される。
Various alternative embodiments are also disclosed to make it more difficult for pirates to defeat copy protection technology and copy software.

この明細書においては、コンピュータプログラムが許可
なしにコピーされることを防止する方法および装置につ
いて説明する。
This specification describes methods and apparatus for preventing unauthorized copying of computer programs.

本発明を完全に理解できるようにするために、以下の説
明においては、プログラムコード等のような特定の事項
の詳細について数多く述べである。
In the following description, numerous details are set forth, such as program code, in order to provide a thorough understanding of the present invention.

しかし、そのような特定の詳細事項なしに本発明を実施
できることが当業者には明らかであろう。
However, it will be apparent to one skilled in the art that the invention may be practiced without such specific details.

その他の場合には、本発明を不必要に詳しく説明して本
発明をあいまいにしないようにするために、周知の過程
および構造は説明しない。
In other instances, well-known processes and structures are not described in detail in order to avoid obscuring the present invention in unnecessary detail.

本発明は無許可コピーからコンビニーりソフトウエアを
保護するための方法を開示するものである。この方法は
、許可を受けているユーザーがコンピュータソフトウェ
アを正常に実行している間は、コンピュータソフトウェ
アのアクセスを非J[i次的に行うことを利用するもの
である。コードをコピーしようとしている無許可のユー
ザーはコードを順次アクセスしようとする。
The present invention discloses a method for protecting convenience store software from unauthorized copying. This method takes advantage of non-order access to the computer software while the computer software is normally running by an authorized user. An unauthorized user attempting to copy the code will attempt to access the code sequentially.

本発明の第1の面として、各第1のアドレスセットがR
OM内でアクセスされる時に標識をセットする方法と装
置が開示される。各第2のアドレスセットがアクセスさ
れると、対応する標識がセットされたかどうかを判定す
るためにチェックが行われる。プログラムコードの正常
な実行中に、第2のアドレスをアクセスする前に標識が
セットされている。しかし、コードが順次アクセスされ
るものとすると、標識はセットされず、本発明の回路に
よりコビーは阻止される。
As a first aspect of the invention, each first address set is R
A method and apparatus for setting an indicator when accessed within an OM is disclosed. As each second set of addresses is accessed, a check is made to determine whether the corresponding indicator has been set. During normal execution of the program code, the indicator is set before accessing the second address. However, if the code were to be accessed sequentially, the indicator would not be set and the circuit of the present invention would prevent coveys.

本発明の第2の面として、1組のアドレスをROM内に
保持する方法と装置が開示される。保持されているアド
レスは、ROMに格納されているコンピュータプログラ
ムの正常な実行中はアクセスされず、ROM内のコード
が)順次アクセスされた場合にアクセスされる。保持さ
れているメモリアドレスのアクセスを検出し、そのアク
セスが検出された後で、ROMに格納されているコンピ
ュータプログラムのコピーを阻止する回路が本発明によ
り開示される。
As a second aspect of the invention, a method and apparatus for maintaining a set of addresses in ROM is disclosed. The retained addresses are not accessed during normal execution of the computer program stored in the ROM, but are accessed when the code in the ROM is accessed sequentially. A circuit is disclosed by the present invention for detecting access to a retained memory address and preventing copying of a computer program stored in a ROM after the access is detected.

〔実施例〕〔Example〕

以下、図面を参照して本発明の詳細な説明する。 Hereinafter, the present invention will be described in detail with reference to the drawings.

本発明の上記の第1の面は添附図面を参照することによ
)良く理解できる。全てのコンピュータプログラムには
論理ブランチが存在するが、ソフトウェアの開発者ま九
はソースコードをアクセスするその他の者だけがブラン
チの正確な場所を知っている。無許可のユーザーがソー
スコードをアクセスしなければ、そのユーザーはブラン
チの場所を容易にアクセスすることはできない。コンピ
ュータソフトウェアを保護する本発明により開示された
1つの方法は、わなブランチを用いることによってであ
る。わなブランチの原理は、手続きAが既に実行された
時、およびそのような時にだけ、手続きBにおけるアド
レスをプログラムの実行中にプログラムB内のアドレス
をアクセスできることである。許可を得ていないユーザ
ーはその手続きの正しい実行順序を知らないから、コー
ドを順次コピーする時に、手続きAを最初にアクセスす
ることなしに手続きBをアクセスする。
The above first aspect of the invention can be better understood with reference to the accompanying drawings. All computer programs have logical branches, but only the software developer and others who have access to the source code know the exact location of the branches. Unless an unauthorized user accesses the source code, the location of the branch cannot be easily accessed by that user. One method disclosed by the present invention of protecting computer software is by using trap branches. The principle of a trap branch is that addresses in procedure B can be accessed during program execution if and only if procedure A has already been executed. An unauthorized user does not know the correct order of execution of the procedures, so when copying code sequentially, he accesses procedure B without accessing procedure A first.

最近の高次プログラミング言語においては、コンピュー
タプログラムにおける制御の流れを変更するためにいく
つかの構成概念を利用できる。そのような構成概念の例
がGo Toステートメントと、rtr THEN E
t、sgJ構造と、CASE、’(テートメントとを含
む。しかし、コンピュータグログラムにおいてブランチ
するために用いられる任意の数の構造を、本発明の要旨
を逸脱することなしに利用できる。
In modern high-level programming languages, several constructs are available to modify the flow of control in a computer program. Examples of such constructs are the Go To statement and the rtr THEN E
t,sgJ structure and the CASE,'( statement. However, any number of structures used for branching in computer programs may be utilized without departing from the spirit of the invention.

第1表は、本発明により利用できるコンピュータプログ
ラムコードの例を示す。第1表に示されているコードは
、本発明の面を実現するためにr IF THEN E
LSEJ構造を利用する。
Table 1 shows examples of computer program code that can be utilized in accordance with the present invention. The code shown in Table 1 is used to implement aspects of the invention.
Use LSEJ structure.

第1表 PROCEDURE X: //ITRAP BRANCHI/ PROCEDURE Y: IF(条件) TI(EN CALL puocgoouEX; /:
PREB肋種1γELSE CALL、puocgoo
ug x;2009      CA[、L  C0N
TINUE  PROCEDURE;  /、cLJC
^J1 BRANCH傘/第1表のコードの正常表実行
においては、行50゜におけるPROCEDURE X
は、行2003におけるr IF THENJステート
メントが先に実行されている場合、およびその場合に限
って、実行できる。
Table 1 PROCEDURE X: //ITRAP BRANCHI/ PROCEDURE Y: IF (condition) TI (EN CALL puocgoouEX; /:
PREB rib species 1γELSE CALL, puocgoo
ug x;2009 CA[,L C0N
TINUE PROCEDURE; /, cLJC
^J1 BRANCH umbrella/In the normal table execution of the code in Table 1, PROCEDURE
can be executed if and only if the r IF THENJ statement at line 2003 has been executed first.

本発明により利用できる回路のブロック図が示されてい
る添附図面を参照して、その回路はプリプランチアドレ
スアレイ102を有する。このプリプランチアドレスプ
レイは複数のプリプランチアドレス101と標識すなわ
ち「ゴーパイ(go−by)フラッグ」103を有する
。プリプランチアドレス101は第1表の行2003に
おけるr■p THENJ ステートメントのアドレス
のようなアドレスを有する。プリプランチアドレスアレ
イ102中のアドレス101がアクセスされるたびに、
対応するゴーパイフラッグ103がセットされる。
Referring to the accompanying drawings, which show a block diagram of a circuit that can be utilized in accordance with the present invention, the circuit has a pre-launch address array 102. The pre-launch address play has a plurality of pre-launch addresses 101 and an indicator or "go-by flag" 103. Pre-plant address 101 has an address such as the address of the rp THENJ statement in row 2003 of Table 1. Each time address 101 in pre-plant address array 102 is accessed,
A corresponding go-pai flag 103 is set.

本発明の回路はわなブランチアレイ104も有する。こ
のわなブランチアレイは、第1表の行5o。
The circuit of the present invention also includes a trap branch array 104. This trap branch array is row 5o of Table 1.

におけるPROCED[]Rg Xのような複数のわな
プランチアドレスを有する。わなプランチアドレスとい
うのは、プログラムコードの順番中のプリプランチアド
レスの前にわなプランチアドレスが通常生じたとしても
、対応するプリプランチアドレスをアクセスした後での
みコンピュータプログラムの正常な実行中にアクセスさ
れるアドレスである。
has multiple trap branch addresses such as PROCED[]RgX in . A trap-plant address is one that is accessed during normal execution of a computer program only after accessing the corresponding pre-plant address, even though the trap-plant address normally occurs before the pre-plant address in the program code sequence. This is the address.

わなプランチアドレス中のアドレスがアクセスされるた
びに1対応するゴーパイフラッグ103カセツトされた
かどうかを判定するためにチェックが行われる。ゴーバ
イフラッグ103がセットされたことは、対応するプリ
プランチアドレス101がアクセスされた、または「通
9すぎられた」ことを示す。
Each time an address in the trap-plant address is accessed, a check is made to determine if the corresponding go-pay flag 103 has been cassetted. Setting the go-by flag 103 indicates that the corresponding pre-launch address 101 has been accessed or "passed."

比較回路107が、わなブランチアレイ104中のアド
レスがプリブランチアレイ102のアクセスの前にアク
セスされたかどうかの前記比較を行うために、わなブラ
ンチアレイ104とプリブランチアレイ102へ結合さ
れる。比較回路101はROMlQ9でアクセスすべき
アドレスを入力として更に受ける。アドレスはアドレス
線108を介して比較回路107とROM109により
はぼ同時に受けられる。
A comparison circuit 107 is coupled to trap branch array 104 and pre-branch array 102 to perform the comparison of whether an address in trap branch array 104 was accessed prior to the access in pre-branch array 102 . Comparison circuit 101 further receives as input the address to be accessed in ROM1Q9. The address is received by comparison circuit 107 and ROM 109 via address line 108 almost simultaneously.

比較回路107は有効なアクセスが試みられたかどうか
を指示する回路を有する。比較回路107は、有効なア
ドレスアクセスが試みられたかどうかを指示するために
ROM109へ結合される。有効なアクセスが行われた
ことを比較回路107が指示している限j5、ROM1
09はアドレス入力に応答して有効なデータ出力を線1
11へ供給する。
Comparison circuit 107 includes circuitry that indicates whether a valid access has been attempted. Comparison circuit 107 is coupled to ROM 109 to indicate whether a valid address access has been attempted. As long as the comparison circuit 107 indicates that a valid access has been made, j5, ROM1
09 outputs valid data on line 1 in response to address input.
11.

比較回路107は誤り機能発生回路110へも結合され
る。誤シ機能発生回路11Gへは、わな状態または誤シ
状態が生じたことを示す比較回路107からの信号が供
給される。その信号の受信に応答して、誤シ機能発生回
路110は、ROM109により線111へ供給された
データ出力をめちゃめちゃKする出力を供給する。
Comparison circuit 107 is also coupled to error function generation circuit 110. A signal from the comparator circuit 107 indicating that a trap state or an error state has occurred is supplied to the false function generating circuit 11G. In response to receiving that signal, error function generating circuit 110 provides an output that disrupts the data output provided by ROM 109 on line 111.

本発明の一実施例においては、誤シ機能発生回路110
は、データ出力をめちゃめちゃにするために用いられる
乱数も入力として受ける。一般に、誤シ機能発生回路は
、 ERRORFtlNCTION (現在のデ〜り、現在
のアドレス、プログラム可能な入力) のような機能を実現できる。
In one embodiment of the present invention, the error function generation circuit 110
also takes as input a random number that is used to mess up the data output. Generally, the error function generation circuit can implement functions such as ERRORFtlNCTION (current date, current address, programmable input).

多数のプログラム可能な入力が出力値の復号を−層困難
にする。ROM109からのデータ出力をめちゃめちゃ
にしたり、その個使用できなくするどのような機能も本
発明においては有用であることが当業者には明らかであ
ろう。
The large number of programmable inputs makes decoding the output values extremely difficult. It will be apparent to those skilled in the art that any feature that disrupts or renders the data output from ROM 109 unusable is useful in the present invention.

本発明の好適な実施例は、プリブランチアレイと比較回
路107へ結合されたクリヤブランチアレイ106も有
する。このクリヤブランチアレイ106は、第1表の行
2009における[CALLCoNTINUEpuoc
EouhgJステートメントのアドレスのような、プリ
ブランチアレイ102へのエントリに対応する複数のア
ドレスを有する。クリヤブランチアレイ106内のアド
レスがアクセスされるたびに、対応するゴーバイフラッ
グ103がリセットされる。正常表実行屓序でコードが
アクセスされたとすると、わなブランチプレイアドレス
をアクセスし九後でクリヤアレイアドレスがアクセスさ
れる。
The preferred embodiment of the present invention also has a clear branch array 106 coupled to the pre-branch array and comparator circuit 107. The clear branch array 106 in row 2009 of Table 1 is [CALLCoNTINUEpuoc
It has multiple addresses corresponding to entries in the pre-branch array 102, such as the address of the EouhgJ statement. Each time an address in clear branch array 106 is accessed, the corresponding go-by flag 103 is reset. Assuming that the code is accessed in normal table execution order, the trap branch play address is accessed and the clear array address is accessed 9 seconds later.

本発明においてコピーを阻止するための第2の手段とし
て、わなアドレスアレイ105を利用できる。第■表は
、わなアドレスアレイ105に関連して本発明により利
用できるコンピュータグログラムコー ドの例を示す。
A trap address array 105 can be used as a second means for preventing copying in the present invention. Table 1 shows an example of computer programming code that can be utilized in accordance with the present invention in connection with trap address array 105.

第 ■ 表 行番号 ステートメント 注 釈 1000  1F  1=I   X:UNtVER8
AL TRUTH 1001THEN DUMY vhRxAnLE=o:
1002  ELSE DUMY VARIABIJ=
L  〆、 TRAP ADDRESS */わなアド
レスアレイ105はROM109のアドレス空間に、プ
ログラムの正常な実行中はアクセスされない複数のアド
レスを有する。たとえば、第■表において、行1000
におけるステートメント[IF 1=IJを実行すると
、行1001におけるステートメントrTHEN DU
MY VARIABLE =OJが実行される結果に常
になる。正常なプログラム実行中はステートメントra
Lsg DUMY vpnxhsr、E=x」は決して
実行されないが、プログラムコードの順次コピー中にそ
れはアクセスされるであろう。行1002における:X
f−トメ7ト「THENDUMYvARIABLE =
IJ のアドレスをアクセスすると、比較回路107が
誤り状態を合図し、上記のように線111へ供給された
データ出力をめちゃめちゃにする結果となる。
Chapter ■ Table line number statement annotation 1000 1F 1=I X:UNtVER8
AL TRUTH 1001 THEN DUMY vhRxAnLE=o:
1002 ELSE DUMY VARIABJ=
L 〆, TRAP ADDRESS */Trap address array 105 has a plurality of addresses in the address space of ROM 109 that are not accessed during normal execution of a program. For example, in Table ■, row 1000
When the statement [IF 1=IJ is executed, the statement rTHEN DU at line 1001
MY VARIABLE = always results in OJ being executed. During normal program execution, the statement ra
Lsg DUMY vpnxhsr, E=x'' is never executed, but it will be accessed during sequential copying of program code. :X in line 1002
f-Tome 7 “THEENDUMYvARIABLE =
Accessing the address of IJ will result in comparator circuit 107 signaling an error condition and messing up the data output provided on line 111 as described above.

第1図に示されている回路は個別部品を用いて実現でき
、またはゲートアレイあるいはそれに類似の装置を用い
て実現できる。更に、ROM109は通常の読出し専用
メモリ、または電気的に消去可能な読出し専用メモリ 
(PROM)、電気的に消去可能でプログラム可能な読
出し専用メモ’) (EEPROM)、プログラム可能
な読出し専用メモリ(PROM)、マスクされたROM
あるいはフラッシュEFROMのような類似の装置を含
むことができる。
The circuit shown in FIG. 1 can be implemented using discrete components or can be implemented using a gate array or similar device. Additionally, the ROM 109 may be a normal read-only memory or an electrically erasable read-only memory.
(PROM), Electrically Erasable Programmable Read Only Memory (EEPROM), Programmable Read Only Memory (PROM), Masked ROM
Alternatively, it may include similar devices such as flash EFROM.

上記実施例とは異って、保護を改善するためにいくつか
の方法と装置を利用できる。たとえば、第1のプリブラ
ンチアレイがわなブランチアレイに対応するエントリを
有し、第2のプリプランデアレイが第4のプリブランチ
アレイに対応するアドレスを有し、第3のブリブランチ
アレイカ第2のプリブランチアレイに対応するアドレス
を有するように、ネステツドプリプランチアレイを利用
できる。各プリブランチアレイはアドレスとゴーバイフ
ラッグを有する。第2のプリブランチアレイ中のアドレ
スに対するどのようなアクセスも、!3のプリブランチ
アレイ中の対応するゴーバイフラッグがセットされた時
だけ有効である。第1のプリブランチアレイ中のアドレ
スに対するどのようなアクセスも、第2のプリブランチ
アレイ中の対応するゴーバイフラッグがセットされた時
だけ有効である。わなブランチアレイ中のアドレスに対
するどのよう表アクセスも、第1のプリブランチアレイ
中の対応するゴーバイフラッグがセットされた時だけ有
効である。
Different from the embodiments described above, several methods and devices are available to improve protection. For example, a first pre-branch array has an entry corresponding to a trap branch array, a second pre-branch array has an address corresponding to a fourth pre-branch array, and a third pre-branch array has an entry corresponding to a fourth pre-branch array. A nested pre-branch array can be used to have addresses corresponding to two pre-branch arrays. Each pre-branch array has an address and a go-by flag. Any access to an address in the second pre-branch array! Valid only when the corresponding go-by flag in the pre-branch array of 3 is set. Any access to an address in the first pre-branch array is valid only when the corresponding go-by flag in the second pre-branch array is set. Any table access to an address in the trap branch array is valid only when the corresponding go-by flag in the first pre-branch array is set.

第2の例として、わなブランチは1つのアドレスの代υ
にある範囲のアドレスを有することができる。
As a second example, a trap branch is a substitute for one address υ
can have a range of addresses.

改善した保護方法および保護装置の第3の例は、無効な
アクセスが行われた後でランダムな数のメモリアクセス
のためにデータをめちゃめちゃにすることを遅らせるこ
とを含む。
A third example of an improved protection method and device includes delaying messing up data due to a random number of memory accesses after an invalid access has been made.

第4の例として、誤り機能発生回路110は自己破壊機
構を有する。その第4の例はコピー保護技術の復号を一
層困難にする。自己破壊機能はいくつかのやυ方で実現
できる。たとえば、ggPROMにおいては、自己破壊
機構は全てのEEFROMコードを消去するアレイ信号
をアサートすることにより実現できる。マスクされたR
OMにおいては、電子ヒユーズを飛ばして、制御線その
他の重要な装置を永久に切離すというように回路に不可
逆的な損傷を加えることにより、自己破壊を実現できる
As a fourth example, the error function generating circuit 110 has a self-destruct mechanism. That fourth example makes decoding of copy protection techniques even more difficult. The self-destruct function can be implemented in several ways. For example, in a ggPROM, a self-destruct mechanism can be implemented by asserting an array signal that erases all EEFROM code. masked R
In OM, self-destruction can be accomplished by irreversibly damaging the circuit by blowing an electronic fuse, permanently disconnecting control lines and other critical equipment.

そのような自己破壊機構はn回のわな警報が検出された
後でのみ起動されるように設計できる。
Such a self-destruct mechanism can be designed to be activated only after n trap alarms have been detected.

本発明により開示されているように、無許可を検出する
ためにプリブランチアレイとわなブランチアレイを使用
すること、およびわなアドレスアレイを使用することは
、たがいに独立に、またはたがいに関連して動作させる
ことができる。それらの機構をたがいに関連して実現す
ると無許可ユーザーの作業が一層困難になる。
As disclosed by the present invention, the use of pre-branch arrays and trap branch arrays and the use of trap address arrays to detect unauthorizedness may be performed independently or in conjunction with each other. It can be made to work. Implementing these mechanisms in conjunction with each other makes the work of unauthorized users even more difficult.

以上、コンピュータソフトウェアの無許可アクセスを検
出および阻止する方法および装置について説明した。
Thus, methods and apparatus for detecting and preventing unauthorized access of computer software have been described.

【図面の簡単な説明】[Brief explanation of the drawing]

第1図は本発明の回路のブロック図である。 101・・・・比較回路、109・・・・ROM。 110・・・・誤シ機能発生回路。 FIG. 1 is a block diagram of the circuit of the present invention. 101... Comparison circuit, 109... ROM. 110...Error function generation circuit.

Claims (6)

【特許請求の範囲】[Claims] (1)(a)媒体に格納されているコンピュータプログ
ラムの正常な実行順序でアクセスされている前記媒体中
のアドレスを判定する過程と、 (b)実行順序でアクセスされているアドレスの前記判
定に応答して、有効なアクセスが生じたことを示す信号
を供給する過程と、 を備える、媒体に格納されているコンピュータプログラ
ムの無許可アクセスを検出する方法において、 (c)順次アクセスされている前記媒体中のアドレスを
判定する過程と、 (d)順次アクセスされているアドレスの前記判定に応
答して、無効なアクセスが生じたことを示す信号を供給
する過程と、 を備えることを特徴とする媒体に格納されているコンピ
ュータプログラムの無許可アクセスを検出する方法。
(1) (a) determining the addresses on the medium that are accessed in the normal execution order of a computer program stored on the medium; and (b) the step of determining the addresses that are accessed in the execution order of the computer program stored on the medium; responsively providing a signal indicating that a valid access has occurred; (d) providing a signal indicating that an invalid access has occurred in response to the determination of addresses being sequentially accessed; A method for detecting unauthorized access of a computer program stored on a medium.
(2)少くとも1つのプリプランチアドレスを格納し、
かつ前記プリプランチアドレスに一致して、前記プリプ
ランチアドレスがアクセスされたことを示す少くとも1
つの標識を格納するプリプランチアレイメモリ手段と、 少くとも1つのわなプランチアドレスを格納するわなプ
ランチアレイメモリ手段と、 アドレス入力線およびデータ出力線へ結合され、前記コ
ンピュータを格納する読出し専用メモリと、前記アドレ
ス入力線と、前記プリプランチアレイメモリ手段と、前
記わなプランチアレイメモリ手段とに結合され、前記プ
リプランチアドレスと前記わなプランチアドレスを、前
記アドレス入力線へ供給されたアドレスと比較する比較
器手段と、を備えることを特徴とするコンピュータプロ
グラムの無許可アクセスを検出する回路。
(2) storing at least one pre-launch address;
and at least 1 corresponding to the pre-launch address, indicating that the pre-launch address has been accessed.
a pre-plant array memory means for storing at least one trap-plant address; a read-only memory coupled to an address input line and a data output line for storing said computer; a comparator coupled to the address input line, the pre-plant array memory means, and the trap-plant array memory means for comparing the pre-plant address and the trap-plant address with an address provided to the address input line; A circuit for detecting unauthorized access of a computer program, comprising: means for detecting unauthorized access of a computer program.
(3)少くとも1つのわなプランチアドレスを格納する
わなアドレスアレイメモリ手段と、 アドレス入力線およびデータ出力線へ結合され、前記コ
ンピュータプログラムを格納する読出し専用メモリと、 前記アドレス入力線と、前記わなアドレスアレイメモリ
手段とに結合され、前記わなアドレスを、前記アドレス
入力線へ供給されたアドレスと比較する比較器手段と、 を備えることを特徴とするコンピュータプログラムの無
許可アクセスを検出する回路。
(3) a trap address array memory means for storing at least one trap plant address; a read-only memory coupled to an address input line and a data output line for storing said computer program; and said address input line and said trap branch address; and comparator means coupled to address array memory means for comparing said trap address with an address provided to said address input line.
(4)媒体中の第1のアドレス場所がアクセスされた時
を検出する過程と、 前記第1のアドレス場所がアクセスされたことを指示す
るために標識をセットする過程と、前記媒体中の第2の
アドレス場所がアクセスされた時を検出する過程と、 前記第2のアドレス場所がアクセスされた時に、前記標
識をチェックして、前記第1のアドレス場所がアクセス
されたかどうかを判定する過程と、を備えることを特徴
とする媒体に格納されているコンピュータプログラムの
無許可アクセスを検出する方法。
(4) detecting when a first address location in the medium is accessed; and setting an indicator to indicate that the first address location is accessed; detecting when a second address location is accessed; and checking the indicator when the second address location is accessed to determine whether the first address location is accessed. A method for detecting unauthorized access of a computer program stored on a medium, comprising:
(5)媒体中の第1のアドレス場所がアクセスされた時
を検出する過程と、 前記第1の場所をアクセスしたのに応答して前記コンピ
ュータプログラムが前記媒体から出力された時にそのコ
ンピュータプログラムを変更する過程と、 を備えることを特徴とする媒体に格納されているコンピ
ュータプログラムの無許可アクセスを検出し、阻止する
方法。
(5) detecting when a first address location on a medium is accessed; and detecting when the computer program is output from the medium in response to accessing the first location; 1. A method for detecting and preventing unauthorized access of a computer program stored on a medium, comprising the steps of:
(6)読出し専用メモリ(ROM)と、電気的に消去可
能な読出し専用メモリ(EEPROM)と、消去可能か
つプログラム可能な読出し専用メモリ(EPROM)と
、プログラム可能な読出し専用メモリ(PROM)と、
マスクされたROMとを含むROMファームウェア装置
の群から選択された装置に存在するコンピュータプログ
ラム目的コードの無許可コピーを検出し、阻止する方法
において、 コンピュータプログラム目的コードの実行中に第2の場
所より前に第1の場所がアクセスされるように、かつ、
前記コンピュータプログラム目的コードの順次アクセス
中に前記第1の場所の前に前記第2の場所がアクセスさ
れるようにコンピュータプログラムを設計する過程と、 コンピュータプログラム目的コードの実行中に第3の場
所がアクセスされないが、前記コンピュータプログラム
目的コードの順次アクセス中にアクセスされるように前
記コンピユータプログラム目的コードを構成する過程と
、 前記装置における前記第1の場所がアクセスされた時を
検出する過程と、 前記第1の場所がアクセスされたことを示すために標識
をセットする過程と、 前記装置における前記第2の場所がアクセスされた時を
検出する過程と、 前記第2の場所がアクセスされた時に前記標識をチェッ
クして、前記第1の場所がアクセスされたかどうかを判
定する過程と、 前記第2の場所がアクセスされ、かつ前記第1の場所が
アクセスされたことを示すために標識がセットされない
とすると、前記装置から出力された前記情報を変更する
過程と、 前記第3の場所がアクセスされたとすると、前記装置か
ら出力された前記情報を変更する過程と、を備えること
を特徴とするROMファームウェア装置の群から選択さ
れた装置に存在するコンピュータプログラム目的コード
の無許可コピーを検出し、阻止する方法。
(6) read-only memory (ROM), electrically erasable read-only memory (EEPROM), erasable and programmable read-only memory (EPROM), and programmable read-only memory (PROM);
in a method for detecting and preventing unauthorized copying of computer program purpose code residing in a device selected from a group of ROM firmware devices comprising a masked ROM; such that the first location is accessed before, and
designing a computer program such that the second location is accessed before the first location during sequential access of the computer program object code; and a third location is accessed during execution of the computer program object code. configuring the computer program object code so that it is not accessed but is accessed during sequential accesses of the computer program object code; detecting when the first location on the device is accessed; setting an indicator to indicate that a first location has been accessed; detecting when the second location on the device is accessed; and detecting when the second location is accessed. checking a sign to determine whether the first location has been accessed; and the second location has been accessed and no sign is set to indicate that the first location has been accessed. If the third location is accessed, the ROM is characterized by comprising: a step of changing the information output from the device; and a step of changing the information output from the device if the third location is accessed. A method for detecting and preventing unauthorized copying of computer program purpose code residing on a device selected from a group of firmware devices.
JP1142284A 1988-07-11 1989-06-06 Method and circuit for detecting permission-free access of computer program stored in medium Pending JPH0245829A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US21775588A 1988-07-11 1988-07-11
US217,755 1988-07-11

Publications (1)

Publication Number Publication Date
JPH0245829A true JPH0245829A (en) 1990-02-15

Family

ID=22812379

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1142284A Pending JPH0245829A (en) 1988-07-11 1989-06-06 Method and circuit for detecting permission-free access of computer program stored in medium

Country Status (1)

Country Link
JP (1) JPH0245829A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588137A (en) * 1993-06-02 1996-12-24 Kawasaki Steel Corporation Data flow control apparatus and memory apparatus
JPH09282156A (en) * 1996-04-17 1997-10-31 Ricoh Co Ltd Program protection device and program protection method
JP2009271623A (en) * 2008-05-01 2009-11-19 Mega Chips Corp Semiconductor storage device and computer system
US8307354B2 (en) 2004-06-28 2012-11-06 Panasonic Corporation Program creation device, program test device, program execution device, information processing system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588137A (en) * 1993-06-02 1996-12-24 Kawasaki Steel Corporation Data flow control apparatus and memory apparatus
JPH09282156A (en) * 1996-04-17 1997-10-31 Ricoh Co Ltd Program protection device and program protection method
US8307354B2 (en) 2004-06-28 2012-11-06 Panasonic Corporation Program creation device, program test device, program execution device, information processing system
JP2009271623A (en) * 2008-05-01 2009-11-19 Mega Chips Corp Semiconductor storage device and computer system

Similar Documents

Publication Publication Date Title
US8397042B2 (en) Secure memory interface
US6049876A (en) Data processing system and method which detect unauthorized memory accesses
EP2842041B1 (en) Data processing system and method for operating a data processing system
JP2001306400A (en) Semiconductor storage device, its control device and electronic equipment
US20080109904A1 (en) Apparatus and method for managing secure data
US5155829A (en) Memory system and method for protecting the contents of a ROM type memory
EP0602867A1 (en) An apparatus for securing a system platform
US6874069B2 (en) Microcontroller having an embedded non-volatile memory array with read protection for the array or portions thereof
WO1993009495A1 (en) Computer memory protection
KR0132009B1 (en) Semiconductor integrated circuit with a data protection circuit
JPH0245829A (en) Method and circuit for detecting permission-free access of computer program stored in medium
US11055237B2 (en) Method of access to a memory
US20030005241A1 (en) Write protect method
CN113032737B (en) Software protection method and device, electronic equipment and storage medium
US5687354A (en) Memory system and method for protecting the contents of a ROM type memory
JP2006053760A (en) Buffer overflow vulnerability analysis method, data processor, analysis information providing device, program for extracting analysis information, and program for providing analysis information
JPS6074059A (en) Access control system for storage device
JPS62160554A (en) Device for preventing wrong access to memory
US20230076714A1 (en) Integrated circuit (ic) and electronic apparatus
JPH10240623A (en) Micro computer with read protection function
JPH01180656A (en) Memory protecting device
JPH0822419A (en) Miswriting prevention system
JP2546411B2 (en) Cache memory device
JP3047839B2 (en) Single-chip microcomputer
JPS63279341A (en) Memory integrated circuit