软件的保护方法及装置与流程

文档序号:19878324发布日期:2020-02-08 06:41阅读:163来源:国知局
软件的保护方法及装置与流程

本文涉及文件加密,尤其涉及软件的保护方法及装置。



背景技术:

相关技术中,一般使用外壳保护技术保护文件,用户通过执行外壳程序,把原来的程序在内存中解开压缩,并把控制权交换给解开后的真正的程序,由于一切工作都是在内存中运行,用户根本不知道其运行过程,并且对执行速度没有什么影响。如果在外壳程序中加入对软件锁或钥匙盘的验证部分,它就是我们所说的外壳保护,对文件起到保护作用,尤其是对软件的核心代码进行加密保护,以防其他人破解或窃取程序源代码。

但外壳保护技术只能针对exe,dll,sys等类型的文件进行保护,而且通常只能保护一个文件。



技术实现要素:

为克服相关技术中存在的问题,本文提供一种软件的保护方法及装置。

根据本文的第一方面,提供一种软件的保护方法,包括:

遍历软件内的文件,确定需保护的目标文件,所述目标文件包括可执行文件和资源文件中的一种或两种;

按预设格式编译所述目标文件,对编译后的文件压缩加密后,生成加密文件;

通过文件加载器加载所述加密文件,并在内存中对所述加密文件进行解密解压缩后,解析所述编译后的文件。

所述按预设格式编译所述目标文件包括:

按预设的文件结构编译所述目标文件,所述文件结构包括:加密标识,文件类型标识,文件的第一哈希值,文件大小,文件内容。

所述对编译后的文件压缩加密包括:

当所述目标文件为资源文件,将所述编译后的文件压缩并加密;

当所述目标文件为可执行文件,将所述编译后的文件的可压缩区段合并后,对合并后的区段压缩并加密。

当所述目标文件为资源文件,所述文件的第一哈希值为所述编译后的文件的哈希值;

当所述目标文件为可执行文件,所述文件的第一哈希值为所述合并后的区段的哈希值。

所述通过文件加载器加载所述加密文件,并在内存中对所述加密文件进行解密解压缩后,解析所述编译后的文件包括:

通过预先制作的文件加载器,将所述加密文件加载到内存;

在内存中对所述加密文件进行解密解压缩,恢复为编译后的文件;

计算编译后的文件的第二哈希值;

在所述第二哈希值与所述第一哈希值一致时,在内存中解析所述编译后的文件。

根据本文的另一方面,提供一种软件的保护装置,包括:

遍历模块,用于遍历软件内的文件,确定需保护的目标文件,所述目标文件包括可执行文件和资源文件中的一种或两种;

编译模块,用于按预设格式编译所述目标文件,对编译后的文件压缩加密后,生成加密文件;

加载模块,用于通过文件加载器加载所述加密文件,并在内存中对所述加密文件进行解密解压缩后,解析所述编译后的文件。

所述编译模块编译所述目标文件包括:

按预设的文件结构编译所述目标文件,所述文件结构包括:加密标识,文件类型标识,文件的第一哈希值,文件大小,文件内容。

所述对编译后的文件压缩加密包括:

当所述目标文件为资源文件,将所述编译后的文件压缩并加密;

当所述目标文件为可执行文件,将所述编译后的文件的可压缩区段合并后,对合并后的区段压缩并加密。

当所述目标文件为资源文件,所述文件的第一哈希值为所述编译后的文件的哈希值;

当所述目标文件为可执行文件,所述文件的第一哈希值为所述合并后的区段的哈希值。

所述加载模块加载所述加密文件包括:

通过预先制作的文件加载器,将所述加密文件加载到内存;

在内存中对所述加密文件进行解密解压缩,恢复为编译后的文件;

计算编译后的文件的第二哈希值;

在所述第二哈希值与所述第一哈希值一致时,在内存中解析所述编译后的文件。

本文通过提供一种软件的保护方法,可以实现将多个不同类型的文件同时进行保护,通过文件加载器将文件加载到内存中进行解密解压缩,降低文件被破解的风险,同时不影响文件的正常的使用。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本文。

附图说明

构成本文的一部分的附图用来提供对本文的进一步理解,本文的示意性实施例及其说明用于解释本文,并不构成对本文的不当限定。在附图中:

图1是根据一示例性实施例示出的一种软件的保护方法的流程图。

图2是根据一示例性实施例示出的一种软件的保护装置的框图。

具体实施方式

为使本文实施例的目的、技术方案和优点更加清楚,下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。需要说明的是,在不冲突的情况下,本文中的实施例及实施例中的特征可以相互任意组合。

图1是根据一示例性实施例示出的一种软件的保护方法的流程图。参考图1,软件的保护方法,包括:

步骤s11,遍历软件内的文件,确定需保护的目标文件,目标文件包括可执行文件和资源文件中的一种或两种。根据具体的需求,确定需要保护的文件类型,遍历软件内的全部文件,确定需要保护的文件类型的文件为目标文件。在本实施例中,目标文件可以为可执行文件,例如exe、dll、ocx、sys、com类型的文件。也可以是资源文件,例如图片文件。

步骤s12,按预设格式编译目标文件,对编译后的文件压缩加密后,生成加密文件。通过编译软件编译目标文件,在编译过程中,按预设的格式加入文件类型标识,文件大小信息,文件内容等,形成编译后的文件。再对编译后的文件压缩加密后,生成加密文件。如果程序需要发布,将加密的文件对外发布,原来目标文件不向外界发布。

步骤s13,通过文件加载器加载加密文件,并在内存中对加密文件进行解密解压缩后,解析编译后的文件。在需要读取或运行文件的时候,通过文件加载器加载加密文件,在内存中解压解密,再进一步地解析。

通过上述方法,可以自动选择选定的不同类型的多个文件,并对多个文件进行保护,防止忽略关键程序,导致软件被破解的风险变大的问题。

在一实施例中,按预设格式编译所述目标文件包括:

按预设的文件结构编译所述目标文件,文件结构包括:加密标识,文件类型标识,文件的第一哈希值,文件大小,文件内容。预先设定好文件格式,按文件格式编译目标文件。

在本实施例中,文件结构包括:

加密标识,用以标识该文件是通过上述方法进行加密的文件,方便调用的时候快速进行识别,例如加密标识以pf来表示,并放入文件头两个字节中。

文件类型标识,是根据不同的文件类型,设置的不同的标号,例如,类型为exe的文件标识为1,类型为dll的文件标识为2,类型为sys的文件标识为3,具体标识内容可以根据实际情况决定,本文不作限制。

文件的第一哈希值,是根据文件的全部内容或者指定的部分内容确定的哈希值,例如可以是md5值,并将将哈希值保存在文件中。在一实施例中,当目标文件为资源文件,文件的第一哈希值为编译后的文件的哈希值;当目标文件为可执行文件,文件的第一哈希值为该可执行文件合并后的区段的哈希值。

文件大小,用来标识该加密文件的大小。

文件内容,是对目标文件进行编译后,将目标文件内容对应的编码加入编译后的文件的编码中,并存储在指定位置,例如本实施例中,将文件内容写到编译后的文件的末尾。

在一实施例中,对编译后的文件压缩加密包括:当目标文件为资源文件,将编译后的文件压缩并加密;

当目标文件为可执行文件,将编译后的文件的可压缩区段合并后,对合并后的区段压缩并加密。

由于可执行文件的2进制编码中,存在可以被合并的区段,在本实施例中,首先将可以被合并的区段进行合并后,将合并后的区段压缩加密,以进一步节省存储空间。而对于资源文件,则直接对整个文件进行压缩并加密。对加密后的文件添加后缀,例如可执行文件的加密文件后缀为.edat,资源文件的加密文件后缀为.dat。这样加密后的文件就只能通过特定的文件加载器加载到内存中打开,其他人无法通过反汇编的工具打开,起到对文件的保护。

在一实施例中,通过文件加载器加载加密文件,并在内存中对加密文件进行解密解压缩后,解析编译后的文件包括:

通过预先制作的文件加载器,将加密文件加载到内存;

在内存中对加密文件进行解密解压缩,恢复为编译后的文件;

计算编译后的文件的第二哈希值;

在第二哈希值与所述第一哈希值一致时,在内存中解析所述编译后的文件。

在计算编译后的文件的第二哈希值时,对应第一哈希值的计算方法,对与资源文件的编译后的文件,对整个文件计算哈希值,对应可执行文件的编译后的文件,对合并后的区段计算哈希值。以使第二哈希值与第一哈希值都是通过针对同一内容计算的。如果文件被修改,内容就会改变,所以对应的哈希值也会不同。所以通过验证第一哈希值和第二哈希值是否一致,对文件进行校验,如果第一哈希值和第二哈希值不同,就不需要加载了。如果第一哈希值和第二哈希值一致,说明加载的文件正确,在内存中解析编译后的文件,从编译后的文件中读出目标文件内容,根据实际需要,展示目标文件或者执行目标文件。

为更好地理解本文中的软件的保护方法,举例说明:

当程序对外发布,为防止核心程序编码被其他人使用反汇编工具进行破解,可以对软件中的需要保护的部分文件或全部文件进行加密保护。首先确定需要保护的文件类型,然后遍历整个软件,找出设定类型的全部问件作为目标文件,可以是可执行文件,可以是图片文件。

按预设的格式编译选中的目标文件,将加密标识,文件类型标识,文件的第一哈希值,文件大小,文件内容依次写入编译后的文件中的指定位置。例如对可执行文件的可合并区段进行合并后,计算出第一哈希值,并对合并后的区段加密压缩,生成加密文件。在发布软件的时候,将原文件删除,替换为加密文件,并文件加载器与软件一同发布。

如果希望调用加密文件,需要使用文件加载器,将加密文件先加载到内存中,并在内存中对加密文件进行解密解压缩,将加密软件恢复为编译后的文件,由文件加载器对恢复出的编译后的文件,按第一哈希值的计算方法计算第二哈希值,并与第一哈希值进行一致性验证,保证该文件的正确性。

例如该加密文件为程序的主程序文件的加密文件,系统会在内存中读出该主程序文件,在验证第一哈希值和第二哈希值一致后,解析该文件,解析出该文件的导入表,查找文件的依赖文件,并将这些依赖文件导入到内存中。如果这些依赖文件也是通过上述方法加密的,则按上述方法对依赖文件进行解密解压缩,然后在内存中解析。而且,通过本文中的软件保护方法,文件加载器模拟操作系统加载文件的方法,将加密文件加载到内容的过程,不需调用windows系统的api,防止他人通过windows系统的api拦截到我们的加载行为,进一步提高软件保护的安全性。

通过上述描述,本软件的保护方法,可以将多个不同类型的文件同时进行保护,通过文件加载器将文件加载到内存中进行解密解压缩,降低文件被破解的风险,同时不影响文件的正常的使用。

图2是根据一示例性实施例示出的一种软件的保护装置的框图。参考图2,软件的保护装置包括,遍历模块201,编译模块202,加载模块203。

该遍历模块201被配置为用于遍历软件内的文件,确定需保护的目标文件,所述目标文件包括可执行文件和资源文件中的一种或两种。

该编译模块202被配置为用于按预设格式编译所述目标文件,对编译后的文件压缩加密后,生成加密文件。

该加载模块203被配置为用于通过文件加载器加载所述加密文件,并在内存中对所述加密文件进行解密解压缩后,解析所述编译后的文件。

编译模块编译目标文件包括:

按预设的文件结构编译目标文件,文件结构包括:加密标识,文件类型标识,文件的第一哈希值,文件大小,文件内容。

对编译后的文件压缩加密包括:

当目标文件为资源文件,将编译后的文件压缩并加密;

当目标文件为可执行文件,将编译后的文件的可压缩区段合并后,对合并后的区段压缩并加密。

当目标文件为资源文件,文件的第一哈希值为编译后的文件的哈希值;

当目标文件为可执行文件,文件的第一哈希值为合并后的区段的哈希值。

加载模块加载加密文件包括:

通过预先制作的文件加载器,将加密文件加载到内存;

在内存中对加密文件进行解密解压缩,恢复为编译后的文件;

计算编译后的文件的第二哈希值;

在第二哈希值与所述第一哈希值一致时,在内存中解析编译后的文件。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本领域技术人员应明白,本文的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本文可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本文可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质,包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质等。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

本文是参照根据本文实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

尽管已描述了本文的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本文范围的所有变更和修改。

显然,本领域的技术人员可以对本文进行各种改动和变型而不脱离本文的精神和范围。这样,倘若本文的这些修改和变型属于本文权利要求及其等同技术的范围之内,则本文的意图也包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1