CN1224517A - 软件产品的分发和受约束使用 - Google Patents
软件产品的分发和受约束使用 Download PDFInfo
- Publication number
- CN1224517A CN1224517A CN 97196095 CN97196095A CN1224517A CN 1224517 A CN1224517 A CN 1224517A CN 97196095 CN97196095 CN 97196095 CN 97196095 A CN97196095 A CN 97196095A CN 1224517 A CN1224517 A CN 1224517A
- Authority
- CN
- China
- Prior art keywords
- software
- software product
- information
- calling
- subroutine
- 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
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
对软件产品进行修改使得在将其应用限制于授权用户(14)时,可以自由分发。该修改(20)包括用重定向软件的调用替换重安置在软件产品中例程的调用,该重定向软件的调用与授权软件一起加入软件产品。关于替换调用的信息表被可靠地提供给一个授权代理商(12),授权软件与其关于修改的软件产品的执行进行通信。一个授权用户将限定于其环境的本地数据提供给授权代理商,授权代理商对依赖于该本地数据和该授权软件的表进行编码并将它提供给该授权用户。对该表进行篡改,或其它的不同本地数据,阻止该表的使用。重定向软件在软件的执行过程中对每一替换调用的目标地址进行解码,而无须对该表进行解码或将软件恢复为其原始形式。可选择地,重定向软件可以由授权代理商提供给授权用户。
Description
本发明涉及软件产品的分发和受约束使用,尤其涉及正在兴起的软件租赁。这里使用的术语“软件产品”通常包括计算机程序和控制方法。
发明背景
许多方法被提出并使用于通过出售使用软件产品许可证来分发软件产品,企图保留对未经授权的软件产品的分发和使用的约束。这些方法,以及它们的一些缺点包括:
(ⅰ)软件包的零售,低效率的过程伴随较大的冒险成分使分发成本过高,投资的低回报由于非法拷贝而进一步减少;
(ⅱ)防拷贝方案,试图使拷贝变得困难,但往往无法防止具有熟练技术的人进行拷贝,而且减少了经授权的用户对软件产品的使用;
(ⅲ)共享软件,通常软件产品的一个子集可在一个专用系统上得到并试用一段时间,而不需要检查许可证;
(ⅳ)硬件加锁,在这里软件产品的使用依赖于一个物理装置,一种最常用的物理装置被称为加密解密器(dongel);加密解密器容易丢失或损坏,它的使用可能影响其它的正常操作,使用不方便,软件产品对于具有软件知识,能够制作独立于硬件的非法拷贝的人是开放的;以及
(ⅴ)强制注册,这种方法中,软件被编上序列号,只在用户执行注册过程后才能运行,它可以使用密码,将经授权的用户与软件产品的一个拷贝联结起来,帮助分销商发现非法拷贝源;同样,软件产品无法防止具有软件知识,能够制造绕过注册要求的非法拷贝的人的拷贝。
这些方法不能满足对一种对软件产品分发和受约束使用的有效方法的要求。这些要求包括对软件产品不倚赖于物理设备的低成本分发,保护软件产品避免甚至具有熟练技能之人的非法使用,方法对于用户使用软件产品透明,特别要避免软件产品执行速度的显著降低,方法对于新的及已存在的软件产品的适用性,以及提供及加强与用户的宽范围的各种业务关系的能力(例如,对软件产品的一次性,有限次,或长期的使用)。
本发明的目的是提供一个改进的软件产品分发与受约束使用的方案。
发明公开
依照本发明的一个方面,本发明提供一种约束一个软件产品使用的方法,包括如下步骤:在软件产品中隐藏一个控制线程(controlthread);在软件产品中附加一个软件,用于为经授权的用户恢复控制线程;以及向经授权的用户提供信息以激活附加的软件,在软件产品执行过程中以依赖于经授权的用户环境的方式恢复被隐藏的控制线程。
向经授权的用户提供所说的信息的步骤可以包括从经授权的用户获取依赖于经授权的用户的环境的本地数据,依据这些本地数据对与被隐藏的控制线程有关的信息进行编码,以及向经授权的用户提供编码后的信息。编码也可以依据从用于恢复被隐藏的控制线程的附加软件导出的信息进行,附加软件可以包含任意(例如,随机)数据,这样,解码依赖于附加软件的完整性。
这里使用的术语“用户”包括该软件产品的使用者或潜在的使用者,即指使用者的计算机或其它机器,也指使用这些机器的人。经授权的用户的环境,以及与这环境和/或软件产品的使用相关的本地数据,包括任何可局部地确定的足以将使用者和/或使用区别于其他使用者和/或使用的信息。这些本地数据的种类以及提供这些数据的方式是任意的;举例来说,这些本地数据可以包含任意一个或多个信息,这些信息可以存储在计算机中,由使用者输入,由扫描仪扫描进入,由读卡机读入,等等。
为经授权的用户恢复控制线程的软件可以包括响应前面所说的信息的重定向软件以在软件产品执行过程中确定对可重定位子程序的调用的目标地址,在软件产品中隐藏一个控制线程的步骤可以包括用对重定向软件的调用替换对前述可重定位子程序的调用。重定位软件可以在附加用于为经授权的用户恢复控制线程的软件时加入到软件产品中,也可以独立于软件产品提供给经授权的用户。
本发明的另一个方面是提供一种约束软件产品使用的方法,它包括如下步骤:用对重定向软件的调用替换对可重定位子程序的调用;在软件产品中增加认证软件,修改软件产品以在软件产品运行时执行认证软件;存储与被替换的调用及认证软件相关的信息以备授权代理商使用;响应软件产品的执行,由此响应认证软件的执行,向授权代理商传递依赖于软件产品运行环境的本地数据使用户得到授权;响应授权代理商接收到的经授权的用户的本地数据,依据该本地数据和认证软件对已经保存的与被替换调用相关的信息编码,向经授权的用户提供编码后的信息;以及在经授权的用户处通过对重定向软件的替换调用执行软件产品,重定向软件依据编码信息,本地数据,及认证软件在软件产品的执行过程中确定被替换调用的目标地址。
同样,重定向软件即可以随认证软件附加到软件产品中,也可以在响应认证软件的执行时提供给经授权的用户。将软件产品中对可重定位子程序的调用替换为对重定向软件的调用的步骤包括用任意(例如,随机)数据复写调用,在响应认证软件的执行时响应提供给经授权的用户的信息将被复写的调用替换为对重定向软件的调用。任意数据也可以被包含在认证软件中。
在下面详述的本发明的特定实施例中,依据本地数据和认证软件对已经保存的与被替换调用相关的信息进行编码的步骤包括为每一个被替换的调用根据已经保存的调用地址,本地数据,以及关于认证软件的散列函数确定一个散列值H的步骤,进一步地,包括为每一个被替换的调用,将该调用的目标地址的标识信息保存到长度为N的散列表的第Hmod K项中,这里K等于H div N。存储在表中的信息可以通过目标地址与K的异或组合方便地得到。
本发明的一个更深入的方面提供一种修改软件产品以约束使用的方法,步骤包括:
通过将软件产品中对可重定位子程序的调用替换为对重定向软件的调用生成一个可分发的软件产品,附加一个认证软件,在该可分发软件产品运行时执行以和授权代理商通信来向用户授权使用该软件产品,并为重定向软件提供必要的信息,使其仅在运行期间根据与经授权的用户相关的本地数据确定每一个被替换调用的目标地址;及
授权代理商保存与被替换调用相关的信息,使授权代理商能向经授权的用户提供所说的信息,这信息以一种依赖于用户提供的本地数据的方式编码,用于重定向软件为每一个被替换的调用确定目标地址。
重定向软件可以被包含在可分发的软件产品中,也可以被授权代理商保存,在认证软件执行时提供给经授权的用户。两种情形下,授权代理商对所说的信息的编码,用于重定向软件为每一个被替换的调用确定目标地址,最好也依赖于认证软件。
本发明的另一个方面提供一种供应受约束使用的软件产品的方法,包括如下步骤:隐藏软件产品中对可重定位子程序的调用;以及提供与被隐藏的调用相关的信息以使对软件产品的经授权的使用成为可能。
隐藏软件产品中对可重定位子程序的调用的步骤可以包含以任意数据,或以用于在软件产品执行过程中确定对可重定位子程序的调用的目标地址的重定向软件替换调用;重定向软件可以被附加到软件产品中。
提供与被隐藏的调用相关的信息的步骤可以包含提供相关调用的信息或返回被隐藏的调用的地址和被调用子程序各自的目标地址。该方法进一步包含为对软件产品经授权的使用而依据本地数据对与所说的地址相关的信息进行编码的步骤,对与所说的地址相关的信息进行编码也可以依据从一个软件导出的信息,该软件使对软件产品的经授权的使用成为可能。
该方法可以包含随软件产品提供认证软件的步骤,该认证软件在软件产品运行过程中执行,依据本地数据使对软件产品的经授权的使用成为可能。任意数据可以被包含在认证软件中。
本发明的另一个方面提供一种使用软件产品的方法,在该软件产品中对可重定位子程序的调用被隐藏,该方法包括如下步骤:提供与使用该软件产品的环境相关的本地数据;得到与被隐藏调用相关的依据本地数据编码的信息;以及在软件产品运行中依据所得到的信息及本地数据访问可重定位的子程序。
本发明的另一个方面提供一种使对软件产品的经授权的使用成为可能的方法,在该软件产品中对可重定位子程序的调用被隐藏,该方法包括如下步骤:接受与调用相关的信息,或被隐藏的调用的返回地址和被调用的子程序各自的目标地址;接收对该软件产品的经授权使用的本地数据;依据本地数据对相关地址的信息进行编码;提供编码后的信息使对软件产品经授权的使用成为可能。
附图简述
参考下面的附图及其描述,本发明将得到进一步的理解,这里,
图1图示说明了一个网络结构,其中软件根据本发明的一个实施例被分发和使用;
图2为一个流程图,其中阐明在本发明的一个实施例中的操作;
图3表示原始软件的图表;
图4表示根据本发明的一个实施例被修改后并自由分发的软件的图表;
图5表示在本发明的实施例中生成的一个子程序引用表(SRT)的图表;
图6表示在本发明的实施例中生成的一个授权子程序引用表(ASRT)的图表;
图7流程图,阐明ASRT的生成;
图8流程图,阐明ASRT的使用;
本发明的实施模式
图1图示了一个多计算机单元,包括一个被称为应用服务器(AS)的单元10,一个授权代理商(AA)12,以及通过网络16相互连接的用户计算机(SC)14,例如全球的计算机网络被称为因特网,SC14包含一个已知形式的网络接口(I/F)18,该接口提供如下引用的(SC)的身份。AS10和AA12也可任选地用应用包装器(AP)20通过网络16相互连接,应用包装器由软件提供者(SS)随软件产品提供。AS10维护数据库24中的软件产品目录,而AA12维护数据库26中的软件产品数据(PD)以及数据库28中的用户数据(SD)。
为简单和清晰起见,图1只图示了每类单元的一个,接下来的描述是相应而言的。实际上,网络组织可以包含许多个SC14和多个10,12,20,22单元及相应的数据库。相应地,每个软件产品数据库24可以包含多个软件产品,同时多个PD数据库26包含如下论述的相应数据。此外,尽管图1所示的网络组织中的各类单元是分开的,接下来的描述是由此而说的,各类不同的单元可以具有任意的地理位置,可以在同一个位置或结合在一起,可以以任何希望方式共享处理器。
下面的描述引用图1的单元提供了本发明的一个特定实施例的简化的轮廓,随后是更细节的描述。
SS22,举例来说,是一个软件产品生成器,它产生的软件产品可以被自由分发而仅被经授权的用户,即在这些用户的SC上使用,它以一种安全的方式向AP20提供软件产品。AP20以下面详述的方式修改软件产品以隐藏软件的控制线程并附加认证软件,生成可自由分发的应用软件。这是由AP20向AS10提供的,AS10将它存储在软件产品数据库24中供自由分发或通过网络16下载到任一SC14。修改后的软件产品的拷贝同样可以以任何其他希望的方式自由分发,例如通过磁盘。AP20还生成一个子程序引用表(SRT),并以安全的方式提供给AA12,该SRT包含与软件产品的被隐藏控制线程相关的信息。AA12将该SRT及如下论述的与软件产品相关的信息保存在PD数据库26中。
因为软件的控制线程已被隐藏,自由分发的应用软件不能被SC14直接执行。在SC14上执行应用软件的企图导致附加的认证软件的运行。认证软件与AA12通讯,建立对一种业务联系的协议;这可以是一个新的协议,也可以是一个以前协议的继续,对于后者,AA12已经在SD数据库28包含了数据,业务联系的种类可以是本发明涉及的任意一种。作为与AA12通讯的一部分,SC14传递的信息包括分别在数据库26和28中的软件产品及用户的标识,以及下面将进一步讨论的本地数据。AA12获得这些信息后,从PD数据库26中得到软件产品的SRT,从SRT和本地数据中生成算法上受限于本地数据的独特的授权子程序引用表(ASRT),向SC14提供这个ASRT。
SC14现在能够通过结合使用ASRT和本地数据在软件产品被执行时,即在实时的基础上,严格限于在SC14的主存里恢复其被隐藏的控制线程而使用该软件产品。如下详述,在SC14,软件产品不回复到其原始形式;它的控制线程保持被隐藏状态,软件产品的分发形式(例如,在磁盘上)不被改变。因为ASRT由SC14的本地数据决定,所以软件产品及ASRT的拷贝用处非常有限。例如,它不能在任何其它计算机上使用,因此一个未经授权的拷贝没有价值。本地数据可以包含与日期和时间相关的信息,因此超越业务关系期限在SC14上通过ASRT而使用软件可以被防止;日期和时间可以由SC14自身提供,也可以来自从在网络16上的一个独立的(例如,来自安全的套接字的真实时间)时间源。
从上面的概述可以看到,本发明提供了一种方案,其中任何软件产品由于其控制线程被隐藏而可以自由分发,经授权的用户对软件的执行得到允许,软件以与该用户相联结但不将软件产品回复到其原始形式的方式得到执行。从而,通过确保软件的一个拷贝只能在一台计算机上运行而使软件产品得到保护。即使软件被在象软件映像这样的黑客工具帮助下捕获,实际上在任何其它计算机上,甚至在同一台计算机上未经授权的时间里,也没有用处。如上所述,该方案在网络中提供,从而加快了软件产品的分发和对其使用的授权,但是可以看到,同样的原则也可以应用于任何其它的分发和授权方案。
下面的描述参照图2的流程图的步骤和图3至图8的图表详细解释上面概述的本发明的实施例。
在图2中,由AP20执行的步骤32至34位于右上角,由AA12执行的步骤36至39位于右下角,由SC14执行的步骤41至46位于左边。如上面的概述中所说的,软件产品被提供给AP20。由AP20执行的步骤32和33为方便起见在图中是顺序的,但在实际上是同时执行的。
在图3中,原始软件产品的结构被表示为非常简单的形式,可以看到,软件产品包括一个执行(.EXE)文件,该文件包含一个初始例程,其初始位置在地址ADO,它的前面是一条初始的跳转指令(JMP init)。在软件产品的不同位置或地址(AD1,AD2,等)包含多个对可重定位子程序的调用(例如,JSR subrl),这些子程序在软件产品正常运行时被执行。通常地,如众所周知的,软件产品可以包含成百上千的子程序调用,子程序的数目及调用的次数随着软件产品复杂性的增加而增加。图3用垂直的虚线代表软件产品的其余部分。
在步骤32,AP20为分发而修改软件产品。图4以类似于图3的方式显示修改后的软件产品,该软件产品可以被自由分发,例如,如上面概述中描述的经由AS10和网络16。
如图4所示,AP20修改软件产品,通过在执行文件的尾部添加,向软件产品附加认证软件50,认证软件包括一个启动认证模块auth和实时重定向(RTRD)模块rtrd的软件。AP20还可能加入一些任意数据以隐藏软件的功能和外观。AP20还通过用跳转到认证模块(JMPauth)的指令替换初始的跳转指令来修改软件产品,认证模块自身用一条跳转指令51到原来的初始例程(JMP init)来结束执行。此外,AP20通过用对RTRD模块的调用(JMP rtrd)替换对某些或全部在地址AD1,AD2等可重定位子程序的调用来修改原来的软件产品。这些替换隐藏了软件产品的控制线程,可以预期,隐藏程度随着被替换的子程序调用数目的增加及软件产品复杂性的增加而增加。
AP20识别将被替换为对RTRD模块的调用的对可重定位子程序的调用,这个识别过程在具有或不具有来自SS22的软件产品的具体知识的情况下均可实现;在后一种情况中,反汇编器和其他知名的软件工具可以被用来定位这些调用。两种情况下,时间敏感的子程序也可以被识别出来,对这些子程序的调用的替换可以被避免以避免如下所述的软件被SC14最终执行时速度不受欢迎的降低。通常,对可重定位子程序的大部分调用可以被如图4所示及前文所述的方式识别和替换来隐藏软件产品的控制线程到足够的程度以保护软件而不至于显著降低其最终运行速度。
认证软件50由AP20为软件产品生成,例如,通过将一个针对各种软件产品的通用模板与随机数据相结合,它可以便利地采取分布在认证软件中随机地生成的数字的形式,使认证软件的散列充分地改变。
在步骤33,AP20创建SRT。如图5所示,SRT是一个表,它将在步骤32中被替换的原软件产品中的每一个子程序调用,调用地址(CA)以及这里称为目标地址(TA)的被调用子程序地址联系起来。这样,如图5的例子,以及由图3的例子可以得到,SRT将调用地址AD1与在该地址被调用的子程序subr3的目标地址存储在一起,将调用地址AD2与在该地址被调用的子程序subrl的目标地址存储在一起,等等。同样地,返回地址,被调用子程序执行完毕后在该处返回,可以被存储到SRT中代替调用地址。
SRT和其他与软件产品相关的信息,包括软件产品的标识在步骤34中由AP20安全地提供给AA12,并在步骤36中被AA12保存在PD数据库26中。这里,其它信息进一步包括关于软件产品的认证软件(以及任何随机数据)的广泛知识,以使AA12能够就微小的改变,如被装载不同的内存地址,产生一个认证软件的散列。
如上所述,AP20产生的修改了的软件产品被自由地分发,并如图2所示,在步骤41中可以被SC14运行。这导致认证软件的一个模块auth被执行,使用户在步骤42能够同意或继续业务联系。如上讨论,业务联系的种类在本发明考虑的范围内是任意的,并且如何被AA12建立并管理是众所周知的。
在步骤42,在SC运行的模块auth提供给AA12包括软件产品和用户的标识(Ids)以及本地数据(LD)的信息。LD通常定义SC14的环境(如地点和日期),可选地定义业务联系(如使用软件产品的期限)。例如,LD可以是由局部参数得到的一个或一组数字,该局部参数可以是由界面18提供的SC14的网络标识(也可以是用户标识),以及SC14提供的或来自网络16的当前时间。它可以包括其他数据,如模块auth被装载的SC14的内存地址,这对于SC14的环境也是独特的。
在步骤37,AA12以任一种已知的方法使用SD数据库28验证用户的真实性。在接下来的步骤38,AA12使用调用地址CA,结合了任意附加的随机数据的认证软件的散列函数HA,以及LD以下面详述的方式从SRT生成ASRT。图6图示了ASRT,图7的流程图展现了AA12产生ASRT所遵循的步骤。
如图6所示,ASRT包括一个长度为N的地址表,在偏移Y处存储值X。N是与被替换的子程序调用数等数量级的整数;如N可以是一个大于被替换的子程序调用数的质数。
参考图7,AA12执行步骤61以确定认证软件的散列函数HA;在一定程度上,这依赖于模块auth在SC14的内存中的地址,这一信息作为LD的一部分在图2的步骤42由SC14提供给AA12。
对于每一个被替换的子程序调用,例如图5所示的SRT中的每一对地址CA和TA,AA12执行图7所示的步骤62至64。在步骤62中,AA12根据调用地址CA,本地数据LD,以及散列函数HA确定一个散列值H。该散列值H包含相对较大的比特数,如128比特。在步骤63,AA12用ASRT的长度N去除散列值H,得到一个整数商,即键值K=H div N,和余数Y=H mod K,Y必须小于N,是在ASRT中的偏移量。在步骤64,AA12对来自SRT的目标地址和键值K进行异或运算(模2加,符号表示为)以产生存储于表ASRT的偏移Y处的值X。这个过程中使用键值K的目的是隐藏ASRT,可以用其他技术代替来达到这一目的。
上述步骤提供了SRT的表项与ASRT的表项间多重映射的可能性。这种可能性随ASRT的长度N相对于被替换的子程序调用数,即SRT的长度的增加而减小。如果发生了多重映射,例如,在步骤63,求得的ASRT中的偏移量Y已经被使用了,AA12会单独记录作为SC14的软件的补丁,下面将进一步描述。
再次参考图2,ASRT由AA12提供并由SC14接收,分别如步骤39和43所示。此外,ASRT的多重映射所要求的软件补丁的信息由AA12提供给SC14,这信息包括每一个多重映射的来自SRT的CA和TA地址对。由于多重映射对于软件产品的不同执行通常是不一样的,补丁也随之改变,它们可以被多次捕获并比较,降低了软件产品的安全性。这可以通过改变ASRT的长度加以避免,例如,选择与被替换子程序调用数相关的N,使多重映射的数目相对较小。步骤39和43后,SC14与AA12之间的通讯是不必要的(直到软件产品被SC14再次运行)。
在步骤44,SC14使用由AA12提供的来自SRT的信息,用原子程序调用替换相应的JSR rtrd调用来实现软件产品的必要的补丁。在步骤45,SC14通过JMP init指令51(图4)和如图4的软件结构所示的对RTRD模块的子程序调用rtrd将控制权交还给原软件产品。
对每一个这样的子程序调用,在图2的步骤46中,RTRD使用调用地址CA,散列函数HA,以及本地数据为相应的来自SC14的ASRT子程序确定目标地址TA,其中CA可从SC14的内存堆栈获得,HA被以与步骤61中AA12相同的方式确定。在确定的目标地址TA,向子程序的跳转被执行,软件的执行在步骤45继续。
图8更详细地图示了RTRD模块rtrd对每一个被替换调用的操作。包括步骤66至69。在步骤66中,RTRD以与上述步骤61中AA12相同的方式确定散列HA,并以与上述步骤62中AA12完全相同的方式根据调用地址CA,本地数据LD,以及散列函数HA确定散列值H。在步骤67中,RTRD以与上述步骤63中AA12完全相同的方式产生键值K以及偏移量Y。在步骤68中RTRD从ASRT的偏移Y处读取值X。在步骤69中,RTRD对来自ASRT的值X与键值K进行异或以生成相应子程序的目标地址TA,向目标地址的跳转被执行。软件产品的执行以正常的方式继续直到遇到下一个JSR rtrd替换指令,这时一个相似的步骤系列被执行。
上面描述的本发明的实施例具有许多显著优点:
正如早已讨论过的,原软件产品不在SC14处恢复,因此它不易受到未经授权的拷贝和使用的攻击。对软件产品可以自由地拷贝,但拷贝未经步骤42建立业务联系协议不能正常运行。SC14的ASRT的一个拷贝对于任何其它计算机没有价值,因为它在算法上依赖与提供它的特定的SC14的环境。不同的本地数据LD在任何其它计算机会使RTRD产生错误的目标地址,在一台计算机上复制另一台计算机的本地数据是不切实际的,因为每台计算机的LD包括该计算机的唯一确定的信息,如网络标识。
ASRT对日期和/或时间的依赖,使提供该ASRT的SC14能够在一定期限内使用软件产品,其中日期和时间可以通过网络16全局地被提供。显然这个依赖可以结合任何感兴趣的日期和/或时间间隔,因此ASRT可以以任意有效期限被提供。认证软件模块auth可以被安排为在软件产品的初始执行提供一个ASRT后,对同一软件产品在有效期限内的执行使用同一个ASRT,如此在此期限后,如果同意建立一个新的业务联系,向用户提供一个新的ASRT。
因为ASRT也依赖于认证软件(模块auth和rtrd)的散列函数HA,该认证软件包含任何附加的随机数据,对认证软件的更改也导致ASRT无效(会产生不正确的目标地址),所以随软件产品分发的认证软件可有效地防止篡改,包括被使用代码插入技术的软件工具的检查。
ASRT自身的信息也由于表的性质被隐藏。更明确地,根据散列值H对在表中的偏移Y的确定对于ASRT中的每一项是不同的,由此,对于每一个被替换的子程序调用也是不同的,所以对ASRT的分析是困难的。这困难由于异或运算在步骤64中被用于生成ASRT的表项,在步骤69中被用于使用ASRT的表项而更加复杂化。用于异或运算的键值K是确定在ASRT中偏移量Y时的副产品,所以它的确定使RTRD模块rtrd增加了一点反应时间。但是这使得ASRT的复杂度有了显著的不同,ASRT对于试图拷贝软件产品的人分析软件是一个很重要的表。
甚至对于一个复杂的,具有大量被替换子程序调用的软件产品,ASRT的大小可以相对很小。而且,附加到软件产品中的认证软件与原软件大小相比,对于大多数软件产品来说是很小的,所以,它的大小和系统资源使用对软件产品的分发和使用的影响可以忽略。
为每一个被重定向到RTRD的被替换子程序调用确定目标地址而增加处理时间并因此降低运行速度是值得的。如早已讨论过的,对软件产品中时间敏感的子程序调用的替换是可以避免的,所以不适当的速度降低是可以避免的。只要具备对软件产品的理解及软件提供者的合作,恰当地选择原软件产品中多少及那些子程序调用被替换,由于RTRD而使软件产品执行速度的降低对于用户可以是觉察不到的,同时保证了软件产品的控制线程被有效地隐藏了。然而,本发明并不一定要求具有软件产品的知识,也不依赖与特定的计算机操作系统或编程语言;从而,它可以容易地应用于已存在的,并且没有充足文档或理解的软件产品。
值得赞赏的一点是,对软件产品被保护方式的知识不会导致对保护本身的破解;换言之,保护阻止对软件产品未经授权的使用,它不依赖于任何可被泄密攻击的秘密条款。
在上面描述的本发明的实施例中,每一个被替换的调用被替换为对RTRD模块rtrd的调用。作为选择,这些子程序调用在分发的软件产品中可以被替换为任意的或随机的数据。这种情况下,任意的或随机的数据可以在SC14运行软件产品(即在运行时和内存中),在图2的软件修补步骤44的过程中,在模块auth的控制下被替换为对RTRD模块rtrd的调用,作为图2中步骤39及43的补充,用于这些替换的调用地址AD1,AD2等由AA12从SRT中提供。
作为进一步的选择,代替作为认证软件的一部分而被包含在自由分发的软件产品中,RTRD模块rtrd可以在执行发行认证模块auth时从AA12下载。这一选择也允许RTRD模块随时间和不同的地址而改变。
一般地考虑,上述本发明的实施例包括如下步骤:
1.在分发的软件产品中隐藏控制线程,向分发的软件产品中附
加一软件用以为经授权的用户恢复控制线程。
2.向经授权的用户提供用于激活附加的软件的信息,该附加软
件在软件产品运行时,以依赖于经授权用户的环境的方式恢复被
隐藏的控制线程。
在上面描述的本发明的实施例中,步骤1由AP20实现,步骤2涉及到由AA12提供给SC14的ASRT(包括来自SRT的控制线程信息以及由SC14的环境得到的信息)。但是,本发明通常可应用任何实现了这些步骤的安排,尤其不必考虑用户以何种方式得到授权,或信息以何种方式使被隐藏的控制线程得到恢复,以及本地限制如何传递给可应用于经授权的用户。这样,本发明也可应用于依赖于经授权用户的环境的任何其它方法,该方法用于控制对SRT数据的访问,或者向经授权的用户传递关于SRT的信息。
如此,举例来说,代替如上所述的随SRT提供AA12并在认证一个用户时生成ASRT,一个适当地加密了的SRT可以作为一个组成部分被包含在自由分发的软件产品中。每一个经授权用户可以(从AA12或任何其他可能的方式)得到一个解密用的钥匙,该钥匙于局部信息一起使软件产品仅能在相应的用户环境中执行,其实际效果与如上所述的本发明的实施例是一致的。这种情况下SRT必须被充分加密使其信息不会轻易被接解密。
尽管本发明的一个实施例已如上详细描述,对在不偏离如在权利要求中定义的本发明的范围的各种修改,变化和改编是受欢迎的。
Claims (34)
1.一种约束软件产品使用的方法,包含如下步骤:
在软件产品中隐藏控制线程;
在软件产品中附加用于为经授权的用户恢复控制线程的软件;以及向经授权的用户提供信息以激活附加的软件,在软件产品运行过程中,
以依赖于经授权的用户的环境的方式恢复被隐藏的控制线程。
2.根据权利要求1的一种方法,其中向经授权的用户提供所说的信息的步骤包括从经授权的用户获取依赖于经授权的用户的环境的本地数据,依据本地数据对与被隐藏的控制线程相关的信息进行编码,以及向经授权的用户提供编码后的信息。
3.根据权利要求1或2的一种方法,其中向经授权的用户提供所说的信息的步骤包括依据从为恢复被隐藏的控制线程而附加的软件得到的信息对与被隐藏的控制线程相关的信息进行编码,以及向经授权的用户提供编码后的信息。
4.根据权利要求3的一种方法,并包含在为恢复被隐藏的控制线程而附加的软件中加入任意数据的步骤。
5.根据权利要求1至4的任一权利要求的一种方法,其中为经授权的用户恢复被隐藏的控制线程的软件包含重定向软件以响应所说的信息,在软件产品的运行过程中确定对可重定位子程序的调用的目标地址,在软件产品中隐藏控制线程的步骤包括用对重定向软件的调用替换对所说的可重定位子程序的调用。
6.根据权利要求5的一种方法,其中向软件产品附加用于为经授权的用户恢复被隐藏的控制线程的软件的步骤包括向软件产品附加重定向软件。
7.根据权利要求5的一种方法,其中向经授权的用户提供信息以激活附加软件,恢复被隐藏的控制线程的步骤包括独立于软件产品向经授权的用户提供重定向软件。
8.约束软件产品使用的方法,包括如下步骤:
用对重定向软件的调用替换对所说的可重定位子程序的调用;
向软件产品中附加认证软件,修改软件产品,在修改后的软件产品运行时执行认证软件;
由授权代理商保存与被替换调用相关的信息以及认证软件以备使用;
响应待认证的用户对软件产品的运行,从而响应认证软件的执行,向授权代理商传递依赖于软件产品被执行的环境的本地数据;
响应被软件代理商接收到的一个经授权的用户的本地数据,对保存的与被替换的调用相关的信息依据本地数据和认证软件进行编码,向经授权的用户提供编码后的信息;以及
在经授权的用户处,执行被重定向软件替换了调用的软件产品,重定向软件在软件产品运行时依据编码后的信息,本地数据和认证软件确定被替换调用的目标地址。
9.根据权利要求8的一种方法,其中重定向软件随认证软件被附加到软件产品中。
10.根据权利要求8的一种方法,其中重定向软件在响应认证软件的执行时被提供给经授权的用户。
11.根据权利要求10的一种方法,其中用对重定向软件的调用替换对可重定位子程序的调用的步骤包括在响应认证软件的执行而响应提供给经授权的用户的信息时,用任意数据覆盖调用,用对重定向软件的调用替换覆盖的调用。
12.根据权利要求8至11的任一权利要求的一种方法,并包含在认证软件中加入任意数据的步骤。
13.根据权利要求8至12的任一方法,其中对被保存的与被替换调用关的信息依据本地数据和认证软件进行编码的步骤包括,对于每一个被替换的调用,根据被保存的信息中的调用地址,本地数据及认证软件中的散列函数确定一个散列值H。
14.根据权利要求13的一种方法,其中被保存的信息进行编码的步骤进一步包括,对于每一个被替换的调用,将识别调用的目标地址的信息保存到长度为N的表的第H mod K项,这里K等于H div N。
15.根据权利要求14的一种方法,其中对于每一个被替换的调用,保存在表中的信息通过各自的目标地址与其相应的K值的异或产生。
16.修改软件产品以约束使用的方法,包括如下步骤:
用对重定向软件的调用替换软件产品中对可重定位子程序的调用生成可分发的软件产品,附加认证软件,该认证软件在可分发的软件产品运行时执行,通过与授权代理商通讯来认证用户,约束可分发的软件产品的使用,并提供必要的信息,使重定位软件仅在软件产品运行过程中依赖于与经授权用户相关的本地数据确定每一个被替换调用的目标地址;以及
授权代理商保存与被替换调用相关的信息,使授权代理商能向经授权的用户提供这些信息,这些信息对于重定向软件确定每一个被替换调用的目标地址是必需的,且被以一种依赖于用户提供的本地数据的方式编码。
17.根据权利要求16的一种方法,其中重定向软件被包含在可分发的软件产品中。
18.根据权利要求16的一种方法,其中重定向软件被软件代理商保存,并在认证软件运行时提供给经授权的用户。
19.根据权利要求17或18的一种方法,其中授权代理商对所说的信息的编码也依赖于认证软件,该信息对于重定向软件确定每一个被替换调用的目标地址是必须的。
20.提供软件产品用于受约束使用的方法,包括如下步骤:
在软件产品中隐藏对可重定位子程序的调用;以及
提供与被隐藏的调用相关的信息,使对软件产品经授权的使用成为可能。
21.根据权利要求20的一种方法,其中隐藏对可重定位子程序的调用的步骤包括用任意数据替换调用。
22.根据权利要求20的一种方法,其中隐藏对可重定位子程序的调用的步骤包括用对重定向软件的调用来替换对可重定位子程序的调用,该重定向软件用于在软件产品的运行中确定对可重定位子程序的调用的目标地址。
23.根据权利要求22的一种方法,并包含向软件产品中附加重定向软件。
24.根据权利要求20至23的任一权利要求的一种方法,其中提供与被
隐藏调用相关的信息的步骤包括提供将被隐藏调用的调用或返回地
址与各自的被调用子程序的目标地址相关联的信息。
25.根据权利要求24的一种方法,并进一步包含依据软件产品经授权使用的本地数据对信息进行编码以与所说的地址相关联的步骤。
26.根据权利要求25的一种方法,其中为与所说的地址相关联而对信息进行的编码也依赖于从用于激活软件产品的经授权使用的软件中得到的信息。
27.根据权利要求20至26的任一权利要求的一种方法,并包含随软件产品提供认证软件,在软件产品运行时运行该认证软件,依据经授权使用的本地数据使软件产品经授权的使用成为可能的步骤。
28.根据权利要求27的一种方法,并包含随认证软件提供任意数据的方法。
29.使用被隐藏了对可重定位子程序的调用的软件的方法,包括如下步骤:
提供与软件产品的使用环境相关的本地数据;
得到依据本地数据编码了的与被隐藏的调用相关信息;以及
在软件产品运行过程中,依据得到的信息及本地数据访问可重定位子程序。
30.根据权利要求29的一种方法,其中对所说的与被隐藏的调用相关的信息进行的编码也依赖于从用于激活软件产品使用的软件得到的信息,访问可重定位子程序的步骤包括确定从所说的软件得到的信息。
31.根据权利要求29或30的一种方法,其中在软件产品的执行过程中访问可重定位子程序的步骤包括调用重定位软件代替被隐藏的对可重定位子程序的调用,其中重定位软件依据得到的信息和本地数据确定每一个被隐藏的子程序的目标地址。
32.根据权利要求31的一种方法,其中对与被隐藏的调用相关的信息进行的编码也依赖于从用于激活软件产品经授权的使用的软件中得到的信息,重定向软件也依赖于从所说的软件中得到的信息确定各个被隐藏子程序的目标地址。
33.激活软件产品经授权使用的方法,该软件产品中对可重定位子程序的调用已被隐藏,包括如下步骤:
接收信息,将被隐藏调用的调用或返回地址与各自的被调用子程序的目标地址关联起来;
接收软件产品经授权使用的本地数据;
依据本地数据对与地址相关的信息进行编码;以及
提供编码后的信息以激活软件产品经授权的使用。
34.根据权利要求33的一种方法,其中对与地址相关的信息进行的编码也依赖于从用于激活软件产品经授权的使用的软件中得到的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 97196095 CN1224517A (zh) | 1996-07-01 | 1997-06-27 | 软件产品的分发和受约束使用 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/674,037 | 1996-07-01 | ||
CN 97196095 CN1224517A (zh) | 1996-07-01 | 1997-06-27 | 软件产品的分发和受约束使用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1224517A true CN1224517A (zh) | 1999-07-28 |
Family
ID=5179563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 97196095 Pending CN1224517A (zh) | 1996-07-01 | 1997-06-27 | 软件产品的分发和受约束使用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1224517A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1322421C (zh) * | 1999-08-18 | 2007-06-20 | 西门子公司 | 代理系统、计算机网络以及用于把代理系统从主计算机装载到计算机网络的客户计算机上的方法 |
CN100489876C (zh) * | 2005-12-06 | 2009-05-20 | 国际商业机器公司 | 分发软件产品的方法和系统 |
CN106415565A (zh) * | 2014-03-28 | 2017-02-15 | 爱迪德技术有限公司 | 保护软件项目 |
-
1997
- 1997-06-27 CN CN 97196095 patent/CN1224517A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1322421C (zh) * | 1999-08-18 | 2007-06-20 | 西门子公司 | 代理系统、计算机网络以及用于把代理系统从主计算机装载到计算机网络的客户计算机上的方法 |
CN100489876C (zh) * | 2005-12-06 | 2009-05-20 | 国际商业机器公司 | 分发软件产品的方法和系统 |
CN106415565A (zh) * | 2014-03-28 | 2017-02-15 | 爱迪德技术有限公司 | 保护软件项目 |
CN106415565B (zh) * | 2014-03-28 | 2019-11-05 | 爱迪德技术有限公司 | 保护软件项目 |
US11222096B2 (en) | 2014-03-28 | 2022-01-11 | Irdeto B.V. | Protecting an item of software |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU706025B2 (en) | Distribution and controlled use of software products | |
RU2648941C2 (ru) | Безопасная обработка данных виртуальной машиной | |
CN1220121C (zh) | 程序分发设备、客户设备、程序分发系统和程序分发方法 | |
EP1469369B1 (en) | Verbose hardware identification for binding a software package to a computer system having tolerance for hardware changes | |
CN1308832C (zh) | 防御恶意代码而对计算机程序和数据进行保护的方法和装置 | |
CA2458765C (en) | Compact hardware identification for binding a software package to a computer system having tolerance for hardware changes | |
CN1097772C (zh) | 在安全存储区中保护应用程序数据的方法和装置 | |
US7647640B2 (en) | System for binding secrets to a computer system having tolerance for hardware changes | |
CN1633632A (zh) | 保护软件的方法和配置 | |
US10992480B2 (en) | Method and system for performing a transaction and for performing a verification of legitimate access to, or use of digital data | |
US20050044359A1 (en) | Anti-piracy software protection system and method | |
US20020138441A1 (en) | Technique for license management and online software license enforcement | |
US20020129265A1 (en) | Method and apparatus for managing software use | |
JPH0743693B2 (ja) | アクセス許可方法 | |
CN110188555B (zh) | 一种磁盘数据保护方法、系统及相关组件 | |
CN1969500A (zh) | 防护软件 | |
CN1273657A (zh) | 数据配送装置和数据配送用的终端装置 | |
CN1416493A (zh) | 钥匙和锁设备 | |
US11063766B2 (en) | Method and system for performing a transaction and for performing a verification of legitimate access to, or use of digital data | |
CN111860723A (zh) | 基于二维码的终端管理方法 | |
CN1224517A (zh) | 软件产品的分发和受约束使用 | |
US20040010470A1 (en) | Anti-piracy system for software and digital entertainment | |
CN111783153B (zh) | 信息处理的方法及装置、电子设备及存储介质 | |
CN1225186A (zh) | 用于从远程站访问应用服务程序的安全系统 | |
US7197144B1 (en) | Method and apparatus to authenticate a user's system to prevent unauthorized use of software products distributed to users |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent for invention or patent application | ||
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: NORTEL NETWORKS LTD. TO: QINOWIER COMPANY |
|
CP03 | Change of name, title or address |
Address after: Ontario, Canada Applicant after: Che Nowell Co. Address before: Quebec Applicant before: NORTEL NETWORKS LTD [CA] |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |