软件保护方法及装置的制作方法

文档序号:6408133阅读:171来源:国知局
专利名称:软件保护方法及装置的制作方法
技术领域
本发明涉及电脑程序的软件保护方法与装置,特别是指保护电视游戏机的游戏软件程序以防备仿冒复制的方法与装置。
在知识产权未受充分尊重的今日,电子商品的防止抄袭仿冒是一个极为重要的课题。目前广泛使用的电视游戏机系统(TV gamesystem)使用固定而标准化的硬件主机,配以多样性的游戏机软件卡,按使用者的喜好,可以选择各种游戏软件进行游戏。典型的游戏软件存贮在存储器集成电路卡(memory IC catridges)之中,可以让使用者很容易地在电视游戏机的硬件主机上进行调换,以便变换游戏种类与内容。
电视游戏机的软件程序数据是储存于集成电路卡中,因为是由标准形式的硬件主机通过总线检索而执行的,其程序内容数据格式等也是固定的形态,因此其游戏程序内容很容易被仿冒侵权者所抄袭篡改。由于游戏软件在开发时需要投入大量的人力物力,花费长时间进行开发的工作,而仿冒盗用复制者却在花费很少的功夫之后予以大量复制,低价贩卖图利,打击了原版游戏软件的销售,因此本技术领域中的一个重大课题即是如何保护软件程序内容免受解密抄袭。
就程序软件的保护而言,在电视游戏机方面,日本的任天堂公司(Nintendo)的家庭电脑(FamiCOM)与超级家庭电脑(Super Fami-COM)采用了微处理器作为保护的装置,分别设置于游戏机主机与软件卡中。当系统开机时,两个微处理器便会互相比较校对,如有不符合的情形便停止游戏软件的运行。不过,此种方法虽然解密要花费较大的功夫,但只要被解密一次,便可以被应用于其它种类的游戏软件卡上。
另一方面,日本的SEGA游戏机电脑系统则是在游戏卡的存储器中加入一段密码,在系统开机时,主机的基本输入输出程序会检查该段密码是否正确,并会出现一个商标标记,试图利用商标来阻挡仿冒者。虽然其密码是经过特别处理的,要解密并不容易,但光凭商标仍不足以阻挡打定主意要侵权的仿冒者。
此外,日本的NEC公司的PC Engine游戏机电脑系统则在其软件程序卡中的存储器集成电路上采用较为特殊的制造过程,其存储器的存取速度比一般正常的存储器集成电路快,故刚推出时没有人可以仿制,但在一段时间之后,快速读取的存储器集成电路已相当普遍,故其保护作用亦丧失了。
在个人电脑方面,游戏软件的保护方式,在游戏软件盛行的几种个人电脑的范围中,由早期的苹果二型(AppleII)到广泛使用的IBM PC,保护软件的方法就是多样化了。不过,这些软件保护的方式仍可大致归类如下。
首先,存储在软盘上的游戏软件以在磁盘上进行超过平常标准的格式化方式,例如弱磁区,“无缝锁”等加以保护,以使得磁盘不容易为一般人所复制。此种方法虽然简单而成本低廉,但无法防止专业仿制盗版者的盗版行为。另一方面,此种在磁盘上动手脚的作法会有磁盘驱动器兼容性问题,磁盘易于损坏,以及由于软件的运行会需要检索软盘驱动器而使整个速度变慢等的副作用。
其次,本技术领域中亦有人使用所谓“锁卡”(“key card”)的硬件接口卡,插置于诸如IBM PC电脑的系统扩展槽中,以进行软件程序的保护。此种锁卡的优点在于其复制不容易,而且运行的速度也快,不至于因加入锁卡而使软件程序的进行缓慢下来。其缺点则为,在IBM PC一类的电脑中,此种锁卡的装置必须要将系统主机的外壳打开才能进行,其安装较不方便。另外,此种锁卡亦可能在不同厂牌的主机之间发生兼容性的问题。并且,诸如笔记本型的电脑也无法使用此种接口卡式的装置。
另有一种方式,在IBM PC的环境中有一种与前述锁卡相似的保护锁“KeyPro”装置,插置于系统的并行端口上,执行与前述锁卡相似的程序软件保护功能。目前广泛使用的技术中常见的KeyPro类型保护装置包括有趋势科技公司的T-Lock,Aladdin Security公司的HASP,Rainbow Technologies公司的Sentinel等。此类KeyPro由于是安装于系统的并行端口上,因此安装容易,也不占用并行端口,因此是一种方便而实际的保护硬件方式。不过,由于KeyPro仍会增加硬件方面的成本,就一般低价格的游戏软件程序而言,由于其成本比例较高,因此并不适用。此种KeyPro一般只见于价格高昂的专业软件,诸如CAD/CAM等软件的范围之中。
因此keycard与KeyPro是属于较有效的软件程序保护方式,其复制需有较高的专业知识,因而较不容易,而且就游戏软件而言,由于电视游戏机的游戏卡插槽是暴露在外的,因此并无安装困难的问题。
虽然KeyPro是属较为有效的软件程序保护装置,但由于其保护软件的基本原理是利用储存于KeyPro中的密码数据来进行软件程序的保护。游戏软件程序在执行之前,系统必须要检查KeyPro中的密码是否与软件程序中的部分符合。若检查的结果符合的话,系统便正常执行程序,若不符合,软件程序的执行便被终止。不过,KeyPro所使用来储存密码的是设置于KeyPro内的一个电擦除可编程序只读存储器集成电路(EEPROM IC)。由于这种串行读取式的电擦除可编程序只读存储器集成电路多为标准形式的集成电路,因此要给予复制并不特别困难。
在软件程序防止仿冒盗版保护,特别是保护大量流通的游戏机游戏软件程序的本技术领域范围之中,并没有真正无法破解的保护方法。所有的保护方式间的一个基本差别只是破解保护的难易程度,破解时间的早晚,破解所花费代价大小问题而已。因此软件程序保护的要点,由另一个角度来看,便是使破解所需花费代价加大,这包含了破解时间的加长,仿制的成本加高,这样便可以达到使仿冒者却步,减少盗版的目标了。
因此,本发明的一个目的是提供一种电脑程序的软件保护方法与装置,特别是电视游戏机的游戏软件程序保护防止仿冒复制的方法与装置,可以利用多重交叉比较的方式来检查游戏软件程序卡之中所包含的软件保护装置是否为原设计的软件保护装置,并且以比较结果作为游戏软件程序执行的依据。
本发明的其它目的与特点将配合附图在后面进行详细说明。附图之中

图1为一种典型的电视游戏机电脑系统的电路方块示意图2为本发明软件保护装置一较佳实施例的电路方块示意图;图3为本发明软件保护装置一较佳实施例中数列发生器的电路图;图4与图5为图3中的数列发生器所产生的两组随机数列表的举例。
下面就本发明较佳实施例予以说明。
虽然本发明的内容同样可以适用于其它例如电脑辅助设计等所有需要保护的软件应用领域中,本发明的软件保护方法及装置仍将以电视游戏机系统为例进行说明。
首先参考图1中所显示的典型电视游戏机系统的电路方块示意图。一部典型的电视游戏机系统可被区分为两个主要的部分,亦即运行软件游戏程序的游戏主机10,以及储存游戏软件的游戏软件卡30。游戏主机10的典型结构主要包含了中央处理器CPU 14,视频处理器12,音频处理器16,存储器18,以及电视信号合成装置19。另一方面,游戏软件卡30则通常包含有储存软件程序的存储器32,以及某些系统有、某些系统没有的软件保护装置34。
图2为本发明一较佳实施例的电路方块示意图。本发明此一实施例的软件保护装置34,当装置在一个游戏软件卡(例如图1的30)之中,作为储存于存储器(例如图1的32)中的软件程序码的保护装置时,接收游戏电脑系统所传送来的地址20,数据22与控制信号24,以便执行软件程序码的保护功能。利用此结构游戏软件检查其所产生的数列信号,而检查结果被用作游戏软件运行的参考。
本发明此实施例结构组成包括有一个数列信号发生装置52,在每一个时间脉冲的触发之下会产生一个数列信号;一个选择装置54,用以选定数列信号的产生方式;以及一个接口电路50,提供与主系统之间的连接。
在这些组成元件之中,选择装置54可以是一个寄存器,或其它的存储装置,诸如可擦可编程序只读存储器或电擦除可编程序只读存储器等,或者其它公知应用于集成电路的可编程序方式,诸如压焊选择(bonding option)、金属线选择(metal option)、码植入(code implant)等。接口电路50之中则包含了解码装置、数据缓冲器以及其它装置。
图3中显示本发明一较佳实施例中数列发生器的电路图。此数列发生器52为一个5位的随机数发生装置,其中五个D型触发器76、78、80、82与84依次串接起来,即,第一个触发器76的输出Q被接至下一个触发器78的输入D。所有的五个触发器的时钟脉冲输入CK以及输入设置S分别共同连接起来,并分别由CK 64与SET 65信号所驱动。触发器80与82的输出被接至一个异或逻辑门(XOR gate)74的输入,触发器82与84的输出则被接至另一个异或逻辑门72的输入。两个异或逻辑门72与74的输出之中的一个,经由一个多路转换器70,在选择装置54的控制之下,被反馈到第一个触发器76的D输入。
设置信号SET 65可利用对所有五个触发器的S输入设置施加一个正信号,而将随机数发生装置52的初始值设定为11111,并利用时钟脉冲信号CK 64来进行触发,使之产生下一个数值。此随机数发生装置52可在选择装置54的控制之下,以两种模式之一工作。其中之一是选定Q3与Q4作为异或的结果,而另一模式则选定Q2与Q3作为异或的结果。
图4与图5为分别列出了图3中本发明数列发生器52所产生的两种模式的随机数的列表。
本发明因此便可以利用在游戏软件程序之中包含一段具有检查作用的程序,利用读取数列发生器52所产生的数列,并加以特定处理之后再进行比较以判定特定硬件逻辑电路是否存在。之后,再依判定的结果而决定游戏软件程序是否应该继续执行。
例如,本发明的软件保持方法可能包含有如下步骤。首先,在游戏软件程序之中包含了所要检查比较的数列数据,其次,将数列发生器52的初始状态设定为一种已知的确定状态,接着读取数列发生器52根据给定的初始状态所产生出来的数列,最后再将所读取的数列与前面存放于软件程序之中的数列数据加以比较,查看是否吻合,其具体步骤包括有下列几种1.(a)在程序内包含所要检查的数列数据;(b)将数列发生装置设置为一预定的状态来进行初始设置;(c)中央处理器在程序控制下读取数列发生装置产生的数列,检查是否与存放在程序中的数列数据吻合,以作为软件执行的依据。
其中,该吻合条件可为所读取的数列若部分吻合存放在程序中的数列数据,即判定符合该吻合条件。若不符合该吻合条件,即令软件停止运行或令软件错误运行。
2.(a)在程序内包含一段程序码,用以产生数列数据;(b)将数列发生装置设置为一预定的状态来进行初始设置;(c)中央处理器在程序控制下读取数列发生装置产生的数列,检查是否与程序所产生的数列数据吻合,以作为软件运行的依据。
其中该吻合条件可为所读取的数列若部分吻合程序所产生的数列数据,即判定符合该吻合条件。若不符合该吻合条件,即令软件停止运行或令软件错误运行。
3.(a)在程序内包含一段程序码用以对一组数列数据进行预定的运算处理;(b)在程序内包含一段数据,作为该运算结果的比较之用;(c)将数列发生装置设置为一预定的状态来进行初始设置;与(d)中央处理器在程序控制下读取数列发生装置产生的数列并进行运算,再检查运算的结果是否与程序所预计的结果吻合,以作为软件运行的依据。
其中该吻合条件可为所运算的结果若属于某一预定范围内,即判定符合该吻合条件。
或所运算的结果若具有某一预定特征,即判定符合该吻合条件。
其中该预定特征可为奇数或偶数。
若不符合该吻合条件,即令软件停止运行或令软件错误运行。
4.(a)在程序内包含一段程序码,以便计算一组数列数据中某一预定数字出现的频率;(b)在程序内包括一段数据,作为预设的结果比较之用;(c)将数列发生装置设置为一预定的状态来进行初始设置;(d)中央处理器在程序控制下读取发生装置产生的数列并计算某一预定数字出现的频率,再检查其结果是否与程序所预计的结果吻合,作为软件运行的依据。
其中该吻合条件可为所计算的频率结果若属于某一预定范围内,即判定符合该吻合条件。

所计算的频率结果若具有某一预定特征,即判定符合该吻合条件。
其中该预定特征可为奇数或偶数。
若不符合该吻合条件,即令软件停止运行或令软件错误运行。
5.(a)在程序内包含一段程序码,以便计算一组数列数据中某一预定数字出现的间隔;(b)在程序内包含一段数据,作为预设的结果以供比较之用;(c)将数列发生装置设置为一预定的状态来进行初始设置;(d)中央处理器在程序控制下读取数列发生装置产生的数列并计算某一预定数字出现的间隔,再检查其出现间隔是否与程序所预设的结果吻合,以此作为软件运行的依据。
其中该吻合条件可为该出现间隔若属于某一预定范围内,即判定符合该吻合条件。
或该出现间隔若具有某一预定特征,即判定符合该吻合条件。
其中该预定特征可为奇数或偶数。
若不符合该吻合条件,即令软件停止运行或令软件错误运行。
6.(a)在程序内包含一段加密处理的程序码或数据;(b)将数列发生装置设置为一预定的状态来进行初始设置;(c)中央处理器在程序控制下读取数列发生装置产生的数列,以便将加密过的程序码或数据予以解密,因而可以利用解密后的数据,供后续程序运行之用;或者可以运行解密后的程序码。
7.(a)在程序内包含一段程序码,以便计算某些预定数字是否出现,或某些数列串是否出现;(b)将数列发生装置设置至一预定的状态来进行初始设置;
(c)中央处理器在程序控制下读取数列发生装置产生的数列,当预设的某些数字或某些数列串出现时,即相应运行某些预定的功能。
其中步骤所执行的功能可为中央处理器内部的指令,包括有ADD、SUB、XOP或JUMP等指令,或可以是运行一段预定的子程序。
上述多种步骤,若比较的结果吻合,表示软件保护装置34并未被改变,是原版的软件保护装置34,软件即可以正常开始运行。
若比较的结果并不吻合,则表示软件保护装置34已有改变,包括了存储器32与软件保护装置34整个游戏软件卡30极可能已被改变了,甚至是未安装有本发明的软件保护装置34的游戏软件卡30,游戏软件即停止运行,这样便达到游戏软件程序保护的目的。
权利要求
1.电脑系统的一种软件保护装置,处于包括有中央处理器,电脑逻辑电路,程序软件存储器的电脑系统中,该软件保护装置包括有接口电路及解码装置,数列信号发生装置,以及选择装置。上述接口电路及解码装置接收该电脑系统的地址信号以及控制信号,并在该电脑系统的控制下与该电脑系统交换数据信号。上述选择装置用来选择数列信号发生装置的发生方式;上述数列信号发生装置,可接受该选择装置的选择信号,以及该接口电路及解码装置的时间脉冲信号而产生一个系列的数列信号数据,而且可接受该接口电路及解码装置的设置信号而被设置为一预定的状态。
2.如权利要求1所述的软件保护装置,其中该选择装置可为寄存器或存储器,包含EPROM(可擦除可编程只读存储器)、EEPROM(电擦除可编程只读存储器)等。
3.如权利要求1所述的软件保护装置,其中该选择装置可以是应用于集成电路的可编程装置,包含压焊选择(bonding option)、金属线选择(metal option)、码植入(code implant)等。
4.如权利要求1所述的软件保护装置,其中该接口电路可供与主系统连接之用,包括有解码装置与缓冲器及其它装置。
5.一种保护软件的方法,该方法采用如权利要求1所述的电脑系统的软件保持装置,利用读取该保持装置中的数列发生器所产生的数列来判别硬件是否存在,并以此作为软件进行的依据,其步骤包括有(a)在程序内包含所要检查的数列数据;(b)将数列发生装置设置为一预定的状态来进行初始设置;(c)中央处理器在程序控制下读取数据列发生装置产生的数列,检查是否与存放在程序中的数列数据吻合,以作为软件执行的依据。
6.如权利要求5所述保护软件的方法,其中该吻合条件可为所读取的数列若部分吻合存放在程序中的数列数据,即判定符合该吻合条件。
7.如权利要求5或6所述保护软件的方法,其中所读取的数列若不符合该吻合条件,即令软件停止运行。
8.如权利要求5或6所述保护软件的方法,其中所读取的数列若不符合该吻合条件,即令软件错误运行。
9.一种保护软件的方法,该方法采用如权利要求1所述的电脑系统的软件保护装置,利用读取该保持装置中的数列发生器所产生的数列来判别硬件是否存在,并以此作为软件运行的依据,其步骤包括有(a)在程序内包含一段程序码,用以产生数列数据;(b)将数列发生装置设置为一预定的状态来进行初始设置;(c)中央处理器在程序控制下读取数列发生装置产生的数列,检查是否与程序所产生的数列数据吻合,以作为软件运行的依据。
10.如权利要求9所述保护软件的方法,其中该吻合条件可为所读取的数列若部分吻合程序所产生的数列数据,即判定符合该吻合条件。
11.如权利要求9或10所述保护软件的方法,其中所读取的数列若不符合该吻合条件,即令软件停止运行。
12.如权利要求9或10所述保护软件的方法,其中所读取的数列若不符合该吻合条件,即令软件错误运行。
13.一种保护软件的方法,该方法采用如权利要求1所述的电脑系统的保护装置中,利用读取数列发生器所产生的数列来判别硬件是否存在,并以此作为软件运行的依据,其步骤包括有(a)在程序内包含一段程序码用以对一组数列数据进行预定的运算处理;(b)在程序内包含一段数据,作为该运算结果的比较之用;(c)将数列发生装置设置为一预定的状态来进行初始设置;(d)中央处理器在程序控制下读取数列发生装置产生的数列并进行运算,再检查运算的结果是否与程序所预计的结果吻合,以作为软件运行的依据。
14.如权利要求13所述保护软件的方法,其中该吻合条件可为所运算的结果若属于某一预定范围内,即判定符合该吻合条件。
15.如权利要求13所述保护软件的方法,其中该吻合条件可为所运算的结果若具有某一预定特征,即判定符合该吻合条件。
16.如权利要求15所述保护软件的方法,其中该预定特征可为奇数或偶数。
17.如权利要求13或14或15或16所述保护软件的方法,其中所运算的结果若不符合该吻合条件,即令软件停止运行。
18.如权利要求13或14或15或16所述保护软件的方法,其中所运算的结果若不符合该吻合条件,即令软件错误运行。
19.一种保护软件的方法,该方法采用如权利要求1所述的电脑系统的软件保护装置,利用读取数列发生器所产生的数列来判别硬件是否存在,并以此作为软件运行的依据,其步骤包括有(a)在程序内包含一段加密处理的程序码或数据;(b)将数列发生装置设置为一预定的状态来进行初始设置;(c)中央处理器在程序控制下读取数列发生装置产生的数列,以便将加密过的程序码或数据予以解密,因而可以利用解密后的数据,供后续程序运行之用;或者可以运行解密后的程序码。
20.一种保护软件的方法,该方法采用如权利要求1所述的电脑系统的软件保护装置,利用读取数列发生器所产生的数列来判别硬件是否存在,并以此作为软件运行的依据,其步骤包括有(a)在程序内包含一段程序码,以便计算一组数列数据中某一预定数字出现的频率;(b)在程序内包括一段数据,作为预设的结果比较之用;(c)将数列发生装置设置为一预定的状态来进行初始设置;(d)中央处理器在程序控制下读取发生装置产生的数列并计算某一预定数字出现的频率,再检查其结果是否与程序所预计的结果吻合,作为软件运行的依据。
21.如权利要求20所述保护软件的方法,其中该吻合条件可为所计算的频率结果若属于某一预定范围内,即判定符合该吻合条件。
22.如权利要求20所述保护软件的方法,其中该吻合条件可为所计算的频率结果若具有某一预定特征,即判定符合该吻合条件。
23.如权利要求22所述保护软件的方法,其中该预定特征可为奇数或偶数。
24.如权利要求20或21或22或23所述保护软件的方法,其中所计算的频率结果若不符合该吻合条件,即令软件停止运行。
25.如权利要求20或21或22或23所述保护软件的方法,其中所计算的频率结果若不符合该吻合条件,即令软件错误运行。
26.一种保护软件的方法,该方法采用如权利要求1所述的电脑系统的软件保护装置,利用读取数列发生器所产生的数列来判别硬件是否存在,并以此作为软件运行的依据,其步骤包括有(a)在程序内包含一段程序码,以便计算某些预定数字是否出现,或某些数列串是否出现;(b)将数列发生装置设置至一预定的状态来进行初始设置;(c)中央处理器在程序控制下读取数列发生装置产生的数列,当预设的某些数字或某些数列串出现时,即相应运行某些预定的功能。
27.如权利要求26所述软件保护的方法,其中步骤(c)所执行的功能可为中央处理器内部的指令,包括有ADD、SUB、XOR或JUMP等指令,或可以是运行一段预定的子程序。
28.一种保护软件的方法,该方法采用如权利要求1所述的电脑系统的软件保护装置,利用读取该保持装置中的数列发生器所产生的数列来判别硬件是否存在,并以此作为软件运行的依据,其步骤包括有(a)在程序内包含一段程序码,以便计算一组数列数据中某一预定数字出现的间隔;(b)在程序内包含一段数据,作为预设的结果以供比较之用;(c)将数列发生装置设置为一预定的状态来进行初始设置;(d)中央处理器在程序控制下读取数列发生装置产生的数列并计算某一预定数字出现的间隔,再检查其出现间隔是否与程序所预设的结果吻合,以此作为软件运行的依据。
29.如权利要求28所述保护软件的方法,其中该吻合条件可为该预定数字的出现间隔若属于某一预定范围内,即判定符合该吻合条件。
30.如权利要求28所述保护软件的方法,其中该吻合条件可为该预定数字的出现间隔若具有某一预定特征,即判定符合该吻合条件。
31.如权利要求30所述保护软件的方法,其中该预定特征可为奇数或偶数。
32.如权利要求28或29或30或31所述保护软件的方法,其中该预定数字的出现间隔若不符合该吻合条件,即令软件停止运行。
33.如权利要求28或29或30或31所述保护软件的方法,其中若不符合该吻合条件,即令软件错误运行。
全文摘要
一种电脑系统的软件保护方法,软件保护装置包括接口电路,解码装置,数列发生装置及选择装置。软件保护方法的步骤为将第一组数列信号数据储存于该程序软件存储器中;选择装置从数列信号发生器的多种信号发生模式选择一种模式使数列信号发生器产生第二组数列信号,并与上述第一组数列信号数据比较,其结果吻合预先指定的情况时,中央处理器便正常运行软件程序,在其结果未符合预先指定的情况时,即令中央处理器停止运行软件程序。
文档编号G06F17/00GK1121215SQ9411718
公开日1996年4月24日 申请日期1994年10月20日 优先权日1994年10月20日
发明者徐世斌, 沈匡时 申请人:联华电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1