计算机软件安装的制作方法

文档序号:2409708阅读:814来源:国知局
专利名称:计算机软件安装的制作方法
技术领域
本发明涉及计算机软件并且特别涉及用于计算机软件安装的装置。
目前计算机软件,特别是例如电子表格和文字处理程序的应用软件,都很复杂并且使用了许多主执行程序需要时被调用的子例程。在许多情况下,其它应用程序也需要这些子例程。例如,打印子例程或者用于打开文件或关闭文件的子例程,可以被多种不同的应用程序使用。因此已经提出了为了节约系统存储器的空间,这些子例程在尽可能的情况下应该共享。这样,在安装一个新的应用程序时,建议新的应用程序在尽可能的情况下检测系统内已经可用的资源并使用那些资源。这样,当新的应用程序需要一个比它所发现的系统内可用的子例程更新的版本时,在安装这个新的应用程序时,安装这个较新的版本。
这导致了应用程序间的冲突。系统内已存在的应用程序可能需要一个较早版本的子例程,而其现在却被新的应用程序所需的较新的版本所覆盖。这样可能会导致这个已存在的应用程序的操作变得不可预知或者不能完成。
本发明试图解决这些难题。
本发明提供了包括一个在执行期间需要访问所述至少一个子例程的可执行程序的计算机软件,该软件进一步包括加密形式的一个或每个子例程,并且进一步包括一个可操作的解密例程,用于至少在访问需要时将这些加密子例程转换成可执行形式。
优选地,无论何时所述程序被执行,都可以执行解密例程,以便在任何情况下重新创建可执行形式的子例程。优选地,解密例程创建一个可被程序访问的地址表以便为访问而定位子例程。优选地,解密例程是可操作的,以用于检测在运行软件的系统内是否存在已经可用的子例程,并用于使该可执行程序使用已可用的子例程。该解密例程可操作用于把一个已可用子例程的地址合并到地址表内,这样就不需要解密该子例程的另一个复本。
该解密例程最好可操作用于区分子例程的不同版本,由此在系统内只有一个不同版本可用的情况下才解密加密版本。
该软件最好进一步合并可执行程序的加密复本,该解密例程可被可操作以便解密所述程序的一个可执行复本。解密例程最好可执行,用于在检测到包含在该软件内的非加密复本被破坏时解密该可执行程序的复本。
加密和解密最好包括或者涵盖压缩或解密技术。
本发明还提供了一种包括上述计算机软件的数据存储装置。
本发明还提供了一种计算机系统,它包括运行时可执行软件的处理装置,以及至少一个上述的计算机软件。
本发明进一步提供了一种运行时可执行一个可执行程序的计算机系统,该系统包括第一存储装置,它包括表示可执行程序的计算机可读代码;加载装置,运行时用于加载执行代码;标识装置,运行时用于标识在可执行程序执行期间所需要的任何子例程;第二存储装置,它包括表示由该标识装置标识的所述或每个子例程的计算机可读代码;以及第二加载装置,它运行时用于在系统的别处没有可用的子例程的情况下,从第二存储装置加载所述或每个子例程。
最好所述的标识装置和第二存储装置在可执行程序执行初始化的时候被运行,由此使所述子例程在任何时候都可以使用。所述第二加载装置在地址表中产生的入口,以标识已经可以使用的子例程的位置,地址表可以在需要访问时被可执行程序访问,用于定位子例程。第二加载装置最好运行时用于检测系统内是否存在已经可用的子例程,并且如果可用,就使所述可执行程序使用所述子例程。第二加载装置可操作地将系统内其它地方可用子例程的地址合并到地址表内。第二加载装置最好运行时用于区分子例程的不同版本,由此在系统内其它地方的仅仅有不同版本可用的情况下才解密和加密版本。
所述第二存储装置进一步包括表示所述可执行程序的计算机可读代码,并且该第二加载程序可以操作用于在系统内其它地方可执行程序不可用时从该第二存储装置中加载该可执行程序。在检测到系统内其它地方可执行程序的复本被破坏时,所述可执行程序可以采用加密的形式保存在所述第二存储装置中,并且第二加载装置可操作用于解密所述复本。
加密和解密包括或者涵盖压缩或解密技术。
本发明还提供了一种安装一个计算机软件的方法,包括
1.安装一个在执行期间需要访问至少一个子例程的那种类型的可执行程序;2.对所述子例程的加密复本进行解密;以及3.安装所述的解密复本,以便被可执行程序访问。
最好在每个所述可执行程序需要被执行的时候都执行解密和安装的步骤。
该方法进一步包括标识任何已经安装并且对可执行程序是可使用的子例程,以及解密和安装所述或任何需要的但不能使用的子例程的步骤。标识已可用的子例程的步骤最好包括区分子例程的不同版本,由此在只有一个不同版本是可用的情况下解密一个加密版本。
该方法进一步包括评定可执行程序的破坏情况,以及解密和安装该可执行程序的另外的复本以便在检测到破坏的情况下使用的步骤。
加密和解密最好包括或者涵盖压缩或解压缩技术。
本发明的实施例将参照附图以举例的方式详细描述,其中

图1表示实现本发明所用的数据处理设备的原理性简单示意图。
图2表示了根据前面所述的方案安装了应用程序的RAM。
图3a、3b和3c表示根据本发明在RAM中安装应用程序的步骤。
在描述用于安装软件的装置之前,首先描述一下实现本发明所使用的数据处理系统的基本部件是很有帮助的。图1表示包括一个与输入/输出设备3相连的处理器2的计算机系统1。处理器2还配有在处理期间使用的随机存储器(RAM)4。附加存储容量由例如硬盘驱动器5来提供。计算机系统可以是,例如IBM PC类型,或者是与其等同的计算机。
按一般的习惯,软件应用程序在需要之前要被存储在驱动器5上,然后在需要使用时才安装到RAM4中。这提高了处理器2访问软件的速度,并且因此就允许处理器2更快的处理。图2示出了一部分RAM10,其中存储了为图1所示类型设备的处理器的使用而安装的一个应用程序(例如文字处理应用程序)。此图采用非常简化、示意性的形式表示了应用程序的各个组成部分。这些部分包括一个加载程序12,它是用于在应用程序最初被打开时实施初始化操作的代码块。该程序的主体安装在RAM10的14处。如上所述,程序14需要访问包括子例程的文件。这些文件通常称为.DLL文件并且被不同的应用程序所共享。因此,.DLL文件16在图中RAM10的其它区域示出。程序14和.DLL文件之间的区域18可自由用于其它应用,例如用于另一个应用程序的安装。
RAM10还包括一个输入地址表(IAT)20。这是一个标识.DLL文件16的位置的表,以使处理器2在程序14需要的时候通过查找它们在IAT20内的位置而访问这些文件16。在应用程序被从硬盘驱动器复制到RAM10之后,当执行首先转到加载程序12时,由加载程序12创建IAT。加载程序12检查应用程序需要哪些.DLL文件,在硬盘驱动器上寻找这些文件,将它们加载到RAM10中并创建IAT20以标识每个.DLL文件以及它在RAM中的位置。
图3a、3b和3c表示了根据本发明加载应用程序的方式。这些可以结合图4来理解,图4是一个表示应用程序加载时所执行的一系列步骤的流程图。所示的步骤仅仅是与本发明有关的那些步骤。应当理解的是,与本发明无关的其它步骤也可以作为加载的一部分在所示的步骤之前、期间或之后执行。
RAM10最初的加载产生了图3a所示的状态。加载程序模块12a处于适当的位置上(图4的步骤100),大体上相应于图1的加载程序12。程序14也被安装(步骤102)在与图1中的安装相对应的位置。然而,应当注意在图3a中,图1中用于LAT20的存储器区域就是图3a中的空白区域。
根据本发明,作为初始化加载的一部分,称为引擎22的可执行代码的附加块被安装在RAM10中程序14的下面,也就是区域18的一部分。其它文件24与引擎22相关联,并且与其一起加载(步骤106)。这些文件是图1的.DLL文件16的加密版本。加密可以采用压缩或采用更安全的加密技术。在图3a中,文件24用圆括号标识以示意性地表示它们的加密性质。
上述初始化加载之后,执行转到加载程序模块12a(步骤108)。也就是,处理器12的程序指针指向加载程序模块12a起始的存储器地址。图3b表示接着在RAM10中发生的变化。作为应用程序初始化的一部分,加载程序12使引擎22运行(步骤110)。引擎22提供了两个功能。首先,引擎22查看系统,以便标识应用程序所需的任何资源(也就是例中的.DLL文件) (步骤112)并且标识那些在系统中已可用的资源(步骤114)。缺省地,步骤114还标识那些不可用的资源。在此实施例中,假定需要子例程.DLL1,并且它在硬盘驱动器5上是可以获得的,但是子例程.DLL2也是需要的,在硬盘驱动器上却不可以获得。这样引擎22可以定位在硬盘驱动器上的.DLL1,将其拷贝到RAM10(步骤116)并通过在IAT20中产生一个正确的入口来创建IAT表20(步骤118)用来标识子例程.DLL1及其位置。这就产生了图3b所示的情况。
作为该过程的一部分,引擎22也会标识出(步骤114)在硬盘驱动器上已经不可使用的或者没有可用的合适版本并需要的任何子例程。在此实施例中,子例程.DLL2开始就是不可用的。因此引擎22访问(步骤120)如(.DLL2)表示的加密文件,然后对.DLL2的复本进行解密操作(步骤122)。然后安装解密的复本(步骤124)以使其对于程序14可以使用。同样,引擎22在IAT20中再产生一个合适的用于标识文件.DLL2的状态和位置的入口(步骤126)。
这样,在引擎22完全如所描述的那样执行后,RAM10就是图3c所示的状态。应用程序的安装就和图2的安装相同了,那儿有加载程序12a、程序14、用于把程序指向子例程的IAT20和完整的一组DLL子例程16。另外,图2中的一些空区域18现在也填充引擎22和解密的(.DLL)文件,但是程序14一旦开始执行这些还不被调用。程序14所需要的资源已经在区域16处可以使用并且在IAT20中已进行了标识,程序14现在开始执行(步骤128)。
将引擎22和加密(.DLL)文件合并到最初安装在RAM10中的软件以达到下面所述的非常有用的技术效果。应用程序是自包含的,因为它具有其操作所需要的全套子例程。为了节约空间这些子例程最好采用压缩格式,为安全起见其还可加密。当子例程不可用或者不是正确的版本时,可以按照上面的说明进行安装。更进一步的,当加载程序模块执行并调用引擎22时,每当应用程序运行时,它们就按需被安装。因此,不同的应用程序的安装或操作都不影响应用程序的正确操作,然而,受到攻击时其它的应用程序可能修改、替换或覆盖共享的.DLL文件。当应用程序下一次运行时,任何由于其它应用程序的动作或者其它的原因而导致不可用的共享文件都将从加密(.DLL)文件而被存储。
引擎22和加密文件(DLL)的操作还提供了一定程度的防止病毒攻击或其它破坏的保护。引擎22可以被编程为在发现或怀疑任何破坏时,评估硬盘上明显可用的子例程的破坏程度、从(.DLL)文件安装新近的、未加密的复本。
本发明可进一步扩展,针对在检测到或怀疑主程序14内的任何破坏的情况下,引擎22还可以提供一个主程序14的加密复本,解密并安装一个完整的、全新的程序14的复本。
根据上面的描述很明显的,在不背离本发明的范围下,可对上述的装置进行许多变化形式和修改。特别是,对于本领域的技术人员来说很明显,此技术可以用非常广泛种类的语言以及使用任何不同的加密、解密压缩或解密技术来实施。
尽管,前面的说明书的尽力描述力在突出本发明中被视为相当重要的那些特征,应当理解,在前面所提到的和/或在附图中所表示的任何专利性技术特征或者技术特征的组合方面,不管是否特别强调,申请人的权利要求保护均已在其中记载了。
权利要求
1.计算机软件,包括在执行期间需要访问至少一个子例程的可执行程序,该软件进一步包括加密形式的所述或每个子例程,以及进一步包括解密例程,所述解密例程运行时用于至少在需要访问时将加密的子例程转换成可执行的形式。
2.根据权利要求1的软件,其特征在于,每当所述程序执行时,所述解密例程就执行,由此在每种情况下重新创建具有可执行形式的所述子例程。
3.根据权利要求1或2的软件,其特征在于解密例程在地址表中产生用来标识重新创建的子例程的位置的入口,所述地址表可以被所述程序访问以便在需要时对要访问的子例程进行定位。
4.根据任何前面权利要求的软件,其特征在于所述解密例程运行时用于检测在运行所述软件的系统内是否存在已经可用的子例程,并且如果已经可用则使所述可执行程序使用子例程。
5.根据权利要求4和3的软件,其特征在于所述解密例程运行时用于将已经可用的子例程地址合并到所述地址表中,由此就不需要解密所述子例程的另外的复本。
6.根据任何前面权利要求的软件,其特征在于所述解密例程运行时用于区分子例程的不同版本,由此在系统中仅仅有一个不同的版本可以使用时对加密版本进行解密。
7.根据任何前面权利要求的软件,还合并所述可执行程序的加密复本,所述解密例程运行时用于解密所述程序的可执行复本。
8.根据权利要求7所述的软件,其特征在于所述解密例程运行时用于在检测到包含在所述软件内的非加密复本被破坏时解密所述可执行程序的复本。
9.根据任何前面权利要求的软件,其特征在于加密和解密包括或涵盖压缩或解压缩技术。
10.一种计算机可读介质,其上记载了有程序,其特征在于所述程序包括根据任何前面的权利要求所述的计算机软件。
11.一种计算机系统,其包括运行时用于执行软件的处理装置,以及至少一个根据权利要求1至9中任何一个的所述计算机软件。
12.一种计算机系统,运行时用于执行可执行程序,所述系统包括第一存储装置,包括表示所述可执行程序的计算机可读代码;加载装置,运行时用于加载所述要执行的代码;标识装置,运行时用于标识所述可执行程序在其执行期间所需要的任何子例程;第二存储装置,包括表示由所述标识装置标识的所述或每个子例程的计算机可读代码;以及第二加载装置,运行时用于在所述系统别处子例程不可用时从所述第二存储装置加载所述或每个子例程。
13.根据权利要求12的系统,其特征在于所述标识装置和第二加载装置在每当所述可执行程序的执行初始化时被运行,由此使所述子例程在每种情况都可以使用。
14.根据权利要求12或13的系统,其特征在于所述第二加载装置在地址表中生成一个入口以便标识已经可以使用的子例程的位置,所述地址表可以被所述可执行程序访问以便在需要时对要访问的子例程进行定位。
15.根据权利要求12至14中的的系统,其特征在于所述第二加载装置运行时用于检测在所述系统内已经可以使用的子例程的状态,并且如果可以使用就使所述可执行程序使用所述子例程。
16.根据权利要求15和14的系统,其特征在于所述第二加载装置运行时用于将在系统其它地方可用子例程的地址合并到地址表内。
17.根据权利要求12至16中的任意一个的系统,其特征在于所述第二加载装置运行时用于区分子例程的不同版本,由此在系统内别处仅仅有不同版本可用的情况下对加密版本进行解密。
18.根据权利要求12至17中的任意一个的系统,其特征在于所述第二存储装置进一步包括表示所述可执行程序的计算机可读代码,并且所述第二加载程序运行时用于在所述系统内别处可执行程序不可用时从所述第二存储装置中加载所述可执行程序。
19.根据权利要求18的系统,其特征在于在检测到所述系统内别处可用的所述可执行程序的复本被破坏时,所述可执行程序以加密的形式保存在所述第二存储装置中,并且所述第二加载装置运行时用于解密所述复本。
20.根据权利要求12至19中任意的一个的系统,其特征在于加密和解密包括或者函盖压缩或解压缩技术组成。
21.一种安装一个计算机软件的方法,其包括1.安装一个在执行期间需要访问至少一个子例程的那种类型的可执行程序;2.对所述子例程的加密复本进行解密;以及3.安装所述解密复本,以便被所述可执行程序访问。
22.根据权利要求21的方法,其特征在于所述解密和安装的步骤在每当所述可执行程序需要被执行的时候执行。
23.根据权利要求21或22的方法,其特征在于所述方法进一步包括标识任何已经安装并且对于所述可执行程序是可使用的子例程,并且仅对所述或任何需要的但不能使用的子例程进行解密和安装的步骤。
24.根据权利要求23的方法,其特征在于所述标识已可用的子例程的步骤包括区分子例程的不同版本,由此在仅仅有一个不同版本是可用的情况下解密一加密版本。
25.根据权利要求21至24中任意的一个的方法,其特征在于所述方法进一步包括评定所述可执行程序的破坏情况,以及在检测到破坏的情况下解密和安装所述可执行程序另外的复本以供使用的步骤。
26.根据权利要求21至25中任意的一个的方法,其特征在于加密和解密包括或涵盖压缩或解压缩技术。
27.一种参照相关附图如上所述的计算机软件产品。
全文摘要
当可执行程序要被安装到RAM(10)中时,RAM最初包括加载程序模块(12a)、程序(10)、引擎(22)和诸如加密的DLL文件的加密资源(24)。在程序(14)要被运行时,加载程序模块(12a)调用引擎(22),它访问程序(14)所需要的子例程资源,标识出系统内已经可用的任何子例程,加载那些已经可用的子例程,以及解密和加载任何不可用的子例程。这样就保证了所需要的子例程在每当程序(14)执行时对于程序(14)都是可以使用的。
文档编号G09C1/00GK1527972SQ01815804
公开日2004年9月8日 申请日期2001年7月12日 优先权日2000年7月18日
发明者J·A·萨法, J A 萨法 申请人:比特阿兹有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1