CN101981580B - 从多形态可执行程序到多形态操作系统 - Google Patents
从多形态可执行程序到多形态操作系统 Download PDFInfo
- Publication number
- CN101981580B CN101981580B CN200680055821.9A CN200680055821A CN101981580B CN 101981580 B CN101981580 B CN 101981580B CN 200680055821 A CN200680055821 A CN 200680055821A CN 101981580 B CN101981580 B CN 101981580B
- Authority
- CN
- China
- Prior art keywords
- polymorphic
- executable
- code segment
- code
- equipment
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 90
- 238000003860 storage Methods 0.000 claims abstract description 48
- 230000006870 function Effects 0.000 claims description 135
- 238000009826 distribution Methods 0.000 claims description 51
- 238000004422 calculation algorithm Methods 0.000 claims description 44
- 238000004519 manufacturing process Methods 0.000 claims description 39
- 230000005540 biological transmission Effects 0.000 claims description 33
- 238000013461 design Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 33
- 230000003068 static effect Effects 0.000 claims description 29
- 238000013459 approach Methods 0.000 claims description 20
- 239000000284 extract Substances 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 8
- 238000000151 deposition Methods 0.000 claims description 5
- 238000006073 displacement reaction Methods 0.000 claims description 4
- 238000005538 encapsulation Methods 0.000 claims 9
- 239000007787 solid Substances 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 44
- 239000011800 void material Substances 0.000 description 10
- 230000000694 effects Effects 0.000 description 8
- 238000012856 packing Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000009434 installation Methods 0.000 description 7
- 238000004806 packaging method and process Methods 0.000 description 7
- 230000009897 systematic effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 229910052799 carbon Inorganic materials 0.000 description 4
- 239000000203 mixture Substances 0.000 description 3
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 2
- 208000010201 Exanthema Diseases 0.000 description 2
- 101000911390 Homo sapiens Coagulation factor VIII Proteins 0.000 description 2
- 101000666896 Homo sapiens V-type immunoglobulin domain-containing suppressor of T-cell activation Proteins 0.000 description 2
- 102100038282 V-type immunoglobulin domain-containing suppressor of T-cell activation Human genes 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 2
- 238000005336 cracking Methods 0.000 description 2
- 201000005884 exanthem Diseases 0.000 description 2
- IJJVMEJXYNJXOJ-UHFFFAOYSA-N fluquinconazole Chemical compound C=1C=C(Cl)C=C(Cl)C=1N1C(=O)C2=CC(F)=CC=C2N=C1N1C=NC=N1 IJJVMEJXYNJXOJ-UHFFFAOYSA-N 0.000 description 2
- 102000057593 human F8 Human genes 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 206010037844 rash Diseases 0.000 description 2
- 229940047431 recombinate Drugs 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 241000283070 Equus zebra Species 0.000 description 1
- 208000010378 Pulmonary Embolism Diseases 0.000 description 1
- 230000007488 abnormal function Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012946 outsourcing Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种方法,可以用可执行指令或程序来实现,并可运行在可运行可执行代码的设备中,包括计算机系统或由计算机控制的设备或由操作系统控制的设备;利用这方法可在这些设备上制造、分发和执行可执行代码,例如启动代码,程序,应用程序,设备驱动或这些可执行程序组合形成的操作系统,以可执行代码形式嵌入或存储到硬件中,如嵌入或存储到各种存储介质,包括唯读、可再写、易挥发、不易挥发的存储介质,可以以虚拟磁盘的形式存在于物理记忆或内部动态随机存取记忆、硬盘、固态闪盘、唯读记忆,或唯读、可再写CD/DVD/HD-DVD/BluRay DVD、硬件芯片、芯片组中等等;可执行代码可以多形态可执行程序、含不可执行代码的可执行程序、含不可执行代码的多形态可执行程序或包含多形态可执行程序、含不可执行代码的可执行程序、含不可执行代码的多形态可执行程序的多形态操作系统的格式存在,可在授权状态下运行,用以保护知识产权。
Description
技术领域
本发明与知识财产的保护有关,例如运行于设备中的可执行代码,这些设备包括可运行这可执行代码的计算机系统、由计算机控制的设备、由操作系统控制的设备或系统,以后统称设备。
本发明尤其和可执行代码在设备中的制造、分发和执行的方法有关,这些可执行代码如启动代码,程序,应用程序,设备驱动或组成操作系统的可执行代码集,以可执行代码的形式内嵌或存储到硬件中;例如内嵌或存储到所有种类的存储介质中,包括只读、可复写、易挥发或不易挥发的存储介质,在后面统称为存储介质,以虚拟磁盘的形式在物理记忆中、内部DRAM即动态随机存取记忆、硬盘、固态闪盘、ROM、只读或可复写CD/DVD/HD-DVD/Blu-Ray DVD,硬件芯片或芯片集的形式出现。本发明是一种方法可实现为在设备中运行的可执行指令或程序,以PE即多形态可执行程序、EUC即含不可执行代码的可执行程序、前两种方式混合的程序PEUC即含不可执行代码的多形态可执行程序,包含PE,EUC,PEUC的POS即多形态操作系统形式在授权状态下出现。
在这种关联下,本发明可让设备运行可执行代码,包括在授权状态下执行PE,EUC,PEUC和POS,达到保护知识产权的目的。
技术背景
美国专利申请号20050210274,名为“使用微处理器的序列号实现知识产权保护的方法和设备”,描述了制造、分发和执行软件程序的一种方法用于特别为软件程序进行加密和解密而设计的设备,该方法使用至少一部分的序列号或其它存储在处理单元中的识别码作为加密钥匙,处理单元是运行经其解密的已加密软件程序的执行环境。
对软件程序或可执行代码的知识产权保护有利于基于智能活动的社会创新和进步。所以已经有很多在这方面的努力,设计出方法保护以软件程序或可执行代码形式出现的智能活动的价值;包括正确密码检验、加密数字锁文件检验,硬件标签检验,网络激活密码检验等。这些方法容易被绕过或者需要使用特定设计的硬件。所以这些方法是不实用的或是加重硬件的价格而不适合用于一般的计算处理环境的。
对软件程序或可执行代码的知识产权保护面临的问题是,如何避免这些软件程序或可执行代码被轻易的复制或受到黑客破解,并且可在通用计算处理环境中执行。利用从硬件中得到的独特鉴别信息,例如序列号或它们的变量,用作软件程序或可执行代码的加/解密钥匙,并且应用难以或不可破解的算法,是保护智能活动免受那些既简单又实用的盗窃活动如复制和黑客破解所侵害的解决方案。
以上提到的专利申请尝试解决这个问题。它使用了特定设计的设备,所以不适用于通用计算处理环境;能接触该特定设计执行环境的人员可以复制并盗取存储于其内的解密钥匙和经过解密的软件程序。所以这种环境必须高度保密,不能被普通用户和客户访问。如上述专利申请中所描述,经加密的软件程序没有解密便无法运行;如要执行经加密的软件,在程序运行前必须解密,这样经解密后的软件就是简单的可执行程序,可被复制并被运行于有相同结构的计算处理平台的任何机器之上,无论其处理单元的序列号为何。这样经解密的软件程序便很容易成为不受保护的执行程序,具有所有功能以未加密的形式出现,可以简易地被复制并运行而无需任何简单的黑客活动。
发明内容
这个技术难题可以归结为软件程序或可执行代码如何能以多形态的方式展现出来,可以在不同的授权状态下运行,但在未获授权状态的通用计算处理环境中不能运行;这就可以最好地保护了软件程序或可执行代码的知识产权。所以,软件程序或可执行代码应当是可执行形式的可执行代码,可在通用计算处理环境的设备中运行,包含独特唯一的多形态代码,在不同的授权状态下以不同的代码出现并可以运行;这些多形态代码包含的特点或功能在未授权的状态下是不能运行的。
简单来说,上述技术问题的解决方案是把可执行代码以PE的形式保护起来。通常,可执行程序是可执行代码的整体,能够被加载到设备中执行或被执行。根据本发明,执行程序的定义可以被进一步完善为可装载到设备中的代码的主体,至少部分可以执行或被执行。PE作为可执行程序的子集,在不同的授权状态下是独特唯一的和不同的并可以运行;但是PE中的多形态代码段及包含其中的特点或功能,在通用计算处理环境下的设备中,在未授权的状态下是不可运行的。所以在多形态代码段中的代码在未使用时,是被加密并不可以运行的,并且在解密前这些代码不会相同,以便解密后可在不同的授权状态下运行;为了让PE在通用计算处理环境中成功运行,这些代码会被解密成可执行代码,执行在授权状态下所预设的功能。
PE中的多形态代码段最好是由难于或不能破解的加/解密算法所产生的;即是由难于或不能破解的算法所生成的加密程序和相应的解密程序所产生的。使用什么加/解密算法是可选择的,并可随着密码科学的进步而改进。
所以,PE是可在可执行格式下运行的,可在任何硬件结构平台下的通用计算处理环境的设备中运行。在这种格式下,PE可分为如下几段:
(A)通用代码段
通用代码段包含未加密格式的可执行代码,它不需要加/解密就可以执行。通用代码段,在执行其它功能外,还包含:
Retrieving Function(s)RF,检索功能,这功能是在本地或通过本地网络或互联网从通用计算处理环境中检索出标识信息或标识符,给予在通用代码段中的Decrypting Function(s)DF解密功能所用。
解密功能,使用由RF检索功能找到的标识信息或标识符来把多形态代码段解密,这解密功能是与用于加密多形态代码段的Encryption Function(s)EF,加密功能,相对应的。
所以可以使用多于一对的加/解密算法。能够根据所用不同的EF使用不同的DF来对不同的多形态代码段加以解密。
根据需要,通用代码段同样可以包含Exception Function(s)(ExF),异常功能,来处理异常情况;如当多形态代码段的代码在被解密并被放回在PE系统记忆映像的相对应位置时不能被执行的异常情况;在此PE是已被加载到系统记忆当中。例如,解密功能在把相对应的多形态代码段解密并把它放在PE系统记忆映像的相关位置时可以调用ExF。接着,ExF可执行一些验证,例如通过处理相对应被解密后的多形态代码段来判断,在PE系统记忆映像中相应位置上的经解密后的代码是否像在通用代码段上的代码一样是可执行的。举例来说,ExF可启动其它错误处理动作,例如在特定标识没有在解密后的代码中出现时,它会报告错误或为完好地退出和关闭PE做准备。这些标识可以是根据多形态代码段中的可执行代码所计算出来的校验数,或者是附加到多形态代码段段首、段尾、或插入到其中的任意其它位置的预选静态数据。如果解密后这些标识不正确,ExF可以启动其它错误处理。如果标识正确,ExF可启动执行相应的经解密后的代码。
这里描述的ExF功能可以被加入到DF中,没必要一定分开。ExF或者在DF中的ExF功能是可选并不一定需要的。
(B)多形态代码段
多形态代码段包含加密后的代码,用以保护智能活动的功能或特点。多形态代码段中加密后的代码将被DF解密,用以执行。所用的DF是对应于用于把代码加密的EF的。
在执行时,PE是被加载到系统记忆并被执行的。系统记忆中的PE的通用代码段包含了可执行代码,该代码在通用计算处理环境的设备中执行时并不须要解密。为了运行多形态代码段的已加密代码,该代码由于处于加密状态而无法被执行,通用代码段的RF会被执行,接着RF传递从通用计算处理环境中获得的标识信息或标识符给予DF,用以把相应的多形态代码段中的已加密代码加以解密。
DF在把相应的多形态代码段的已加密代码解密后,把它放置在PE装载在系统记忆中的映像的相应位置。
所以,如果这时的通用计算处理环境处于授权状态,已解密的代码应当和通用代码段中的代码一样具有恰当的执行格式。这样,它们可以被正确执行。ExF或是加入到DF中的ExF功能可以先执行错误处理来决定是否启动执行已解密的代码。
授权状态是这样一种状态:在这状态下,通过RF从通用计算处理环境中检索到的标识信息或标识符可以被DF用来把代码解密使之可以执行并完成它所预设的功能或特点。即通过利用由RF检索得到的并被传递予DF的标识信息或标识符,DF把已加密的代码正确地解密,使之可以成功执行。非授权状态是指这样一种状态:在这状态下,通过RF从通用计算处理环境中检索到的标识信息或标识符,在被DF运用后,不能产生出可以执行的经解密的代码,这代码不能成功地执行它所预设的功能或特点。即通过利用由RF检索得到的并被传递予DF的标识信息或标识符,DF不能把已加密的代码正确地解密。在这情况下,DF不能产生出如预设的正确可执行代码。
RF检索获得的标识信息或标识符可以是,但不限于是,在通用计算处理环境中的中央处理器或某特定硬件或某组合的硬件的序列号或其派生的标识,亦可通过本地网或互联网访问获得。相对于预定的目的而言,这些标识信息或标识符都是独特唯一的;例如,可鉴别出某制造商所生产的所有设备或其中的某一特定设备或某一特定集合的设备。它同样可以是某个人或某组人的标识符,例如通过通用计算处理环境,无论是否通过网络,从个人或目标人群上得到的指纹或其他生物量化信息。当然,这些标识信息或标识符在制作PE阶段时应可被获得用作加密之用。用于加密的标识信息或标识符可以通过本地网络、互联网、普通邮件、其他传输方式或者其它传递或分发方式得到;这些标识信息或标识符将被,从采集它们并被PE使用的通用计算处理环境,传输到利用它们来加密并制作PE的地方。
正如下面将要描述的,为了最好地保护PE,从通用计算处理环境采集到并被用作钥匙用于对多形态代码段进行加/解密之用的标识信息或标识符,最好不出现在多形态代码段的加/解密钥匙存储位置内或是被省略掉。如果这标识信息或标识符要被置入其中,它们最好通过使用相应成对的加/解密程序被加密,在运行PE期间,其中用于解密这些标识信息或标识符的解密程序必须能被利用作为把这些标识信息或标识符解密之用。这些标识信息或标识符被解密后就能用于把相关的多形态代码段的剩余部分进行解密。
另外,除了使用这些从通用计算处理环境中采集的标识信息或标识符作为加/解密的钥匙,也可用其他标识信息或标识符代替。这可在加密进行时或在PE正在运行时加以提供,作为加/解密钥匙,用以把有关的多形态代码段进行加/解密。在某种意义上这种“提供”类型的标识信息或标识符和“采集”类型的标识信息或标识符是不同的。“采集”类型通常是PE运行时可自身采集的静态信息或标识符,例如PF运行时的设备的硬件序列号。“提供”类型通常是PE运行时动态用户必须提供给PE的动态信息或标识符,例如PE制造者用电邮寄给注册用户的密码或注册用户的指纹,或通过互联网传给设备并在PE运行期间提供给PE使用的数字钥匙文件,或以上这些的组合。
此外,这样提供的标识信息或标识符可以和从通用计算处理环境中采集到的标识信息或标识符同时用作加/解密钥匙。所有这些标识信息或标识符,或是单独的“采集”或“提供”类型的标识信息或标识符,都可以在多形态代码段中的加/解密钥匙存储位置中被放置或忽略。如前面提到的,如果把它置入其中,为了最好的保护,这些所有的标识信息或标识符最好是通过使用加/解密程序被加密,在运行PE期间,其中用于解密这些标识信息或标识符的解密程序必须能被利用,作为把这些标识信息或标识符进行解密之用。这些标识信息或标识符被解密后,就能用于把相关的多形态代码段的剩余部份进行解密。
究竟是否在多形态代码段中的加/解密钥匙存储位置内放置所有或部分这样的标识信息或标识符,或是全不放置其中,并且若放置其中时,这些标识信息或标识符是否应被加/解密的问题,是可以由PE的制造者或设计者来决定;这可根据PE的预设用途、运行PE的所在环境和预设PE所要达到的安全及保密程度来决定。
以下的实践步骤和例子举例并说明了如何可生成一个有可执行格式的PE。这些步骤和例子大体上勾画了如何设计和编写PE及把其中的多形态代码段加密的方法。熟悉这工艺的人员可根据他们各自些微差别的选择和设计作出相类似的实践。
编写可执行程序时并不可以确定,在实际运行时,可执行程序是会被加载到系统记忆中的那个位置。可执行程序的静态变量的参考记忆地址是以运行映象的首偏移的方式来存放的。可执行程序有一个独特的段落,即再定位表,内有这些偏移的指针。当可执行程序被装载时,操作系统将自动把可执行程序运行时的装载地址添加到这些偏移上,令致这些记忆地址成为有效。然而,如果这样的再次定位,即如上所述在偏移上添加运行时的装载地址,发生在多形态代码段装载时,它将会破坏代码的完整性,并令解密后的代码无法执行。因此,这样的再定位必须不用于多形态代码段。
下面描述了如何用C程序语言实现取消再定位;这是应用有别于实现再定位技术的其他编程技术。这原理同样适用于其他编程语言。
(a)避免在多形态代码段内使用全局变量的参考记忆地址。例如,多形态代码段不应包括以下功能。
int global_variable;
//多形态代码段开始
int foo()
{
return global_variable;
}
//多形态代码段结束
(b)避免在多形态代码段内使用静态本地变量的参考记忆地址。例如,多形态代码段不应包括以下功能。
//多形态代码段开始
int foo()
{
static int static_variable;
return static_variable;
}
//多形态代码段结束
(c)避免在多形态代码段内使用静态字符串。例如,多形态代码段不应包括以下功能。
//多形态代码段开始
char*foo()
{
return“Hello,world”;
}
//多形态代码段结束
(d)避免在多形态代码段内使用功能或全局变量指针。例如,多形态代码段不应包括以下功能。
int global_variable;
void foo1()
{
}
//多形态代码段开始
void foo2()
{
}
int foo3()
{
void*p1,*p2,*p3;
p1=&foo1;
p2=&foo2;
p3=&global_variable;
}
//多形态代码段结束
实际上,如本发明所揭示的,通过使用放置在多形态代码段外,在通用代码段内的wrapper function包装功能,可以获得以上功能想要的结果。例如,如下方式的代码是有效,(e)到(h)分别对应于(a)到(d):
(e)不在多形态代码段内使用全局变量的参考记忆地址,可以改为利用包装功能来使用全局变量的参考记忆地址。
int global_variable;
int global_variable_wrapper()
{
return global_variable;
}
//多形态代码段开始
int foo()
{
return global_variable_wrapper();
}
//多形态代码段结束
(f)不在多形态代码段内使用静态本地变量的参考记忆地址,可以改为以全局变量代替静态本地变量,并使用上述(e)中的方法来使用参考记忆地址。
(g)不在多形态代码段内使用静态字符串,可以改为利用包装功能来使用静态字符串。
char*static_string_wapper()
{
return“Hello,world”;
}
//多形态代码段开始
char*foo()
{
return static_string_wrapper();
}
//多形态代码段结束
(h)不在多形态代码段内使用功能或全局变量指计,可以改为利用包装功能来使用功能或全局变量指计。
int global_variable;
void foo1()
{
}
void foo2();//预先申明
void*function_pointer_wapper1()
{
return&foo1;
}
void*function_pointer_wrapper2()
{
return&foo2;
}
void*global_variable_pointer_wrapper()
{
return&gloal_variable;
}
//多形态代码段开始
void foo2()
{
}
int foo3()
{
void*p1,*p2,*p3;
p1=function_point_wrapper1();
p2=function_point_wrapper2();
p3=global_variable_pointer_wrapper();
}
//多形态代码段结束
下面描述产生多形态可执行程序的编码和加密过程:
(1)选择编写PE的编程语言;
(2)决定并设计通用代码段和多形态代码段中的特点或功能;
(3)如平常一样去设计并编写通用代码段中不涉及加/解密的一般代码,如有需要可根据上述并在下面(4)a)至(4)d)重叙的规则来为编写多形态代码段的需要而作出修改;
(4)根据以上提到并在下面重述的规则设计编写多形态代码段,如下所叙:
(4)a)不在多形态代码段内使用全局变量的参考记忆地址,代之而利用包装功能来使用全局变量的参考记忆地址;
(4)b)不在多形态代码段内使用静态本地变量的参考记忆地址,代之而以全局变量来取代静态本地变量并利用上述(4)a)的步骤来使用参考记忆地址;
(4)c)不在多形态代码段内使用静态字符串,代之而利用包装功能来使用静态字符串;
(4)d)不在多形态代码段内使用功能或全局变量指针,代之而利用包装功能来使用功能或全局变量指针;
(5)编写程序时,在多形态代码段的开始地方添加多形态代码段段头功能,其内包含有多形态代码段段头;多形态代码段段头包括:
(5)a)至少一个段头标识存储位置以存放段头标识。这位置及要存放其中的段头标识应有足够的长度,好让所使用的段头标识能容易地被识别出来,不会与一般执行代码混淆而分辩不开。例如,一个字节长度的段头标识容易和普通的执行代码混淆不清,不够长而不易鉴别。程序设计者和制造者可以为段头标识选择一个合适的标识,好让PE更容易鉴别出多形态代码段从哪里开始。这个段头标识标志出多形态代码段加/解密的起始点,在为制造PE而进行的加密过程当中,在多形态代码段进行加密时,这个段头标识会被利用。为了作出最佳的保护,在加密后,这个段头标识可以被加密或随机混杂,以防止多形态代码段会很容易地被黑客发现。但是否这样做,是取决于程序设计者或制造者所要达到的目的、安全和保护程度,而不是一定须要做的。当PE执行时,它是不需要利用这个段头标识来鉴别多形态代码段是从那里开始的,因为PE可以使用多形态代码段的段头功能来作为参考;
(5)b)加/解密钥匙存储位置,以存放标识信息或标识符,作为加/解密钥匙之用。如果加/解密钥匙仅只包含如上提到的从通用计算处理环境中采集或提供的标识信息或标识符,这存放位置可以被省略。如果加/解密钥匙存储位置包含标识信息或标识符,无论是从通用计算处理环境采集或提供的、或是在产生和加密PE时提供的,以用于加/解密进程,这存储位置必须如预计一样有足够长度以放置这些标识信息或标识符。如果没有被省略,加/解密钥匙存储位置和这些标识信息或标识符,无论是否被加密,必须被放置在(5)a)中的段头标识存储位置的前面;即是放置在多形态代码段的段首。这些放置在加/解密钥匙存储位置的标识信息或标识符是可以不被加密的。或者,如果在加密进程中被加密,并在后来解密后用于对相关的多形态代码段进行解密,这些加/解密必须使用加/解密程序来处理,其中的解密程序必须在PE运行的时候可以被取得和利用,以对这些标识信息或标识符进行解密。解密后的标识信息或标识符就可以被用于对有关的多形态代码段的其余部分进行解密;
(5)c)错误检测标识存储位置,以存放错误检测标识,用以检测解密后的代码是否可被执行。从多形态代码段的未经加密的可执行代码计算出来的校验数可被用于此目的之用。如果使用了这校验数,这校验数就要在多形态代码段被加密前,被放置在这存储位置并与多形态代码段的其余代码作为一整体,一起进行加/解密。该存储位置也可以包含一些预选的静态数据,如上描述的用在ExF错误处理中。如果不做错误检测,这存储位置则可被省略;
(6)在多形态代码段的末尾,添加多形态代码段段尾功能,其内包含有多形态代码段段尾。这段尾包含一个段尾标识存储位置,用以存放段尾标识。这位置及要存放其中的段尾标识应有足够的长度,好让所使用的段尾标识能容易地被识别出来,不会与一般执行代码混淆而分辨不开。例如,一个字节长度的段尾标识容易和普通的执行代码混淆不清,不够长而不易鉴别。程序的设计者和制造者可以为段尾标识选择一个合适的标识,好让PE更容易鉴别出多形态代码段从哪里结束。这个段尾标识标志出多形态代码段加/解密的结束点。在为制造PE而进行的加密过程当中,在多形态代码段进行加密时,这个段尾标识会被利用。为了作出最佳的保密,在加密后,这个段尾标识可以被加密或随机混杂,以防止多形态代码段很容易地被黑客发现。但是否这样做,取决于程序设计者或制造者所要达到的目的、安全和保护程度,而不是一定须要做的。当PE执行时,它是不需要利用这个段尾标识来鉴别多形态代码段是在那里结束的,因为PE可以使用多形态代码段的段尾功能来作为参考;
(7)编译代码,并为将要运行可执行程序的通用计算处理环境平台产生可执行程序;
(8)使用或,如有须要,复制一个由(7)中产生的可执行程序,运行一个预选的加密程序把这可执行程序或其复制版本进行加密。如有须要,可因应多个不同的授权状态,使用多个不同的加/解密钥匙,用以进行加密。依次执行如下步骤:
(8)a)对可执行程序进行扫描,找出多形态代码段的段头标识和段尾标识,用以判定把多形态代码段进行加密的起始点和结束点;
(8)b)为每个多形态代码段计算校验数,并把它填写在多形态代码段段头的错误检测标识存储位置。这校验数可从多形态代码段中的可执行代码中计算出来,这并不包括加/解密钥匙存储位置、段头标识存储位置、段尾标识存储位置及错误检测标识存储位置包含的信息。把根据这种方式计算出来的校验数存放在错误检测标识存储位置,并因保密需要,而与多形态代码段除去加/解密钥匙存储位置的其余部分,一起加密。如不用校验数,而用其他预选的静态数据,作错误检测之用,这些静态数据应同样地被存放在错误检测标识存储位置,并和有关的多形态代码段其余部分一起加密。如认为不须要作检测,则这一步骤可被省略;
(8)c)把多形态代码段进行加密,这加密可使用预选的加/解密算法、由多形态代码段设计者或制造者所提供用作加/解密钥匙的标识信息或标识符、从通用计算处理环境设备中采集的标识信息或标识符、由用户通过所有传递方式所提供用作加/解密之用的标识信息或标识符;这些传递方式可包括通过本地网络、互联网传递的,通过普通邮件或其他各种不同的传递分发方式送达的。为了对用作加/解密钥匙的标识信息或标识符作出最佳的保护,在多形态代码段段头的加/解密钥匙存储位置是可被省略的。若加/解密钥匙存储位置被省略的话,当PE在运行时,这些标识信息或标识符必须可从通用计算处理环境中采集得到或被提供用作加/解密之用。如加/解密钥匙存储位置没有被省略,它是可以被用来存放上述的标识信息或标识符的。是否存放,或是存放全部信息或部份信息,是可根据PE的设计及PE所设计的用途来加以决定的。如上所述,如用上校验数,那这校验数是须要好好地被加密,使之不容易被轻易修改。为了进行最佳保护,段头标识或段尾标识在加密后应当进行再加密或混杂,好让这些标识不能被加以利用,以找出加密后在PE中的多形态代码段的所在位置。但是否对这些标识进行加密或随机混杂,是取决于程序设计者或制造者所想要达到的目的、安全和要保护的程度来加以选择的。在加/解密钥匙存储位置的加/解密钥匙可以:
(8)c)i)仅包含如上提到的由通用计算处理环境中采集或提供的标识信息或标识符。如果这些标识信息或标识符有被包含的话,它们最好要被加密;或者
(8)c)ii)包含在产生或加密PE的进程时所提供的一些其他的标识信息或标识符,例如随机号码、或PE版本号的标识符、或PE制造者的标识符等。如果这些标识信息或标识符有被包含的话,它们最好要被加密;或者
(8)c)iii)包含(8)c)i)和(8)c)ii)中的标识信息或标识符。如果这些标识信息或标识符有被包含的话,它们最好要被加密;或者
(8)c)iv)被省略掉,如果这是要对被用作加/解密钥匙的标识信息或标识符作出最佳保护的话。但这必须确保在PE运行时,这些标识信息或标识符是可由通用计算处理环境中采集得到或提供,用以作加/解密之用。
在实现本发明所揭示的方法中,每个多形态代码段的段头由一个多形态代码段段头功能来标志,段尾则由多形态代码段段尾功能来标志。多形态代码段的开始是加/解密钥匙存储位置,如果它没有被省略的话,如有省略,多形态代码段则始于多形态代码段段头标识存储位置。多形态代码段的加/解密通常在加/解密钥匙存储位置之后开始,即不包括加/解密钥匙存储位置,如果它存在的话。加/解密在多形态代码段段尾标识存储位置之后结束,即包括这个段尾标识存储位置。如上所述,如果有加/解密钥匙,它是被存放在多形态代码段的其余部份的前面。这些其余部分会进行正常的加/解密进程而加/解密钥匙则不会。所以如果加/解密钥匙是存在的话,它可以是不加密的,或它须要被一个加/解密程序如上所述的进行加/解密;这个加/解密程序中的解密程序在PE运行时应可以被用来把加/解密钥匙进行解密。经解密后,这个加/解密钥匙可以被用来对多形态代码段的其余部分进行解密。
根据本发明所揭示的方法要点,熟悉此工艺的人员可以实施出不同的设计来达到相同的效果。例如,如上所述,可以在多形态代码段段头设计有一个加/解密钥匙存储位置和一个错误检测标识存储位置,或者把这两个存储位置设计成存放在多形态代码段段尾之内。可存放在ExF或DF之内的错误检测和异常处理进程亦可根据是否有需要而决定是否省略。又或熟悉此工艺的人员亦可以完全不采用多形态代码段段头功能和多形态代码段段尾功能而设计出其他方法来鉴别多形态代码段,只要通过如此设计的PE是可被执行的,并且在其中的多形态代码段可被正确地鉴别出来,以便进行加/解密和执行之用。在以下的描述,本发明会介绍一些实施细节的不同形式,用来把多形态可执行程序转化为EUC含不可执行代码的可执行程序或PEUC含不可执行代码的多形态可执行程序。
有关PE的运行和相关的解密进程现在描述如下:
(9)当PE被装载时,多形态代码段如普通代码一样会被装载到记忆之内;
(10)当PE需要调用多形态代码段中的功能,通过程序设计,PE是可以知道该功能是放在那个多形态代码段当中的。在调用多态形代码段中的功能前,PE可参考相应的多形态代码段段头功能和段尾功能的位置来把多形态代码段定位。利用定位信息,PE对多形态代码段进行解密,这不包括加/解密钥匙存储位置在内,这是利用相应的DF来进行解密的,一如下述:
(10)a)PE必须检测多态形代码段是否已经解密才进行解密。例如,这个检测可以通过为多形态代码段实施一个加/解密堆栈,正如下面有关多次加/解密的叙述一样。如果多形态代码段已经被解密,PE仅仅调用多态形代码段中所想调用的功能并执行下面的(10)f)。如果多形态代码段没有被解密,PE执行下面的(10)b)。
(10)b)如果在多形态代码段的段头没有加/解密钥匙存储位置,DF可使用RF从通用计算处理环境设备中得到的标识信息或标识符作为钥匙进行解密之用,并执行下面的步骤(10)c)。这标识信息或标识符可以是在PE运行时经采集或被提供获得的,或是两者俱有。如果在加密钥匙存储位置有加/解密钥匙,DF会从多形态代码段段头提取加/解密钥匙。如果该被提取的加/解密钥匙未经加密,DF会执行下面的(10)c)。如为了最佳保护,该钥匙已经加密的话,DF会调用解密程序把这钥匙进行解密。这解密程序是和用以把钥匙加密的加密程序相对应的。在一些实现方案下,这钥匙可以是一条局部钥匙,可与经RF从通用计算处理环境设备中得到的标识信息或标识符一起作为钥匙,用以解密之用。这得到的标识信息或标识符,可以是经采集或被提供获得的,或是两者俱有。然后DF接着执行下面的(10)c);
(10)c)DF使用在(10)b)中获得的钥匙把除了加/解密钥匙存储位置及在其内的钥匙的多形态代码段解密;并接着执行下面步骤(10)d);
(10)d)如果错误检测标识存储位置存在并存放着一个校验数或标识符,DF接着计算可执行代码的校验数,并与存放在多形态代码段段头的错误检测标识存储位置中的值作出比较,或校验标识符是否正确。如果不匹配或标识符不正确,这显示该代码已被破坏并不能使用。DF跳转到错误处理程序,或调用ExF作错识处理。如果匹配上了或标识符正确又或没有错误检测标识存储位置,DF返回,及PE继续执行下面的(10)e);
(10)e)PE调用刚解密的多形态代码段中所须要用的功能。如果需要,PE执行下面(10)f);如果不需要执行(10)f),PE在调用的功能返回后继续执行后续的程序逻辑;
(10)f)如果需要格外安全,PE调用的功能在返回之前应调用相应的加密算法来再次把多形态代码段加密。如不需要,则不用再次加密并直接返回。然后PE在调用的功能返回后继续执行后续的程序逻辑。
可以用多种编程语言和在多个操作系统中实现以上方法。编程语言的必要条件是使用的语言允许在代码段中插进原始数据,并允许标记一段代码。例如,在C语言中,使用内嵌汇编可把原始数据加入到代码段。功能是按次序编译的。因此它允许标记一个段落,例如,通过放置两个功能,段头功能在首,段尾功能在尾,来作为标记,一如上述的多形态代码段段头功能和段尾功能。汇编和许多结构语言,例如C,C++,Pascal,都满足这些需求。操作系统需求是它应允许可执行程序直接写入代码段。一些操作系统,例如DOS,包括MSDOS和FreeDOS,是不保护代码段的,这样不需要特别多做什么。微软视窗家族的其它操作系统,通常不允许直接写进代码段。然而,使用特殊的连接选项,代码段的属性是可以改变的,使之可被写入。
为了进一步改进,本发明中揭示的加/解密方案可被,按如下方式,修改或提高:
(11)可以应用多种预选的加/解密算法。每段可以利用加/解密堆栈进行多次加/解密。推入堆栈是指加上另一次加密,而堆栈弹出则是指删除了最后一次的加密。每段都有各自的堆栈和其它段的堆栈不同;
(12)在运行时,PE可以对为任何特定多形态代码而设的加/解密堆栈进行修改,即推入或弹出,但在调用代码段中的功能时,该堆栈必须是空的;
(13)当多形态代码段的功能被调用并返回时,如有需要,PE可以为该代码段再次创造加/解密堆栈。堆栈的新加/解密算法或钥匙是可和原先的不同;
(14)可把一个多形态代码段嵌入另一个多形态代码段当中,每段都有各自的加/解密堆栈。视乎安全需要的水平,可以对多形态代码段实施多层外包和内嵌。当然,为了运用内在的代码段,外在的代码段必先解密或即把这些外在代码段的相应加/解密堆栈清空;
(15)加/解密程序可以隐藏在多形态代码段内。当然,要使用这加/解密程序,有关的多形态代码段必须先被解密,利用另外一个未被加密的或已被解密的加/解密程序来进行解密。
所以上述的改进代表了一些不同的方法,用以进一步保护可执行程序中多形态代码段内的功能和特点。简单说,可以总结为如下方法,用以制造可执行程序,对多形态代码段加以运用:应用多形态代码段的套入技术;在套入多形态代码段中应用内嵌隐藏加/解密算法;执行多次加/解密技术;利用多种加/解密算法实现加/解密的技术;无论是否应用堆栈,实施动态的单次或/和多次的加/解密技术,这就是在可执行程序运行时,把多形态代码段进行加/解密和再加/再解密。
任何的可执行程序或程式或可执行代码都可以被转换成多形态可执行程序。操作系统是可执行代码、可执行程序或程式的集合。所以,任何操作系统都可变换成包含相应的多形态可执行程序的多形态操作系统。所以本发明同样可以应用到通用操作系统中,不单止是个别的可执行代码或可执行程序或程式。多形态操作系统的可执行程序不须要全部都以多形态可执行程序的形式出现;只须要把多形态操作系统所预计要保护的功能、特点或用以帮助有关的多形态操作系统进行安装、激活、验证和起动的小量安装文件,启动文件或重要的内核文件转变为多形态可执行程序就可以了。上述的这些文件都是适合作这用途的。
为了方便,多形态操作系统在这里是定义为由不同组合的、普通可执行程序、多形态执可行程序和相关的变体所组成的操作系统。这些PE的相关变体包括EUC和PEUC。
EUC和PEUC被认为是PE的变体,用在网络联通的通用计算处理环境中的设备,无论是通过本地网或互联网联通;或者,用于取代在EUC和/或PEUC中不可执行代码段里的不可执行代码的可执行代码,是可从运行着相关的EUC和/或PEUC的通用计算处理环境中提取获得的,可以是通过网络联接,无论是通过本地网或互联网联接,而获得的。
EUC是一个可执行程序,包含了有着可执行代码的可执行通用代码段和有着不可执行代码的不可执行代码段,这不可执行代码可以是以全零或全一或在全零或全一之间的任何随机混杂形式出现。PEUC是一个可执行程序,包含了有着可执行代码的可执行通用代码段和最少一个多形态代码段;这多形态代码段,如不在使用时,是有着已加密了的不可执行代码,如在使用时,就有着解密后的可执行代码;以及包含了一个或多个不可执行代码段,有着不可执行的代码,以全零或全一或两者之间的随机混杂形式出现。这还可以有如下的变化。即在EUC或PEUC中的不可执行代码段,在上述的形式之上,可覆盖某些匹配信息。这些匹配信息可用作找出不可执行代码段是在那个位置,并且可用于当EUC或PEUC在运行时,把相应的加密多形态代码段与不可执行代码段匹配起来,好让多形态代码段可以取代不可执行代码段。这是假设这些匹配位置信息,即有关的多形态代码段是在PE中那里起始和结束的位置信息,并没有存放在该已加密的多形态代码段内;这多形态代码段是会被存储在服务器,计算机、机器或设备中的,它们是用来管理这些加密了的多形态代码段及相关的位置匹配信息的,把这些加密后的多形态代码段和相关的位置匹配信息分发或传递到在设备中运行的EUC或PEUC之用。
当EUC和PEUC在执行时,EUC和PEUC的不可执行代码段中的不可执行代码将被相应的多形态代码段所取代,在不用时,是以加密了的不可执行代码格式出现,在使用时是以解密后的可执行代码格式出现,好让EUC和PEUC在通用计算处理环境获授权状态下可以成功执行。EUC或PEUC应该有功能来接收多形态代码段及其匹配位置信息,用以取代替换相应的不可执行代码段。如果没有相应的多形态代码段的匹配位置信息,EUC或PEUC则必须有功能来鉴别相应的多形态代码段应被存放在何位置,以取代不可执行代码段。这些功能可以被安放在通用代码段,例如可以独立地以独立功能的形式包含在RF或DF当中,或者当被需要使用时可以被调用得到。
可按如下进程制造EUC或PEUC,其中在制造EUC时把PE内所有的多形态代码段转换成不可执行代码段;在制造PEUC时只把部分而非所有的多形态代码段转换成不可执行代码段。
(16)a)如上面(8)所描述的,制造包含有加密多形态代码段的相应PE;
(16)b)在相应的PE中提取加密了的多形态代码段。这样提取的加密了的多形态代码段将被保存或存储在服务器或计算机或机器或设备内,它们是用来管理这些多形态代码段的,用以分发或传递这些加密多形态代码段给予在设备中运行的EUC或PEUC之用。这些多形态代码段亦可以被存放在可被存取的固定或可移动存储介质,可被在设备中运行的EUC或PEUC所利用;
(16)c)确定查找出匹配位置信息,并把它保存或存储起来;这信息是有关相应PE的加密多形态代码段的起始和结束位置。这些匹配位置信息最好和相应加密了的多形态代码段一起被保存或存储到服务器、计算机、机器或设备中加以管理,这是为了分发或传递这些加密了的多形态代码段和相应的匹配位置信息,给予在设备中运行的EUC和PEUC使用;或保存或存储在一些可存取的固定或可移动的存储介质中,让运行在设备中的EUC可以利用。这一步骤不是必须的,如果这些匹配位置信息是可通过比对加密了的多形态代码段与运行中的EUC或PEUC的相应不可执行代码两者的数字指模,从而获得确定或可以重建出来。例如,这些鉴定或再重建过程可以依据一些在不可执行代码段中余下的鉴别信息,例如加/解密钥匙,段头标识,段尾标识,校验数或错误检测标识,或用于这些目的的其它信息;这些可鉴别信息可与在相应的加密多形态代码段内的相应信息匹配起来,从而可以正确无误的确定出加密了的多形态代码段应被存放在那个位置,用以取代在EUC或PEUC中的相应不可执行代码段;
(16)d)把加密了的多形态代码段转变成不可执行代码,从而建立不可执行代码段,可以是全零或全一或是两者之间的一个随机混杂形式出现;如有需要,例如加密了的多形态代码段的匹配位置信息不能被运行中的EUC或PEUC所使用,在这式样之上可以覆盖上如(16)c)中所须的匹配信息。
PE,EUC,PEUC的分发、执行和使用过程现描述如下:
(17)所有这些可执行程序,包括多形态可执行程序、含不可执行代码的可执行程序、含不可执行代码的多形态执行程序,与及经分别提取或建立的,用以取代在EUC和PEUC内相应的不可执行代码段的多形态代码段和相应的匹配位置信息,一起可以通过本地网络或互联网或普通邮件或其它传输方式或其它传递分发方式分发到设备中使用。其它一般的可执行程序,正如在发布一个多形态操作系统时要求一样,可以在一起分发;
(18)如上面(9)和(10)所描述的,当PE运行时,用作加/解密钥匙的标识信息或标识符,是通过通用代码段中的RF,从多形态代码段中的加/解密钥匙存储位置提取出来,或/和从通用计算处理环境中提取出来,和/或由使用PE的用户实时提供,和/或通过网络,无论是本地网或互联网,由管理这些钥匙的服务器或计算机或机器或设备提供,用于把PE中的多形态代码段加/解密之用,令PE可以在设备中的不同授权状态下可以成功执行;
(19)当EUC运行时,它像普通代码一样被装载到记忆中;
(20)当EUC运行并试图调用一个功能时,它首先确定该功能所在的不可执行代码段的位置;
(21)然后EUC通过网络,无论本地网或互联网,从管理服务器或计算机或机器或设备获得这些相应的多形态代码段和相应的匹配位置信息,或者从相应的多形态代码段和不可执行代码段中确认出相应的匹配位置信息,以作替代在EUC中的不可执行代码段之用;
(22)a)EUC把获得的多形态代码段解密;解密是使用相应的加/解密算法,和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件或其他传递分发途径提供的标识信息或标识符作为加/解密钥匙;EUC然后把刚解密的多形态代码段取代了相应的不可执行代码段,这是根据相应的匹配位置信息而作出的。
(22)b)或者EUC用刚获得的多形态代码段取代相应的不可执行代码段,这是使用相应的匹配位置信息而作出的;然后把EUC中未经解密的多形态代码段加以解密,解密是使用相应的加/解密算法,和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件或其他传递分发途径提供的标识信息或标识符作为加/解密钥匙;
(23)EUC调用刚置换到EUC中的多形态代码段中的功能;
(24)取决于设计而定,(23)中EUC调用的功能在返回前,可以调用相应的加密算法把多形态代码段再加密。或者该功能简单地返回,而不调用相应的加密算法去再加密。并且在调用的功能返回后,EUC立即继续程序的逻辑去执行;
(25)当PEUC运行时,它像普通代码一样被装载到记忆中;
(26)当PEUC运行并试图调用一个功能时,它首先确定该功能所在的不可执行代码段或多形态代码段的位置;
(27)如果该功能是在一个多形态代码段,PEUC会像(10)中描述PE所做的一样而执行;
(28)如果该功能是在一个不可执行代码段,PEUC会通过本地网络、因特网,从管理服务器或计算机或机器或设备,获得相应的多形态代码段和相应的匹配位置,或者它从相应的多形态代码段和不可执行代码段中鉴别出的匹配位置信息,用以取代PEUC中的不可执行代码段;
(29)a)PEUC把获得的多形态代码段解密,解密是使用相应的加/解密算法和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件或其他传递分发途径提供的标识信息或标识符作为加/解密钥匙;PEUC然后把刚解密的多形态代码段取代了相应的不可执行代码段,这是根据相应的匹配位置信息而作出的;
(29)b)或者PEUC用刚获得的多形态代码段取代相应的不可执行代码段,这是使用相应的匹配位置信息而作出的;然后把PEUC中未经解密的多形态代码段加以解密,解密是使用相应的加/解密算法,和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件或其他传递分发途径提供的标识信息或标识符作为加/解密钥匙;
(30)PEUC调用刚置换到PEUC中的多形态代码段中的功能;
(31)取决于设计而定,(30)中PEUC调用的功能在返回前,可以调用相应的加密算法把多形态代码段再加密。或者该功能简单地返回,而不调用相应的加密算法去再加密。并且在调用的功能返回后,PEUC立即继续程序的逻辑去执行;
除了如上对执行EUC和PEUC的描述外,EUC和PEUC须有一个功能,以便使用匹配位置信息,成功用相应的多形态代码段分别取代相应的不可执行代码段。如果这些匹配位置信息没有被保存或存储下来,或不能被EUC或PEUC在运行时所用,EUC或PEUC必须有其它的机制或功能,以鉴别定位所获取的多形态代码段的位置,以取代相应的不可执行代码段。这鉴别进程可以依赖一些留在不可执行代码段内的鉴别信息,例如加/解密钥匙,段头标识,段尾标识,校验数或错误检测标识,或其它用于这目的的信息;这些鉴别信息可与相应的多形态代码段中的相应的信息匹配起来,以正确鉴别定位出在何处放置多形态代码段,以取代EUC或PEUC中的相应不可执行代码段;
当然,若遗留有这些匹配信息,EUC或PEUC就不像PE那样能对其中的知识产权作出高度的安全保护;
(32)如果EUC或PEUC不在网络环境或只是存在于独立的未连接的设备,用于取代EUC或PEUC内相应的不可执行代码段的多形态代码段和它们的匹配位置信息必须可以被利用得到,例如被保存或存储在一些固定或可移动的存储介质,可让在设备中运行的EUC或PEUC所用。这样EUC或PEUC,就如在上所述与网络环境连接的设备一样,继续运行。
制造POS的进程,即制造一个操作系统可包含有不同程度不同组合的普通执行程序、PE、EUC、PEUC,这组合中至少有一个PE或一个EUC或一个PEUC,和从相应的PE、EUC和PEUC中提取获得的多形态代码段和相应的匹配位置信息,这个进程至少包括如下其中的一步:
(33)a)一如上描述的制造PE;
(33)b)一如上描述的制造EUC;
(33)c)一如上描述的制造PEUC。
POS的执行至少包括如下其中一步:
(34)a)一如上描述的执行PE;
(34)b)一如上描述的执行EUC;
(34)c)一如上描述的执行PEUC。
分发和使用POS的进程如下:
(35)所有的执行程序,包括普通执行程序,PE,EUC,PEUC,和如上所述的从相应的PE,EUC和PEUC中提取获得的多形态代码段以及相应的匹配位置信息,可以通过本地网络或互联网或普通邮件或其它传递和分发方式分发,以便在设备中使用;这可帮助安装、激活、验证和启动的过程,例如,可以使用小量的安装文件、启动文件或关键内核文件,这些文件是PE,EUC,PEUC格式的;亦可以帮助保护嵌入于PE、EUC、PEUC和作为一个整体的多形态操作系统的知识产权。
可以使用PE来加以说明,本发明与其它常用于保护执行程序的加/解密外壳或包装方法有以下方面的不同:
(I)使用本发明,在加密的可执行程序中是没有明显的标识的。在其它加/解密外壳或包装中,通常在可执行程序中包有一些信息显示出它是那一个加/解密外壳或包装,这样就可以设计出一个标准的方法,来为经过外壳或包装处理的可执行程序移除相关的加/解密外壳或包装。
(II)使用本发明,那一段代码应被加/解密并作为多形态代码段是可在原始代码中作出选择的,这选择完全可以由设计者和制造者决定,决定那段代码将被加/解密。在其它加/解密外壳或包装中,将被保护的执行程序是作为一个整体被加/解密的。这将相对容易地去掉加/解密外壳或包装从而获得原始的整体执行程序。然而,应用这个发明,执行程序可不再作为一个整体去被加/解密,PE中的通用代码段和多形态代码段可被设计成,以斑马线或条状形式地排列开来。每个多形态代码段本身独自是不可执行的,这样,要通过逆向工程来破解PE并重组个别的通用代码段和多形态代码段,要比破解那些采用加/解密外壳或包装的可执行程序来得困难。如果再加上如上所述的改进方法,如采用多次加/解密并使用隐藏在多重嵌套的多形态代码段内的不同加/解密算法,破解将更加困难。这样就不可能设计出任何标准的方法来加以破解,或以逆向工程重建和重组经采用本发明而设计出的PE。
通过本发明,使得无须使用特别设计的装置,便可在通用计算处理环境中的设备运行PE及其变体EUC和PEUC以及POS。
例如,运行在不同授权状态中的PE是不同的。通过对存储在存储介质中的可执行程序进行简单的复制或破解,从而侵犯知识产权是可能的。但是通过反向工程来把在系统记忆中运行的PE影像进行重组将面对极大的困难,如难于确定多形态代码段的起始和终结点,难于打破以不同加/解密算法进行多重加/解密和多重嵌套的多形态代码段,和难于把流转于多重嵌套的多形态代码段之间的程序逻辑进行追踪。
由于通用代码段和多形态代码段的分离、放置、并列和嵌套并没有标准的样式,而且多形态代码段可以透过使用不同的加/解密算法进行多次加/解密,这亦是没有标准做法的。这使得在系统记忆中运行的PE变成一个动态常变的映像,对黑客来说形成一个极大的如果不是不可克服的障碍;使黑客难于通过逆向工程来重建和重组出一个,拥有原有程序所有功能并且能有序排列的可执行运行映像,来成功运行。如果当前有不止一个而是多个同时运行的PE的话,那么以上工作的困难会倍增起来。而如果花费在逆向工程和重建重组PE上面的时间比重新重写程序还要多的话,黑客显然就会放弃了。
因此本发明提供了一种更灵活更有效的方法,用以保护包含在可执行程序中的智能活动。根据包含在可执行程序之内的知识产权所需要的安全和保护程度,程序设计者或制造者可以不同组合实施本发明中所勾划的特点;从一个PE拥有只一个通用代码段和一个多形态代码段,到另外一个PE有着多个通用代码段和多个嵌套着的多形态代码段,以不同隐藏着的预选加/解密算法,来进行多次的加/解密。
如果可以把PE或EUC或PEUC运行在一个网络环境,在其中多形态代码段可从服务器传递给客户机使用,或从一个机器传递给另一机器使用的话,安全和保护的程度可以进一步提高。这些多形态代码段亦可以用并不预知而只是当PE或EUC或PEUC在运行时才提供的加/解密钥匙及其算法来加以加/解密。在任何运行中的时间,若未被使用的话,多形态代码段都可以转变为随机混杂的不可执行代码段。
因此,PE或EUC或PEUC与及多形态代码段和加/解密钥匙都可以通过网络分发。基于此,多形态操作系统的分发,部署和激活就成为可能。一个多形态操作系统不需要它所有的可执行程序都以PE或EUC或PEUC的格式出现,它只需要少量的安装文件、启动文件或关键内核文件以这些格式出现,就可以让任何操作系统可以安全地部署和激活。这些少量的安装文件、启动文件或关键内核文件可以以PE,EUC或PEUC的格式或这些格式的组合来加以提供。这些少量的安装文件、启动文件或关键内核文件就可以很方便地通过网络被提供用来作为激活和运行多形态操作系统之用。这些少量的安装文件、启动文件或关键内核文件亦可被永久保存在多形态操作系统将要运行的设备中。这操作系统,或如以上提及所保存的少量的安装文件、启动文件或关键内核文件,当被迁移到另外一个有着相同结构的设备中时,是不能被成功运行的。如果多形态操作系统中的所有文件都被设计成PE或EUC或PEUC格式,那么把这个操作系统从一个设备复制到另一个设备而可以被使用的可能性几乎不存在。顺带提及,即将到来的微软视窗VISTA操作系统仍然不是一个多形态操作系统,尽管它被声明是以更先进的加密算法来加密运行的。如果安装在硬盘,微软视窗VISTA是可以被迁移和运行在有着同样结构的每台机器上的。不需要迁移已安装的硬盘,一个经复制的硬盘同样可以工作。
具体实施方式
本发明的最佳和最简单的表现是制造、分发、和在设备中执行多形态执行程序。这提供了最安全的保护方法来为嵌入在可执行程序的知识产权提供保护。它避免了,因要以多形态代码段,来取代在设备中运行的EUC或PEUC里的不可执行代码段,所引起的复杂性,无论是否连接到网络工作环境。
实现这种保护软件程序及其代表的知识产权的方法的变体是制造、分发和在设备中执行EUC或PEUC,无论是否连接到网络。
另一个同样的变体是如上述的制造、分发和在设备中执行多形态操作系统,无论是否连接到网络。
因此,本发明是帮助保护了以可执行代码为代表的知识产权。多形态可执行程序,含不可执行代码的可执行程序,或这两者的混合,即含不可执行代码的多形态可执行程序,和多形态操作系统,都可以被设计、制造和分发,无论是否通过网络,于通用计算处理环境中的设备,在授权状态下使用。
可以利用本发明中揭示的原理来设计操作系统,这可以设计出新的可执行格式和使之标准化。制造可执行程序的编程和编译工具如程序语言、宏程序、编译器和预编译器或预处理器等,都可以被设计和制造出来,以方便制作PE、EUC、PEUC和多形态操作系统。
实现本发明的先前技术包括加/解密算法和使用这些算法的知识;产生可执行代码和操作系统的编程言语和编译工具及相关知识;可运行可执行代码的硬件设备,无论是否网络连接的或独立的,包括计算机系统或由计算机控制的设备或由操作系统控制的设备或系统;以及计算机可执行的或操作系统可执行的指令或程序,用以帮助实现本发明的方法步骤。结合运用上述先前技术的技术特点,本发明使制造、分发和在设备中运行可执行代码成为可能,这些可执行代码是以多形态可执行程序,含不可执行代码的可执行程序,含不可执行代码的多形态可执行程序和多形态操作系统的方式出现,并可在授权状态下运行以保护知识产权。这些可执行代码可以是启动代码,程序,应用程序,设备驱动或这些可执行程序组合形成的操作系统,可以以可执行代码的形式嵌入或存储在硬件其中,包括所有种类的存储介质,如唯读、可再写、易挥发、不易挥发的存储介质,可以以虚拟磁盘的形式存在于物理记忆或内部动态随机存取记忆、硬盘、固态闪盘、唯读记忆,或唯读、可再写CD/DVD/HD-DVD/BluRayDVD、硬件芯片、芯片组中等等。
Claims (12)
1.一种制造多形态可执行程序的方法,其特征在于:用于用可执行指令或程序来实现并在设备中运行,这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备,后面统称设备;用以在设备中制造可执行代码,所述可执行代码包括启动代码,程序,应用程序,设备驱动及以这些可执行程序组合形成的操作系统,以可执行代码的形式嵌入或存储在硬件其中,所述硬件包括所有种类的存储介质,亦包括以虚拟磁盘的形式存在于物理存储器中;这可执行代码以多形态可执行程序的方式出现,在授权状态下运行;这方法包括以下步骤用以制造多形态可执行程序:
(1)选择编写多形态可执行程序的编程语言;
(2)决定并设计通用代码段和多形态代码段中的特点或功能;
(3)如平常一样去设计并编写通用代码段中不涉及加/解密的一般代码;
(4)根据下面的规则设计编写多形态代码段:
(4)a)不在多形态代码段内使用全局变量的参考记忆地址,代之而利用封装功能来使用全局变量的参考记忆地址;
(4)b)不在多形态代码段内使用静态本地变量的参考记忆地址,代之而以全局变量来取代静态本地变量并利用(4)a)的步骤来使用参考记忆地址;
(4)c)不在多形态代码段内使用静态字符串,代之而利用封装功能来使用静态字符串;
(4)d)不在多形态代码段内使用功能或全局变量指针,代之而利用封装功能来使用功能或全局变量指针;
(5)在多形态代码段的开始地方添加多形态代码段段头功能,其内包含有多形态代码段段头;多形态代码段头包括至少一个段头标识存储位置以存放段头标识;
(6)在多形态代码段的末尾地方添加多形态代码段段尾功能,其内包含有多形态代码段段尾;多形态代码段尾包括至少一个段尾标识存储位置以存放段尾标识;
(7)编译所设计和编写的程序,并产生可执行程序;
(8)使用或复制一个由(7)产生的可执行程序,并且运行一个预选的加密程序把这可执行程序或其复制版本进行加密,以如下顺序进行:
(8)a)对可执行程序进行扫描,找出多形态代码段的段头标识和段尾标识,用以判定把多形态代码段进行加密的起始点和结尾点;
(8)b)把多形态代码段进行加密,这加密使用预选的加/解密算法、由多形态代码段设计者或制造者所提供用作加/解钥匙的标识信息或标识符、从设备中采集的标识信息或标识符、由用户通过所有传递方式所提供用作加/解密之用的标识信息或标识符;这些传递方式包括通过本地网络、互联网传递的,通过普通邮件传递分发方式送达的。
2.根据权利要求1所述一种制造多形态可执行程序的方法,其特征在于:该方法用于分发用于加密的标识信息或标识符和多形态可执行程序;这方法至少包括以下其中一个步骤用以分发用于加密的标识信息或标识符和多形态可执行程序以便在设备中使用:
(1)通过本地网,在设备中运行可执行指令或程序来实现传输分发用于加密的标识信息或标识符和多形态可执行程序;所述设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备;
(2)通过互联网,在设备中运行可执行指令或程序来实现传输分发用于加密的标识信息或标识符和多形态可执行程序;所述设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备;
(3)通过普通邮件分发,其特征在于:多形态可执行程序以可执行代码的形式嵌入或存储在硬件其中,包括所有种类的存储介质,以普通邮件分发;并且用于加密的标识信息或标识符嵌入或存储在硬件其中,包括所有种类的存储介质,以普通邮件分发。
3.一种运行多形态可执行程序的方法,其特征在于:用于用可执行指令或程序来实现并在设备中运行,这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备,后面统称设备;用以在设备中执行可执行代码,所述可执行代码包括启动代码,程序,应用程序,设备驱动及以这些可执行程序组合形成的操作系统,以可执行代码的形式嵌入或存储在硬件其中,所述硬件包括所有种类的存储介质,亦包括以虚拟磁盘的形式存在于物理存储器中;这可执行代码以多形态可执行程序的方式出现,在授权状态下运行;这方法包括以下步骤用以执行多形态可执行程序:
(1)多形态可执行程序被装载,在多形态可执行程序内的多形态代码段如普通代码一样也被装载到记忆之内;
(2)a)当多形态可执行程序执行并试图调用多形态代码段中的功能时,它首先定位多形态代码段;
(2)b)接着,在初次过程中多形态可执行程序对多形态代码段进行解密,在后面的过程中多形态可执行程序检查多形解密态代码段是否已经被解密,如果已经解密,就不需要解密;否则,多形态可执行程序要对多形态代码段进行解密;解密是使用相应的加/解密算法和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件传递分发途径提供的标识信息或标识符作为加/解密钥匙;
(2)c)多形态可执行程序调用经由(2)b)解密的多形态代码段中的功能;
(2)d)取决于设计而定,(2)c)中多形态可执行程序调用的功能用于在返回前调用相应的加密算法把多形态代码段再加密;或者该功能简单地返回而不调用相应的加密算法去再加密;在调用的功能返回后,多形态可执行程序立即继续程序的逻辑去执行。
4.一种制造含不可执行代码的可执行程序的方法,其特征在于:用于用可执行指令或程序来实现并在设备中运行,这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备,后面统称设备;用以在设备中制造可执行代码,所述可执行代码包括启动代码,程序,应用程序,设备驱动及以这些可执行程序组合形成的操作系统,以可执行代码的形式嵌入或存储在硬件其中,所述硬件包括所有种类的存储介质,亦包括以虚拟磁盘的形式存在于物理存储器中;这可执行代码以含不可执行代码的可执行程序的方式出现,在授权状态下运行;这方法包括以下步骤,用以把多形态可执行程序中的所有多形态代码段转换成不可执行代码段:
(1)按照以下步骤制造多形态可执行程序:
(1)a)选择编写多形态可执行程序的编程语言;
(1)b)决定并设计通用代码段和多形态代码段中的特点或功能;
(1)c)如平常一样去设计并编写通用代码段中不涉及加/解密的一般代码;
(1)d)根据下面的规则设计编写多形态代码段:
(1)d)i)不在多形态代码段内使用全局变量的参考记忆地址,代之而利用封装功能来使用全局变量的参考记忆地址;
(1)d)ii)不在多形态代码段内使用静态本地变量的参考记忆地址,代之而以全局变量来取代静态本地变量并利用(1)d)i)的步骤来使用参考记忆地址;
(1)d)iii)不在多形态代码段内使用静态字符串,代之而利用封装功能来使用静态字符串;
(1)d)iv)不在多形态代码段内使用功能或全局变量指针,代之而利用封装功能来使用功能或全局变量指针;
(1)e)在多形态代码段的开始地方添加多形态代码段段头功能,其内包含有多形态代码段段头;多形态代码段头包括至少一个段头标识存储位置以存放段头标识;
(1)f)在多形态代码段的末尾地方添加多形态代码段段尾功能,其内包含有多形态代码段段尾;多形态代码段尾包括至少一个段尾标识存储位置以存放段尾标识;
(1)g)编译所设计和编写的程序,并产生可执行程序;
(1)h)使用或复制一个由(1)g)产生的可执行程序,并且运行一个预选的加密程序把这可执行程序或其复制版本进行加密,以如下顺序进行:
(1)h)i)对可执行程序进行扫描,找出多形态代码段的段头标识和段尾标识,用以判定把多形态代码段进行加密的起始点和结尾点;
(1)h)ii)把多形态代码段进行加密,这加密使用预选的加/解密算法、由多形态代码段设计者或制造者所提供用作加/解钥匙的标识信息或标识符、从设备中采集的标识信息或标识符、由用户通过所有传递方式所提供用作加/解密之用的标识信息或标识符;这些传递方式可包括通过本地网络、互联网传递的,通过普通邮件传递分发方式送达的;
(2)从(1)制造的多形态可执行程序中提取加密了的多形态代码段;把提取了的加密了的多形态代码段保存或存储在管理服务器或计算机或机器或设备内的存储介质,用以分发或传递这些加密多形态代码段给予在设备中运行的含不可执行代码的可执行程序之用;或把这些加密了的多形态代码段保存或存储在可被存取的固定或可移动存储介质,被在设备中运行的含不可执行代码的可执行程序所利用;
(3)确定查找出匹配位置信息,这信息是有关相应多形态可执行程序的加密多形态代码段的起始和结束位置,并把它保存或存储在管理服务器或计算机或机器或设备内的存储介质或在可被存取的固定或可移动存储介质,给予在设备中运行的含不可执行代码的可执行程序之用;或如有必要,把一些鉴别信息留在不可执行代码段中,如加/解密钥匙,段头标识,段尾标识,校验数或错误检测标识,或其它鉴别信息,用以与在相应的加密多形态代码段内的相应信息匹配起来,从而正确无误的确定出加密了的多形态代码段应被存放在那个位置,用以取代在含不可执行代码的可执行程序中的相应不可执行代码段;
(4)把加密了的多形态代码段转变成不可执行代码,从而建立不可执行代码段,是全零或全一或是两者之间的一个随机混杂形式出现;如有需要,加密了的多形态代码段的匹配位置信息不能被运行中的含不可执行代码的可执行程序所使用,在这式样之上覆盖上如(3)中所须的匹配信息。
5.根据权利要求4所述一种制造含不可执行代码的可执行程序的方法,其特征在于:该方法用于分发用于加密的标识信息或标识符和含不可执行代码的可执行程序;这方法至少包括以下其中一个步骤用以分发用于加密的标识信息或标识符和含不可执行代码的可执行程序和相应的多形态代码段以及,如有的话,相应的匹配位置信息,以便在设备中使用:
(1)通过本地网,在设备中运行可执行指令或程序来实现传输分发用于加密的标识信息或标识符和含不可执行代码的可执行程序和相应的多形态代码段以及,如有的话,相应的匹配位置信息;所述设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备;
(2)通过互联网,在设备中运行可执行指令或程序来实现传输分发含用于加密的标识信息或标识符和不可执行代码的可执行程序和相应的多形态代码段以及,如有的话,相应的匹配位置信息;所述设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备;
(3)通过普通邮件分发,其特征在于:含不可执行代码的可执行程序和相应的多形态代码段以及,如有的话,相应的匹配位置信息,以可执行代码的形式嵌入或存储在硬件其中,包括所有种类的存储介质,以普通邮件分发;并且用于加密的标识信息或标识符嵌入或存储在硬件其中,包括所有种类的存储介质,以普通邮件分发。
6.一种运行含不可执行代码的可执行程序的方法,其特征在于:用于用可执行指令或程序来实现并在设备中运行,这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备,后面统称设备;用以在设备中执行可执行代码,所述可执行代码包括启动代码,程序,应用程序,设备驱动及以这些可执行程序组合形成的操作系统,以可执行代码的形式嵌入或存储在硬件其中,所述硬件包括所有种类的存储介质,亦包括以虚拟磁盘的形式存在于物理存储器中;这可执行代码以含不可执行代码的可执行程序的方式出现,在授权状态下运行;这方法包括以下步骤:
(1)当含不可执行代码的可执行程序在执行时,它如普通代码一样被装载到记忆之内;
(2)当含不可执行代码的可执行程序执行并试图调用不可执行代码段中的功能时,它首先定位不可执行代码段;
(3)a)含不可执行代码的可执行程序通过网络,无论本地网或互联网,从管理服务器或计算机或机器或设备,或者从给予在设备中运行的含不可执行代码的可执行程序所用的可被存取的固定或可移动存储介质,获得相应的多形态代码段和,如有的话,相应的匹配位置信息,以作替代在含不可执行代码的可执行程序中的不可执行代码段之用;
(3)b)或者含不可执行代码的可执行程序通过网络,无论本地网或互联网,从管理服务器或计算机或机器或设备,或者从给予在设备中运行的含不可执行代码的可执行程序所用的可被存取的固定或可移动存储介质,获得相应的多形态代码段,并且如有和必须的话,从相应的多形态代码段和不可执行代码段中确认出相应的匹配位置信息,以作替代在含不可执行代码的可执行程序中的不可执行代码段之用;
(4)a)含不可执行代码的可执行程序把获得的多形态代码段解密,这是使用相应的加/解密算法和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件传递分发途径提供的标识信息或标识符作为加/解密钥匙;EUC然后把刚解密的多形态代码段取代了相应的不可执行代码段,这是根据相应的匹配位置信息而作出的;
(4)b)或者含不可执行代码的可执行程序用刚获得的多形态代码段取代相应的不可执行代码段,这是使用相应的匹配位置信息而作出的;然后把含不可执行代码的可执行程序中未经解密的多形态代码段加以解密,这是使用相应的加/解密算法和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件传递分发途径提供的标识信息或标识符作为加/解密钥匙;
(5)含不可执行代码的可执行程序调用刚置换到含不可执行代码的可执行程序中的多形态代码段中的功能;
(6)取决于设计而定,(5)中含不可执行代码的可执行程序调用的功能在返回前,调用相应的加密算法把多形态代码段再加密;或者该功能简单地返回而不调用相应的加密算法去再加密;并且在调用的功能返回后,含不可执行代码的可执行程序立即继续程序的逻辑去执行。
7.一种制造含不可执行代码的多形态可执行程序的方法,其特征在于:用于用可执行指令或程序来实现并在设备中运行,这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备,后面统称设备;用以在设备中制造可执行代码,所述可执行代码包括启动代码,程序,应用程序,设备驱动及以这些可执行程序组合形成的操作系统,以可执行代码的形式嵌入或存储在硬件其中,所述硬件包括所有种类的存储介质,亦包括以虚拟磁盘的形式存在于物理存储器中;这可执行代码以含不可执行代码的多形态可执行程序的方式出现,在授权状态下运行;这方法包括以下步骤,根据设计,用以把多形态可执行程序中的一些但不是全部多形态代码段转换成不可执行代码段:
(1)按照以下步骤制造多形态可执行程序:
(1)a)选择编写多形态可执行程序的编程语言;
(1)b)决定并设计通用代码段和多形态代码段中的特点或功能;
(1)c)如平常一样去设计并编写通用代码段中不涉及加/解密的一般代码;
(1)d)根据下面的规则设计编写多形态代码段:
(1)d)i)不在多形态代码段内使用全局变量的参考记忆地址,代之而利用封装功能来使用全局变量的参考记忆地址;
(1)d)ii)不在多形态代码段内使用静态本地变量的参考记忆地址,代之而以全局变量来取代静态本地变量并利用(1)d)i)的步骤来使用参考记忆地址;
(1)d)iii)不在多形态代码段内使用静态字符串,代之而利用封装功能来使用静态字符串;
(1)d)iv)不在多形态代码段内使用功能或全局变量指针,代之而利用封装功能来使用功能或全局变量指针;
(1)e)在多形态代码段的开始地方添加多形态代码段段头功能,其内包含有多形态代码段段头;多形态代码段头包括至少一个段头标识存储位置以存放段头标识;
(1)f)在多形态代码段的末尾地方添加多形态代码段段尾功能,其内包含有多形态代码段段尾;多形态代码段尾包括至少一个段尾标识存储位置以存放段尾标识;
(1)g)编译所设计和编写的程序,并产生可执行程序;
(1)h)使用或复制一个由(1)g)产生的可执行程序,并且运行一个预选的加密程序把这可执行程序或其复制版本进行加密,以如下顺序进行:
(1)h)i)对可执行程序进行扫描,找出多形态代码段的段头标识和段尾标识,用以判定把多形态代码段进行加密的起始点和结尾点;
(1)h)ii)把多形态代码段进行加密,这加密使用预选的加/解密算法、由多形态代码段设计者或制造者所提供用作加/解钥匙的标识信息或标识符、从设备中采集的标识信息或标识符、由用户通过所有传递方式所提供用作加/解密之用的标识信息或标识符;这些传递方式包括通过本地网络、互联网传递的,通过普通邮件传递分发方式送达的;
(2)从(1)制造的多形态可执行程序中提取加密了的多形态代码段;把提取了的加密了的多形态代码段保存或存储在管理服务器或计算机或机器或设备内的存储介质,用以分发或传递这些加密多形态代码段给予在设备中运行的PEUC之用;或把这些加密了的多形态代码段保存或存储在可被存取的固定或可移动存储介质,被在设备中运行的含不可执行代码的多形态可执行程序所利用;
(3)确定查找出匹配位置信息,这信息是有关相应多形态可执行程序的加密多形态代码段的起始和结束位置,并把它保存或存储在管理服务器或计算机或机器或设备内的存储介质或在可被存取的固定或可移动存储介质,给予在设备中运行的含不可执行代码的多形态可执行程序之用;或如有必要,把一些鉴别信息留在不可执行代码段中,如加/解密钥匙,段头标识,段尾标识,校验数或错误检测标识,或其它鉴别信息,用以与在相应的加密多形态代码段内的相应信息匹配起来,从而正确无误的确定出加密了的多形态代码段应被存放在那个位置,用以取代在含不可执行代码的多形态可执行程序中的相应不可执行代码段;
(4)把加密了的多形态代码段转变成不可执行代码,从而建立不可执行代码段,是全零或全一或是两者之间的一个随机混杂形式出现;如有需要,加密了的多形态代码段的匹配位置信息不能被运行中的含不可执行代码的多形态可执行程序所使用,在这式样之上可以覆盖上如(3)中所须的匹配信息。
8.根据权利要求7所述一种制造含不可执行代码的多形态可执行程序的方法,其特征在于:该方法用于分发用于加密的标识信息或标识符和含不可执行代码的多形态可执行程序;这方法至少包括以下其中一个步骤用以分发用于加密的标识信息或标识符和含不可执行代码的多形态可执行程序和相应的多形态代码段以及,如有的话,相应的匹配位置信息,以便在设备中使用:
(1)通过本地网,在设备中运行可执行指令或程序来实现传输分发用于加密的标识信息或标识符和含不可执行代码的多形态可执行程序和相应的多形态代码段以及,如有的话,相应的匹配位置信息;所述设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备;
(2)通过互联网,在设备中运行可执行指令或程序来实现传输分发用于加密的标识信息或标识符和含不可执行代码的多形态可执行程序和相应的多形态代码段以及,如有的话,相应的匹配位置信息;所述设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备;
(3)通过普通邮件分发,其特征在于:含不可执行代码的多形态可执行程序和相应的多形态代码段以及,如有的话,相应的匹配位置信息,以可执行代码的形式嵌入或存储在硬件其中,包括所有种类的存储介质,以普通邮件分发;并且用于加密的标识信息或标识符嵌入或存储在硬件其中,包括所有种类的存储介质,以普通邮件分发。
9.一种运行含不可执行代码的多形态可执行程序的方法,其特征在于:用于用可执行指令或程序来实现并在设备中运行,这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备,后面统称设备;用以在设备中执行可执行代码,所述可执行代码包括启动代码,程序,应用程序,设备驱动及以这些可执行程序组合形成的操作系统,以可执行代码的形式嵌入或存储在硬件其中,所述硬件包括所有种类的存储介质,亦包括以虚拟磁盘的形式存在于物理存储器中;这可执行代码以含不可执行代码的多形态可执行程序的方式出现,在授权状态下运行;这方法包括以下步骤:
(1)当含不可执行代码的多形态可执行程序在执行时,它如普通代码一样被装载到记忆之内;
(2)当含不可执行代码的多形态可执行程序执行并试图调用不可执行代码段或多形态代码段中的功能时,它首先把该段定位;
(3)(a)如果该功能是在一个多形态代码段,含不可执行代码的多形态可执行程序会执行以下步骤;
(3)(a)i)接着,在初次过程中含不可执行代码的多形态可执行程序对多形态代码段进行解密,在后面的过程中含不可执行代码的多形态可执行程序在解密前会检查多形态代码段是否已经被解密才进行解密;解密是使用相应的加/解密算法和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件传递分发途径提供的标识信息或标识符作为加/解密钥匙;
(3)(a)ii)含不可执行代码的多形态可执行程序调用经由(3)(a)i)解密的多形态代码段中的功能;
(3)(a)iii)取决于设计而定,(3)(a)ii)中含不可执行代码的多形态可执行程序调用的功能在返回前调用相应的加密算法把多形态代码段再加密;或者该功能简单地返回而不调用相应的加密算法去再加密;在调用的功能返回后,含不可执行代码的多形态可执行程序立即继续程序的逻辑去执行;
(3)(b)如果该功能是在一个不可执行代码段,含不可执行代码的多形态可执行程序会执行以下步骤:
(3)b)i)1)含不可执行代码的多形态可执行程序通过网络,无论本地网或互联网,从管理服务器或计算机或机器或设备,或者从给予在设备中运行的含不可执行代码的多形态可执行程序所用的可被存取的固定或可移动存储介质,获得相应的多形态代码段和,如有的话,相应的匹配位置信息,以作替代在含不可执行代码的多形态可执行程序中的不可执行代码段之用;
(3)b)i)2)或者含不可执行代码的多形态可执行程序通过网络,无论本地网或互联网,从管理服务器或计算机或机器或设备,或者从给予在设备中运行的含不可执行代码的多形态可执行程序所用的可被存取的固定或可移动存储介质,获得相应的多形态代码段,并且如有和必须的话,从相应的多形态代码段和不可执行代码段中确认出相应的匹配位置信息,以作替代在PEUC中的不可执行代码段之用;
(3)b)ii)1)含不可执行代码的多形态可执行程序把获得的多形态代码段解密,这是使用相应的加/解密算法和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件传递分发途径提供的标识信息或标识符作为加/解密钥匙;含不可执行代码的多形态可执行程序然后把刚解密的多形态代码段取代了相应的不可执行代码段,这是根据相应的匹配位置信息而作出的;
(3)b)ii)2)或者含不可执行代码的多形态可执行程序用刚获得的多形态代码段取代相应的不可执行代码段,这是使用相应的匹配位置信息而作出的;然后把含不可执行代码的多形态可执行程序中未经解密的多形态代码段加以解密,这是使用相应的加/解密算法和使用内嵌到多形态代码段中加/解密钥匙存储位置里的标识信息或标识符作为加/解密钥匙,和/或使用由多形态代码段设计者或制造者所提供的标识信息或标识符,和/或从设备中采集的标识信息或标识符,和/或由用户为加/解密进程之用而通过各种传递或分发途径,包括通过本地网络、互联网、普通邮件传递分发途径提供的标识信息或标识符作为加/解密钥匙;
(3)b)iii)含不可执行代码的多形态可执行程序调用刚置换到含不可执行代码的多形态可执行程序中的多形态代码段中的功能;
(3)b)iv)取决于设计而定,(3)b)iii)中含不可执行代码的多形态可执行程序调用的功能在返回前调用相应的加密算法把多形态代码段再加密;或者该功能简单地返回而不调用相应的加密算法去再加密;并且在调用的功能返回后,含不可执行代码的多形态可执行程序立即继续程序的逻辑去执行。
10.一种制造多形态操作系统的方法,其特征在于:用于用可执行指令或程序来实现并在设备中运行,这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备,后面统称设备;用以在设备中制造可执行代码,所述可执行代码包括启动代码,程序,应用程序,设备驱动及以这些可执行程序组合形成的操作系统,以可执行代码的形式嵌入或存储在硬件其中,所述硬件包括所有种类的存储介质,亦包括以虚拟磁盘的形式存在于物理存储器中;这可执行代码以多形态操作系统的方式出现,多形态操作系统的特征在于包含有不同程度不同组合的普通执行程序、多形态可执行程序、含不可执行代码的可执行程序、含不可执行代码的多形态可执行程序,这组合中至少有一个多形态可执行程序或一个含不可执行代码的可执行程序或一个含不可执行代码的多形态可执行程序,和从相应的多形态可执行程序、含不可执行代码的可执行程序和含不可执行代码的多形态可执行程序中提取获得的多形态代码段和,如有的话,相应的匹配位置信息,在授权状态下运行;这方法至少包括以下其中一个步骤:
(1)权利要求1中制造多形态可执行程序的步骤;
(2)权利要求4中制造含不可执行代码的可执行程序的步骤;
(3)权利要求7中制造含不可执行代码的多形态可执行程序的步骤。
11.根据权利要求10所述一种制造多形态操作系统的方法,其特征在于:该方法用于分发用于加密的标识信息或标识符和多形态操作系统;这方法至少包括以下其中一个步骤:
(1)通过本地网,在设备中运行可执行指令或程序来实现传输分发用于加密的标识信息或标识符和多形态操作系统;所述设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备;
(2)通过互联网,在设备中运行可执行指令或程序来实现传输分发用于加密的标识信息或标识符和多形态操作系统;所述设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备;
(3)通过普通邮件分发,其特征在于:多形态操作系统以可执行代码的形式嵌入或存储在硬件其中,包括所有种类的存储介质,以普通邮件分发;并且用于加密的标识信息或标识符嵌入或存储在硬件其中,包括所有种类的存储介质,以普通邮件分发。
12.一种运行多形态操作系统的方法,其特征在于:用于用可执行指令或程序来实现并在设备中运行,这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备,后面统称设备;用以在设备中执行可执行代码,所述可执行代码包括启动代码,程序,应用程序,设备驱动及以这些可执行程序组合形成的操作系统,以可执行代码的形式嵌入或存储在硬件其中,所述硬件包括所有种类的存储介质,亦包括以虚拟磁盘的形式存在于物理存储器中;这可执行代码以多形态操作系统的方式出现,多形态操作系统的特征在于包含有不同程度不同组合的普通执行程序、多形态可执行程序、含不可执行代码的可执行程序、含不可执行代码的多形态可执行程序,这组合中至少有一个多形态可执行程序或一个含不可执行代码的可执行程序或一个含不可执行代码的多形态可执行程序,和从相应的多形态可执行程序、含不可执行代码的可执行程序和含不可执行代码的多形态可执行程序中提取获得的多形态代码段和,如有的话,相应的匹配位置信息,在授权状态下运行;这方法至少包括以下其中一个步骤:
(1)权利要求3中运行多形态可执行程序的步骤;
(2)权利要求6中运行含不可执行代码的可执行程序的步骤;
(3)权利要求9中运行含不可执行代码的多形态可执行程序的步骤。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2006/053395 WO2008035141A2 (en) | 2006-09-20 | 2006-09-20 | From polymorphic executable to polymorphic operating system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101981580A CN101981580A (zh) | 2011-02-23 |
CN101981580B true CN101981580B (zh) | 2014-07-09 |
Family
ID=39200881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680055821.9A Active CN101981580B (zh) | 2006-09-20 | 2006-09-20 | 从多形态可执行程序到多形态操作系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8583938B2 (zh) |
CN (1) | CN101981580B (zh) |
WO (1) | WO2008035141A2 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8522042B2 (en) * | 2006-10-31 | 2013-08-27 | Hewlett-Packard Development Company, L.P. | Method and apparatus for enforcement of software licence protection |
US9158519B2 (en) * | 2008-05-21 | 2015-10-13 | Optumsoft, Inc. | Dynamic collection attribute-based computer programming language methods |
US8953796B2 (en) | 2011-06-29 | 2015-02-10 | International Business Machines Corporation | Techniques for accessing features of a hardware adapter |
CN102638567B (zh) * | 2012-03-02 | 2015-05-20 | 深圳市朗科科技股份有限公司 | 多应用云存储平台和云存储终端 |
WO2015145211A1 (en) * | 2014-03-27 | 2015-10-01 | Kam Fu Chan | Token key infrastructure and method for cloud services |
CA2970082A1 (fr) * | 2014-12-08 | 2016-06-16 | Citypassenger | Procede de chiffrement dynamique de donnees, et procede de controle de droits de dechiffrement associe |
US10289722B2 (en) * | 2015-11-17 | 2019-05-14 | Samsung Electronics Co., Ltd. | System and methods for multi-level key-value store |
US10275357B2 (en) | 2016-01-15 | 2019-04-30 | Samsung Electronics Co., Ltd. | System and methods for adaptive multi-level cache allocation for KV store |
US10423331B2 (en) | 2016-02-02 | 2019-09-24 | Samsung Electronics Co., Ltd. | Polymorphic storage devices |
US11287973B2 (en) | 2016-02-02 | 2022-03-29 | Samsung Electronics Co., Ltd. | Polymorphic storage devices |
US11854328B2 (en) | 2020-10-14 | 2023-12-26 | 1Ahead Technologies | Access management system |
US11625966B2 (en) | 2020-10-14 | 2023-04-11 | 1Ahead Technologies | Access management system |
US11756357B2 (en) | 2020-10-14 | 2023-09-12 | 1Ahead Technologies | Access management system |
US11468723B1 (en) * | 2020-10-14 | 2022-10-11 | 1Ahead Technologies | Access management system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1309355A (zh) * | 2000-02-14 | 2001-08-22 | 株式会社东芝 | 使用抗干预处理器分发程序的方法和系统 |
CN1527972A (zh) * | 2000-07-18 | 2004-09-08 | ��ذ��� | 计算机软件安装 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7171693B2 (en) * | 2000-05-12 | 2007-01-30 | Xtreamlok Pty Ltd | Information security method and system |
DE60045479D1 (de) * | 2000-09-08 | 2011-02-17 | Oracle America Inc N D Ges D Staates Delaware | Programmierverfahren zum Ermöglichen von Polymorphismus |
-
2006
- 2006-09-20 US US12/311,205 patent/US8583938B2/en active Active
- 2006-09-20 WO PCT/IB2006/053395 patent/WO2008035141A2/en active Application Filing
- 2006-09-20 CN CN200680055821.9A patent/CN101981580B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1309355A (zh) * | 2000-02-14 | 2001-08-22 | 株式会社东芝 | 使用抗干预处理器分发程序的方法和系统 |
CN1527972A (zh) * | 2000-07-18 | 2004-09-08 | ��ذ��� | 计算机软件安装 |
Also Published As
Publication number | Publication date |
---|---|
WO2008035141A2 (en) | 2008-03-27 |
CN101981580A (zh) | 2011-02-23 |
US8583938B2 (en) | 2013-11-12 |
US20100017624A1 (en) | 2010-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101981580B (zh) | 从多形态可执行程序到多形态操作系统 | |
US9659157B2 (en) | Systems and methods for watermarking software and other media | |
RU2289157C2 (ru) | Способ и система распределенной разработки программы для программируемого портативного носителя информации | |
CN102938036B (zh) | Windows动态链接库的分段双重加密及安全加载方法 | |
US5109413A (en) | Manipulating rights-to-execute in connection with a software copy protection mechanism | |
CN100498712C (zh) | 用于生成受保护可执行程序的设备、存储介质和方法 | |
CN100465982C (zh) | 应用执行装置及应用执行装置的应用执行方法 | |
US5291598A (en) | Method and system for decentralized manufacture of copy-controlled software | |
CN100424678C (zh) | 使用隐含中间密钥来认证软件的系统和方法 | |
US20160364707A1 (en) | Potentate: A Cryptography-Obfuscating, Self-Policing, Pervasive Distribution System For Digital Content | |
EP0909413B1 (en) | Distribution and controlled use of software products | |
KR102433011B1 (ko) | Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체 | |
US7992001B2 (en) | Preventing execution of software without a dynamically generated key | |
US20030120938A1 (en) | Method of securing software against reverse engineering | |
CN101872404B (zh) | 一种保护Java软件程序的方法 | |
EP2264640B1 (en) | Feature specific keys for executable code | |
US20110271350A1 (en) | method for protecting software | |
CA2308755A1 (en) | Reconfigurable secure hardware apparatus and method of operation | |
JP4514473B2 (ja) | コンピュータシステム、中央装置及びプログラム実行方法 | |
US20150371012A1 (en) | Process and device for encoding of source files for secure delivery of source code | |
CN102298528A (zh) | 执行软件应用程序的方法、系统以及安全处理器 | |
JP2009071362A (ja) | 暗号化/復号化システムおよび方法 | |
Gupta et al. | WHLK: Framework for Software Authentication and Protection |
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 |