一种Linux系统上可执行程序的加密保护方法及系统与流程
未命名
10-19
阅读:125
评论:0
一种linux系统上可执行程序的加密保护方法及系统
技术领域
1.本发明涉及计算机软件的加密保护技术领域,具体涉及一种linux系统上可执行程序的加密保护方法及系统。
背景技术:
2.在传统的软件开发模式下,软件的源代码通常会被编译成可执行文件,而这些可执行文件很容易被黑客使用逆向工程技术还原为汇编代码,从而揭示软件的内部逻辑和算法;这使得黑客能够轻松地破解和篡改软件,给软件开发者带来了严重的经济损失和商业风险;保护软件的算法,可以帮助开发者保护软件的知识产权、商业利益和竞争优势,同时降低盗版、破解和非法复制的风险。为了实现对软件的加密保护,现有技术中一般采用软件加壳技术对软件的加密保护,但是传统的软件加壳技术需要依赖适配的硬件平台的问题,使得加密后的软件受限于硬件平台,在一种平台上修改后,在其他平台无法通用。
技术实现要素:
3.本发明要解决的技术问题:针对现有技术的上述问题,提供一种linux系统上可执行程序的加密保护方法及系统,使用加密技术对可执行程序进行加密保护的同时,解决传统的保护可执行程序的方法无法在多个处理器平台通用的问题,比传统的方法具有更好的移植性。
4.为了解决上述技术问题,本发明采用的技术方案为:一种linux系统上可执行程序的加密保护方法,包括:针对可执行程序生成加密后的目标文件,以实现对可执行程序在文件系统上存储时加密;在执行可执行程序的加密后的目标文件时,利用内存加载器先针对加密后的目标文件进行解密再从内存中加载执行解密后的可执行程序,以实现对可执行程序的执行前解密。
5.进一步的,所述针对可执行程序生成加密后的目标文件包括:s101,生成加密算法所需的随机秘钥;s102,采用加密算法使用所述随机秘钥对可执行程序执行加密;s103,构建通用内存加载器程序;s104,将内存加载器程序、随机秘钥和可执行程序组装成加密后的目标文件。
6.进一步的,所述先针对加密后的目标文件进行解密再从内存中加载执行解密后的可执行程序包括:s201,执行加密后的目标文件中的内存加载器程序,利用内存加载器程序解析新执行进程的命令行参数;s202,获取随机秘钥和加密后的可执行程序的位置,利用随机秘钥采用所述加密算法对应的解密算法解密出解密后的可执行程序;s203,通过调用创建匿名文件的系统调用memfd_create并指定参数mfd_cloexec创建一个匿名文件并返回引用该匿名文件的文件描述符,该匿名文件位于内存中并不在硬
盘中存储,将解密后的可执行程序的文件内容保存至该匿名文件的文件描述符;s204,设置内存加载器程序的命令行参数为新执行进程的命令行参数;s205,通过将文件描述符作为参数传入复刻fork和执行execv两个系统调用,利用复刻fork和执行execv两个系统调用从内存中执行解密后的可执行程序。
7.进一步的,步骤s101中的加密算法为对称加密算法。
8.进一步的,所述对称加密算法是指aes加密算法,步骤s101中生成加密算法所需的随机秘钥包括生成aes加密算法中密钥key和初始化向量iv,步骤s102中采用加密算法使用所述随机秘钥对可执行程序执行加密是指采用aes加密算法,结合密钥key和初始化向量iv对可执行程序执行加密以获得加密后的可执行程序。
9.进一步的,步骤s104中将内存加载器程序、随机秘钥和可执行程序组装成加密后的目标文件时,还包括将随机秘钥加密,使得加密后的目标文件中的随机秘钥为密文;步骤s202中利用随机秘钥采用所述加密算法对应的解密算法解密出解密后的可执行程序之前,还包括将随机秘钥的密文进行解密以获得原始的随机秘钥。
10.进一步的,所述将随机秘钥加密采用的加密算法为对称加密算法。
11.进一步的,所述将随机秘钥的密文进行解密为将随机秘钥加密采用的加密算法所对应的解密算法。
12.本发明还提出一种linux系统上可执行程序的加密保护系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行任意一项所述linux系统上可执行程序的加密保护方法。
13.本发明还提出一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行任意一项所述linux系统上可执行程序的加密保护方法。
14.相比现有技术,本发明具有以下优点:1.本发明在文件系统中加密存储可执行程序,可以实现对软件的算法和关键数据进行完整保护,在内存中解密执行可执行程序,避免了将可行性程序转存至文件系统上时,造成原可执行程序被破解的风险;2. 本发明在文件系统中加密存储可执行程序,在内存中解密执行可执行程序,解决了linux程序加密后的执行问题,在加密保护可执行程序的同时,不影响其执行过程,提高了应用程序的安全性和逆向分析的难度;3.相较于传统的软件加壳技术需要依赖适配的硬件平台的问题,本发明通用性强,通过构建通用内存加载器程序,可以在任何硬件平台的linux系统上使用。
附图说明
15.图1为本发明实施例的简要流程图。
16.图2为本发明实施例中针对可执行程序生成加密后的目标文件的流程图。
17.图3为本发明实施例中执行可执行程序加密后的目标文件的流程图。
具体实施方式
18.以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而
限制本发明的保护范围。
19.实施例一为了使用加密技术对可执行程序进行加密保护的同时,可以解决传统的保护可执行程序的方法无法在个处理器平台通用的问题,比传统的方法具有更好的移植性,本实施例中,我们提出一种linux系统上可执行程序的加密保护方法,其简要流程如图1所示,包括:针对可执行程序生成加密后的目标文件,以实现对可执行程序在文件系统上存储时加密;在执行可执行程序的加密后的目标文件时,利用内存加载器先针对加密后的目标文件进行解密再从内存中加载执行解密后的可执行程序,以实现对可执行程序的执行前解密。
20.通过以上步骤,在文件系统中保存的可执行程序是加密后的程序,将整个可执行文件进行加密,可以实现对软件的算法和关键数据进行完整保护;当程序执行时,内存加载器将加密的可执行程序进行解密后从内存加载执行该程序,整个解密和执行过程在内存中完成,避免了将可行性程序转存至文件系统上时,造成原可执行程序被破解的风险;从而实现了在文件系统中加密存储可执行程序,在内存中解密执行可执行程序,解决了linux程序加密后的执行问题,在加密保护可执行程序的同时,不影响其执行过程,提高了应用程序的安全性和逆向分析的难度如图2所示,本实施例中,针对可执行程序生成加密后的目标文件时,包括以下步骤:s101,生成加密算法所需的随机秘钥,我们考虑使用对称加密算法,本实施例中使用的加密秘钥是aes,使用随机算法生成aes加密算法中key(密钥)和iv(初始化向量)是两个关键参数;s102,采用加密算法使用所述随机秘钥对可执行程序执行加密,即使用aes加密方法对需要加密的可执行程序进行加密得到可执行程序的加密数据,具体是指采用aes加密算法,结合密钥key和初始化向量iv对可执行程序执行加密;s103,构建通用内存加载器程序,本实施例中,内存加载器用于程序执行时将可执行程序的加密数据载入内存并执行;s104,创建一个新文件,将内存加载器程序、随机秘钥(即aes加密算法中密钥key和初始化向量iv)和可执行程序按顺序写入该文件中,组装成加密后的目标文件。
21.如图3所示,本实施例中,先针对加密后的目标文件进行解密再从内存中加载执行解密后的可执行程序时,包括以下步骤:s201,执行加密后的目标文件中的内存加载器程序,利用内存加载器程序获取并解析新执行进程的命令行参数;s202,获取随机秘钥和加密后的可执行程序的位置,利用随机秘钥采用所述加密算法对应的解密算法解密出解密后的可执行程序,具体的,根据aes加密算法中密钥key和初始化向量iv的值在加密后的目标文件中密钥key和初始化向量iv在文件中的位置,并进一步根据密钥key和初始化向量iv的位置以及对应的数据量大小,计算出可执行程序的加密数据在加密后的目标文件中的位置,然后采用aes加密算法对应的解密算法,结合密钥
key和初始化向量iv将可执行程序的加密数据进行解密,获取原始可执行程序的文件内容;s203,通过调用创建匿名文件的系统调用memfd_create并指定参数mfd_cloexec创建一个匿名文件并返回引用该匿名文件的文件描述符,该匿名文件位于内存中并不在硬盘中存储,将解密后的可执行程序的文件内容保存至该匿名文件的文件描述符,从而将原始可执行程序的文件内容写入该匿名文件;s204,在执行原始可执行程序之前,设置内存加载器程序的命令行参数为新执行进程的命令行参数;s205,通过将memfd_create返回的文件描述符作为参数传入复刻fork和执行execv两个系统调用,利用复刻fork和执行execv两个系统调用从内存中执行解密后的可执行程序。
22.通过上述步骤,通过内存加载器程序在内存中解密执行可执行程序时,由于使用linux提供的系统调用,所以可支持在任何架构平台的linux系统上使用,解决了传统可执行程序保护方法移植性差的问题,从而不受硬件平台的限制。
23.为了提高安全性,本实施例中,步骤s104中将内存加载器程序、随机秘钥和可执行程序组装成加密后的目标文件时,还包括将随机秘钥加密,使得加密后的目标文件中的随机秘钥为密文,我们考虑使用对称加密算法将随机秘钥加密;相对应的,步骤s202中利用随机秘钥采用所述加密算法对应的解密算法解密出解密后的可执行程序之前,还包括将随机秘钥的密文进行解密以获得原始的随机秘钥,所采用的解密算法为将随机秘钥加密采用的加密算法所对应的解密算法。
24.实施例二本实施例提出一种linux系统上可执行程序的加密保护系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行实施例一的linux系统上可执行程序的加密保护方法。
25.本实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行实施例一的linux系统上可执行程序的加密保护方法。
26.综上所述,本发明提供了一种方法用于实现对linux系统上可执行程序的加密保护,通过将整个可执行文件进行加密,可以实现对软件的算法和关键数据进行完整保护;在对程序进行解密时,整个解密和执行过程在内存中完成,避免了将可行性程序转存至文件系统上时,造成原可执行程序被破解的风险;本发明采用对称加密技术和使用linux的memfd_creat系统调用实现了应用在文件系统上存储时加密、执行前解密的功能,解决了linux程序加密后的执行问题,在加密保护可执行程序的同时,不影响其执行过程,提高了应用程序的安全性和逆向分析的难度;相较于传统的软件加壳技术需要依赖适配的硬件平台,在一种平台上修改后,在其他平台无法通用的问题,本发明提供的方法通用性强,不受硬件平台限制,通过标准的内存加载器程序,可以在任何linux系统上使用,解决了传统可执行程序保护方法移植性差的问题,可以做到一次开发,在任何硬件平台的linux系统上编译并执行。
27.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
28.以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
技术特征:
1.一种linux系统上可执行程序的加密保护方法,其特征在于,包括:针对可执行程序生成加密后的目标文件,以实现对可执行程序在文件系统上存储时加密;在执行可执行程序的加密后的目标文件时,利用内存加载器先针对加密后的目标文件进行解密再从内存中加载执行解密后的可执行程序,以实现对可执行程序的执行前解密。2.根据权利要求1所述的linux系统上可执行程序的加密保护方法,其特征在于,所述针对可执行程序生成加密后的目标文件包括:s101,生成加密算法所需的随机秘钥;s102,采用加密算法使用所述随机秘钥对可执行程序执行加密;s103,构建通用内存加载器程序;s104,将内存加载器程序、随机秘钥和可执行程序组装成加密后的目标文件。3.根据权利要求2所述的linux系统上可执行程序的加密保护方法,其特征在于,所述先针对加密后的目标文件进行解密再从内存中加载执行解密后的可执行程序包括:s201,执行加密后的目标文件中的内存加载器程序,利用内存加载器程序解析新执行进程的命令行参数;s202,获取随机秘钥和加密后的可执行程序的位置,利用随机秘钥采用所述加密算法对应的解密算法解密出解密后的可执行程序;s203,通过调用创建匿名文件的系统调用memfd_create并指定参数mfd_cloexec创建一个匿名文件并返回引用该匿名文件的文件描述符,该匿名文件位于内存中并不在硬盘中存储,将解密后的可执行程序的文件内容保存至该匿名文件的文件描述符;s204,设置内存加载器程序的命令行参数为新执行进程的命令行参数;s205,通过将文件描述符作为参数传入复刻fork和执行execv两个系统调用,利用复刻fork和执行execv两个系统调用从内存中执行解密后的可执行程序。4.根据权利要求3所述的linux系统上可执行程序的加密保护方法,其特征在于,步骤s101中的加密算法为对称加密算法。5.根据权利要求4所述的linux系统上可执行程序的加密保护方法,其特征在于,所述对称加密算法是指aes加密算法,步骤s101中生成加密算法所需的随机秘钥包括生成aes加密算法中密钥key和初始化向量iv,步骤s102中采用加密算法使用所述随机秘钥对可执行程序执行加密是指采用aes加密算法,结合密钥key和初始化向量iv对可执行程序执行加密以获得加密后的可执行程序。6.根据权利要求5所述的linux系统上可执行程序的加密保护方法,其特征在于,步骤s104中将内存加载器程序、随机秘钥和可执行程序组装成加密后的目标文件时,还包括将随机秘钥加密,使得加密后的目标文件中的随机秘钥为密文;步骤s202中利用随机秘钥采用所述加密算法对应的解密算法解密出解密后的可执行程序之前,还包括将随机秘钥的密文进行解密以获得原始的随机秘钥。7.根据权利要求6所述的linux系统上可执行程序的加密保护方法,其特征在于,所述将随机秘钥加密采用的加密算法为对称加密算法。8.根据权利要求7所述的linux系统上可执行程序的加密保护方法,其特征在于,所述将随机秘钥的密文进行解密为将随机秘钥加密采用的加密算法所对应的解密算法。9.一种linux系统上可执行程序的加密保护系统,包括相互连接的微处理器和存储器,
其特征在于,所述微处理器被编程或配置以执行权利要求1~8中任意一项所述linux系统上可执行程序的加密保护方法。10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~8中任意一项所述linux系统上可执行程序的加密保护方法。
技术总结
本发明公开了一种Linux系统上可执行程序的加密保护方法,包括:针对可执行程序生成加密后的目标文件,以实现对可执行程序在文件系统上存储时加密;在执行可执行程序的加密后的目标文件时,利用内存加载器先针对加密后的目标文件进行解密再从内存中加载执行解密后的可执行程序,以实现对可执行程序的执行前解密。本发明使用加密技术对可执行程序进行加密保护的同时,解决了传统的保护可执行程序的方法无法在多个硬件平台通用的问题,比传统的方法具有更好的移植性。法具有更好的移植性。法具有更好的移植性。
技术研发人员:许广敏 刘涛 程伟正 赵鹏辉
受保护的技术使用者:麒麟软件有限公司
技术研发日:2023.09.07
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种多要素的自激励预警方法与流程 下一篇:一种开关器件输入缓冲电路板的制作方法
