掌桥专利:专业的专利平台
掌桥专利
首页

一种程序代码保密方法、装置和电子设备

文献发布时间:2023-06-19 18:37:28


一种程序代码保密方法、装置和电子设备

技术领域

本发明属于计算机应用技术领域,尤其涉及一种程序代码保密方法、装置和电子设备。

背景技术

程序代码为软件应用的底层组成部分,也是大量劳动成果的体现,具有较高的经济价值和技术含量,部分人员及企业为了减少资金和技术的投入,常会盗用他人的劳动成果,直接在他人未同意的情况下使用他人开发的程序代码,因此程序代码保密一直以来都是各大企业十分注重的一点。目前,各企业主要通过管理制度和管理软件,让程度代码受到企业严格管理和控制,但随着逆向技术的发展,光做好程序代码的保密已经不再能完全满足当下需求,发布在外的可移植的、可执行的文件(PE文件:Portable Executable),如EXE、DLL、OCX、SYS、COM等,也会暴露经过编译优化后的源代码。为了加强对程序代码的保护,出现了对本地的程序代码加壳保护的方法,但是本地的加壳PE文件,由于里面仍然含有PE文件中所有程序代码,也会存在被逆向的风险。

发明内容

有鉴于此,本发明实施例提供一种程序代码保密方法、装置和电子设备,用于解决现有程序代码保密方法安全性不高的问题。本发明将PE文件的程序代码放置在云服务端及内存中,不会形成具体程序代码落地文件,增强了逆向的难度,保证了程序代码的安全。

第一方面,本发明实施例提供一种程序代码保密方法,包括:

接收PE文件启动指令;

通过所述PE文件启动指令对应的壳程序,以加密传输通道的方式从云服务端获取加壳PE文件数据;

通过所述壳程序将所述加壳PE文件数据加载到内存中进行脱壳处理;

启动内存中脱壳处理后的PE文件数据。

结合第一方面,在第一方面的第一种实施方式中,所述通过所述壳程序将所述加壳PE文件数据加载到内存中进行脱壳处理,包括:

通过所述壳程序将所述加壳PE文件数据加载到内存中进行解密解压缩,获得对应的解密解压缩后的第一内存数据;

通过所述壳程序调用预设PE加载器,将所述第一内存数据按照PE文件被正常调用时的内存布局格式在内存中进行布局,得到第二内存数据,作为脱壳处理后的PE文件数据。

结合第一方面或第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述启动内存中脱壳处理后的PE文件数据,包括:

根据PE文件被正常调用时的内存布局格式,获取内存中脱壳处理后的PE文件数据的调用入口;

执行所述调用入口以启动脱壳处理后的PE文件数据的程序逻辑。

结合第一方面,在第一方面的第三种实施方式中,所述加密传输通道为非对称加密传输通道。

结合第一方面,在第一方面的第四种实施方式中,所述启动内存中脱壳处理后的PE文件数据之后,还包括:

接收PE文件关闭指令;

通过所述PE文件关闭指令对应的壳程序释放脱壳处理后的PE文件数据所占内存。

第二方面,本发明实施例提供一种程序代码保密装置,包括:

指令接收模块,用于接收PE文件启动指令;

数据获取模块,用于通过所述PE文件启动指令对应的壳程序,以加密传输通道的方式从云服务端获取加壳PE文件数据;

脱壳模块,用于通过所述壳程序将所述加壳PE文件数据加载到内存中进行脱壳处理;

启动模块,用于启动内存中脱壳处理后的PE文件数据。

结合第二方面,在第二方面的第一种实施方式中,所述脱壳模块,包括:

解密解压单元,用于通过所述壳程序将所述加壳PE文件数据加载到内存中进行解密解压缩,获得对应的解密解压缩后的第一内存数据;

PE加载单元,用于通过所述壳程序调用预设PE加载器,将所述第一内存数据按照PE文件被正常调用时的内存布局格式在内存中进行布局,得到第二内存数据,作为脱壳处理后的PE文件数据。

结合第二方面或第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述启动模块,包括:

获取单元,用于根据PE文件被正常调用时的内存布局格式,获取内存中脱壳处理后的PE文件数据的调用入口;

执行单元,用于执行所述调用入口以启动脱壳处理后的PE文件数据的程序逻辑。

结合第二方面,在第二方面的第三种实施方式中,所述加密传输通道为非对称加密传输通道。

结合第二方面,在第二方面的第四种实施方式中,所述指令接收模块,还用于接收PE文件关闭指令;

所述装置还包括:

内存释放模块,用于通过所述PE文件关闭指令对应的壳程序释放脱壳处理后的PE文件数据所占内存。

第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一项实施例所述的一种程序代码保密方法。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一项实施例所述的一种程序代码保密方法。

本发明提供的一种程序代码保密方法、装置和电子设备,在接收到PE文件启动指令后,通过壳程序以加密传输通道的方式从云服务端获取加壳PE文件数据,然后直接将获取到加壳PE文件数据加载到内存中进行脱壳处理,最后启动内存中脱壳处理后的PE文件数据。本发明将PE文件的程序代码放置在云服务端,使用时将PE文件数据加载到内存中,不会在本地形成具体源程序代码落地文件,有效地减少了本地PE文件体积,增大了逆向的难度,提高了程序代码的安全性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例提供的一种程序代码保密方法实施例一流程图;

图2为本发明实施例提供的一种程序代码保密方法实施例二流程图;

图3为本发明实施例提供的一种程序代码保密方法实施例三流程图;

图4为本发明实施例提供的一种程序代码保密方法实施例四流程图;

图5为本发明实施例提供的一种程序代码保密装置实施例一结构示意图;

图6为本发明实施例提供的一种程序代码保密装置实施例二结构示意图;

图7为本发明实施例提供的一种程序代码保密装置实施例三结构示意图;

图8为本发明实施例提供的一种程序代码保密装置实施例四结构示意图;

图9为本发明提供的一种电子设备的结构示意图。

具体实施方式

下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

图1为本发明实施例提供的一种程序代码保密方法实施例一流程图。参见图1,该方法包括如下步骤S101-S104:

步骤S101:接收PE文件启动指令。

本实施例中,PE文件的启动指令来源于用户的鼠标点击事件,也可以来源于其他PE文件或者应用程序的调用等,与现在PE文件启动方式一致,并不改变用户的使用习惯,保证了不影响用户的使用体验。

步骤S102:通过所述PE文件启动指令对应的壳程序,以加密传输通道的方式从云服务端获取加壳PE文件数据。

本实施例中,PE文件包括了:本地的壳程序,云服务端的加壳PE文件数据,其中,加壳PE文件数据中包括PE程序代码。PE文件启动指令只用指定本地的壳程序即可,此程序会以加密传输通道的方式从云服务端获取加壳PE文件数据,使得加壳PE文件数据不用预先存储在本地,有效地保证了PE文件中程序代码的安全性。

优选地,所述加密传输通道为非对称加密传输通道。

本实施例中,采用非对称加密传输通道传输加壳PE文件,使得加壳PE文件传输过程中进行了非对称加密,即使恶意人员从非对称加密传输通道中截获到加密的加壳PE文件,在没有相应密钥时,不能正常对该加密的加壳PE文件进行解密,具有解密难度大的优点。另外,由于PE文件本身也是加了壳的,逆向难度也比较大,从而从PE文件的传输和PE文件数据方面,都进行了严格的保护处理,提高了PE文件程序代码的安全性。

步骤S103:通过所述壳程序将所述加壳PE文件数据加载到内存中进行脱壳处理。

本实施例中,壳程序将加壳PE文件数据直接加载到内存中进行脱壳处理,保证了加壳PE文件数据和脱壳的PE文件都只会在内存中,不会在本地形成具体的数据文件,从而增加了逆向的难度,保证了PE文件的安全性。

步骤S104:启动内存中脱壳处理后的PE文件数据。

本发明实施例提供的一种程序代码保密方法,在接收到PE文件启动指令后,通过壳程序以加密传输通道的方式从云服务端获取加壳PE文件数据,然后直接将获取到加壳PE文件数据加载到内存中进行脱壳处理,最后启动内存中脱壳处理后的PE文件数据。本发明将PE文件的程序代码放置在云服务端及内存中,不会形成具体源程序代码落地文件,有效地减少了本地PE文件体积,增加了逆向的难度,保证了程序代码的安全。

图2为本发明实施例提供的一种程序代码保密方法实施例二流程图。参见图2,该方法包括如下步骤S201-S205:

S201:接收PE文件启动指令。

S202:通过所述PE文件启动指令对应的壳程序,以加密传输通道的方式从云服务端获取加壳PE文件数据。

S203:通过所述壳程序将所述加壳PE文件数据加载到内存中进行解密解压缩,获得对应的解密解压缩后的第一内存数据。

S204:通过所述壳程序调用预设PE加载器,将所述第一内存数据按照PE文件被正常调用时的内存布局格式在内存中进行布局,得到第二内存数据,作为脱壳处理后的PE文件数据。

其中,预设PE加载器的逻辑相对固定,即模拟Windows DLL加载部署到内存的过程,例如执行过程Load,或者是NetDownload->Decrypt->Load,其中Decrypt可以高度自由自定义。

S205:启动内存中脱壳处理后的PE文件数据。

本发明实施例提供的一种程序代码保密方法,本地的壳程序从云服务端获得加壳PE文件数据后,直接将加壳PE文件数据加载到内存中进行解密解压缩,得到解密解压缩后的第一内存数据,接着调用预设PE加载器(即自定义PE加载器),将第一内存数据按照PE文件被调用的内存布局格式在内存中进行布局,从而就得到了脱壳处理后的PE文件数据,整个过程具有实施方便,操作性强的优点。

图3为本发明实施例提供的一种程序代码保密方法实施例二流程图。参见图3,该方法包括如下步骤S301-S305:

S301:接收PE文件启动指令。

S302:通过所述PE文件启动指令对应的壳程序,以加密传输通道的方式从云服务端获取加壳PE文件数据。

S303:通过所述壳程序将所述加壳PE文件数据加载到内存中进行脱壳处理。

S304:根据PE文件被正常调用时的内存布局格式,获取内存中脱壳处理后的PE文件数据的调用入口。

优选地,若S303中采用S203-S204的方法对加壳PE文件数据加载到内存中进行脱壳处理得到第二内存数据,则S304中具体根据PE文件被正常调用时的内存布局格式,获取第二内存数据的调用入口。

S305:执行所述调用入口以启动脱壳处理后的PE文件数据的程序逻辑。

本发明实施例中,所述PE文件数据的调用入口为一个调用地址。S303中加载预设PE文件,但是在加载完PE文件到内存后,需要将当前程序流程的控制权交于PE文件中的代码,这时候,需要获取PE文件的首条指令的调用地址,这里针对DLL来说就是某个约定好的导出函数,或多个导出函数,这个和加载PE程序的流程有关,是需要自定义的,假设导出函数是DLL_EXPORT函数,那本发明会在加载完成成获取这个函数的地址ADDRESS_OF_DLL_EXEPORT。然后整体的执行流程就是:NET_DWONLOADDECRYPTLOADPE EXECUTE_ADDRESS_OF_DLL_EXPORT DLL_XXXX,其中,DLL_XXXX为该PE文件的业务逻辑流程。

本发明实施例提供的一种程序代码保密方法,在获得了脱壳处理后的PE文件数据后,根据PE文件被正常调用时的内存布局格式,获得调用入口并从调用入口处启动PE文件数据的程序逻辑,整个过程,PE文件数据的调用入口并不会暴露给其他程序,从而有效的达到了隐藏程序真正的入口点OEP,防止被破解。

图4为本发明实施例提供的一种程序代码保密方法实施例四流程图。参见图4,该方法包括如下步骤S401-S406:

S401:接收PE文件启动指令。

S402:通过所述PE文件启动指令对应的壳程序,以加密传输通道的方式从云服务端获取加壳PE文件数据。

S403:通过所述壳程序将所述加壳PE文件数据加载到内存中进行脱壳处理。

S404:启动内存中脱壳处理后的PE文件数据。

S405:接收PE文件关闭指令。

S406:通过所述PE文件关闭指令对应的壳程序释放脱壳处理后的PE文件数据所占内存。

本发明实施例提供的一种程序代码保密方法,启动内存中脱壳处理后的PE文件数据后,在接收PE文件关闭指令时,将脱壳处理后的PE文件数据所占内存进行释放,保证了PE文件数据在整个运行过程中,所有的程序代码数据都在内存中,退出后也保证了程序代码数据被及时的清理,从而有效地提高了程序代码的安全性。

图5为本发明实施例提供的一种程序代码保密装置实施例一结构示意图。

如图5所示,所述装置,包括:

指令接收模块1,用于接收PE文件启动指令;

数据获取模块2,用于通过所述PE文件启动指令对应的壳程序,以加密传输通道的方式从云服务端获取加壳PE文件数据;优选地,所述加密传输通道为非对称加密传输通道。

脱壳模块3,用于通过所述壳程序将所述加壳PE文件数据加载到内存中进行脱壳处理;

启动模块4,用于启动内存中脱壳处理后的PE文件数据。

本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图6为本发明实施例提供的一种程序代码保密装置实施例二结构示意图。如图6所示,本实施例的装置在图5所示装置结构的基础上,进一步地,脱壳模块3,包括:

解密解压单元31,用于通过所述壳程序将所述加壳PE文件数据加载到内存中进行解密解压缩,获得对应的解密解压缩后的第一内存数据;

PE加载单元32,用于通过所述壳程序调用预设PE加载器,将所述第一内存数据按照PE文件被正常调用时的内存布局格式在内存中进行布局,得到第二内存数据,作为脱壳处理后的PE文件数据。

本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图7为本发明实施例提供的一种程序代码保密装置实施例三结构示意图。如图7所示,本实施例的装置在图5所示装置结构的基础上,进一步地,启动模块4,包括:

获取单元41,用于根据PE文件被正常调用时的内存布局格式,获取内存中脱壳处理后的PE文件数据的调用入口;

执行单元42,用于执行所述调用入口以启动脱壳处理后的PE文件数据的程序逻辑。

本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图8为本发明实施例提供的一种程序代码保密装置实施例四结构示意图。如图8所示,本实施例的装置在图5所示装置结构的基础上,进一步地,指令接收模块1,还用于接收PE文件关闭指令;

所述一种程序代码保密装置,还包括:

内存释放模块5,用于通过所述PE文件关闭指令对应的壳程序释放脱壳处理后的PE文件数据所占内存。

本实施例的装置,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本发明实施例还提供一种电子设备。图9为本发明提供的一种电子设备的结构示意图,可以实现本发明图1-图4所示实施例的流程,如图9所示,上述电子设备可以包括:壳体91、处理器92、存储器93、电路板94和电源电路95,其中,电路板94安置在壳体91围成的空间内部,处理器92和存储器93设置在电路板94上;电源电路95,用于为上述电子设备的各个电路或器件供电;存储器93用于存储可执行程序代码;处理器92通过读取存储器93中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的程序代码保密方法。

该电子设备以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。

(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放模块(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。

(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

(5)其他具有数据交互功能的电子设备。

第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种程序代码保密方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。

以上所述,仅为本发明的具体实施方式,但本发明的防护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的防护范围之内。因此,本发明的防护范围应以权利要求的防护范围为准。

技术分类

06120115636490