一种IOS平台上对核心代码的保护方法和装置与流程

文档序号:17049384发布日期:2019-03-05 19:53阅读:245来源:国知局
一种IOS平台上对核心代码的保护方法和装置与流程

本发明涉及信息处理技术领域,尤其涉及一种ios平台上对核心代码的保护方法和装置。



背景技术:

目前,随着移动设备的日益普及,移动应用产业尤其是ios应用得到飞速的发展,同时其的开发模式和代码框架也都发生了巨大的变化。

对于ios平台上最终的发布程序都需要经过苹果官网的审核,因此目前对于一些常用于windows平台的一些代码混淆加密方法对于ios平台则会不支持,但是对于直接将比较关键的核心代码直接原封不动的发布到ios程序中,则很容易被黑客逆向分析。

黑客只需要静态分析代码从而轻易获取代码的执行逻辑,导致核心代码由于没有受到合理的保护而被非法盗取。



技术实现要素:

本发明实施例提供了一种ios平台上对核心代码的保护方法和装置,解决了现有技术中由于没有对核心代码进行合理保护,从而造成核心代码的执行逻辑被非法盗取的技术问题。

鉴于上述问题,提出了本申请实施例以便提供一种ios平台上对核心代码的保护方法和装置。

第一方面,本发明提供了一种ios平台上对核心代码的保护方法,所述方法包括:获得ios应用程序的第一函数;根据所述第一函数获得第一加密函数;将所述第一加密函数加入所述ios应用程序中;获得所述第一加密函数的动态执行环境,其中,所述动态执行环境包括第一指令;通过所述第一指令对所述第一函数予以控制。

进一步的,所述根据所述第一函数获得第一加密函数,还包括:根据所述第一函数获得所述第一函数的第一执行文件;根据所述第一执行文件获得所述第一函数的第一字节码;对所述第一字节码进行加密;获得所述第一加密函数。

进一步的,所述将所述第一加密函数加入所述ios应用程序中,还包括:获得第一常量;根据所述第一常量,将所述第一加密函数加入所述ios应用程序中。

进一步的,所述获得所述第一加密函数的动态执行环境,还包括:对所述第一加密函数进行解密,获得所述第一函数;获得第一内存空间;通过所述第一内存空间存储所述第一函数。

进一步的,所述方法还包括:获得所述第一内存空间的第一属性;将所述第一属性修改为第二属性。

进一步的,所述通过所述第一指令对所述第一函数予以控制,还包括:判断所述第一函数是否满足第一预设条件;如果所述第一函数不满足所述第一预设条件,则通过所述第一指令控制所述第一函数初始化。

进一步的,所述方法还包括:如果所述第一函数满足所述第一预设条件,则通过所述第一指令直接调用所述第一函数。

第二方面,本发明提供了一种ios平台上对核心代码的保护装置,所述装置包括:

第一获得单元,所述第一获得单元用于获得ios应用程序的第一函数;

第二获得单元,所述第二获得单元用于根据所述第一函数获得第一加密函数;

第一添加单元,所述第一添加单元用于将所述第一加密函数加入所述ios应用程序中;

第三获得单元,所述第三获得单元用于获得所述第一加密函数的动态执行环境,其中,所述动态执行环境包括第一指令;

第一控制单元,所述第一控制单元用于通过所述第一指令对所述第一函数予以控制。

进一步的,所述装置还包括:

第四获得单元,所述第四获得单元用于根据所述第一函数获得所述第一函数的第一执行文件;

第五获得单元,所述第五获得单元用于根据所述第一执行文件获得所述第一函数的第一字节码;

第一加密单元,所述第一加密单元用于对所述第一字节码进行加密;

第六获得单元,所述第六获得单元用于获得所述第一加密函数。

进一步的,所述装置还包括:

第七获得单元,所述第七获得单元用于获得第一常量;

第二添加单元,所述第二添加单元用于根据所述第一常量,将所述第一加密函数加入所述ios应用程序中。

进一步的,所述装置还包括:

第一解密单元,所述第一解密单元用于对所述第一加密函数进行解密,获得所述第一函数;

第八获得单元,所述第八获得单元用于获得第一内存空间;

第一存储单元,所述第一存储单元用于通过所述第一内存空间存储所述第一函数。

进一步的,所述装置还包括:

第九获得单元,所述第九获得单元用于获得所述第一内存空间的第一属性;

第一修改单元,所述第一修改单元用于将所述第一属性修改为第二属性。

优选的,所述装置还包括:

第一判断单元,所述第一判断单元用于判断所述第一函数是否满足第一预设条件;

第一控制单元,所述第一控制单元用于如果所述第一函数不满足所述第一预设条件,则通过所述第一指令控制所述第一函数初始化。

优选的,所述装置还包括:

第一调用单元,所述第一调用单元用于如果所述第一函数满足所述第一预设条件,则通过所述第一指令直接调用所述第一函数。

第三方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:获得ios应用程序的第一函数;根据所述第一函数获得第一加密函数;将所述第一加密函数加入所述ios应用程序中;获得所述第一加密函数的动态执行环境,其中,所述动态执行环境包括第一指令;通过所述第一指令对所述第一函数予以控制。

第四方面,本发明提供了一种ios平台上对核心代码的保护装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:获得ios应用程序的第一函数;根据所述第一函数获得第一加密函数;将所述第一加密函数加入所述ios应用程序中;获得所述第一加密函数的动态执行环境,其中,所述动态执行环境包括第一指令;通过所述第一指令对所述第一函数予以控制。

本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:

1.本申请实施例提供的一种ios平台上对核心代码的保护方法和装置,通过获得ios应用程序的第一函数;根据所述第一函数获得第一加密函数;将所述第一加密函数加入所述ios应用程序中;获得所述第一加密函数的动态执行环境,其中,所述动态执行环境包括第一指令;通过所述第一指令对所述第一函数予以控制。解决了现有技术中由于没有对核心代码进行合理保护,从而造成核心代码的执行逻辑被非法盗取的技术问题。达到了有效防止核心代码被静态分析,从而对核心代码进行动态保护,防止核心代码被非法盗用的技术效果。

2.本申请实施例通过根据所述第一函数获得所述第一函数的第一执行文件;根据所述第一执行文件获得所述第一函数的第一字节码;对所述第一字节码进行加密;获得所述第一加密函数。进一步解决了现有技术中由于没有对核心代码进行合理保护,从而造成核心代码的执行逻辑被非法盗取的技术问题。进一步达到了对核心代码的加密保护,从而防止核心代码被盗用的技术效果。

3、本申请实施例通过对所述第一加密函数进行解密,获得所述第一函数;获得第一内存空间;通过所述第一内存空间存储所述第一函数。获得所述第一内存空间的第一属性;将所述第一属性修改为第二属性。解决了现有技术中由于没有对核心代码进行合理保护,从而造成核心代码的执行逻辑被非法盗取的技术问题。进一步达到了为核心代码提供动态执行环境的技术效果。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

图1为本发明实施例中一种ios平台上对核心代码的保护方法的流程示意图;

图2为本发明实施例中获得所述第一加密函数的动态执行环境的流程示意图;

图3为本发明实施例中一种ios平台上对核心代码的保护装置的结构示意图;

图4为本发明实施例中另一种ios平台上对核心代码的保护装置的结构示意图.

具体实施方式

本发明实施例提供了一种ios平台上对核心代码的保护方法和装置,用于解决了现有技术中由于没有对so文件进行合理保护,从而造成开发厂商的成果文件被非法盗取的技术问题,本发明提供的技术方案总体思路如下:

在本发明实施例的技术方案中,获得当前adriod平台加载的第一so文件列表;判断所述第一so文件列表与第一预设so文件列表是否满足第一预定条件;如不满足第一预定条件,则判断所述so文件需要保护。解决了现有技术中由于没有对so文件进行合理保护,从而造成开发厂商的成果文件被非法盗取的技术问题。达到了对so文件进行保护,防止其他程序非法盗用,同时还可以对不具备联网功能的so文件的运行环境,进行判断是否异常的技术效果。

下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

为了更清楚的对本申请进行阐述,下面对本申请所涉及的专业名词进行解释:

1.ios:是由苹果公司开发的手持设备操作系统。苹果公司最早于2007年1月9日的macworld大会上公布这个系统,ios最初是设计给iphone使用的,后来陆续套用到ipodtouch、ipad以及appletv等苹果产品上。ios与苹果的macosx操作系统一样,它也是以darwin为基础的,因此同样属于类unix的商业操作系统。

2.xcode:是苹果公司开发的编程软件,是开发人员建立osx和ios应用程序的最快捷的方式。xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。

3.aes:是美国国家标准技术研究所nist旨在取代des的21世纪的加密标准。aes的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年nist开始aes第一轮分析、测试和征集,共产生了15个候选算法。1999年3月完成了第二轮aes2的分析、测试。2000年10月2日美国政府正式宣布选中比利时密码学家joandaemen和vincentrijmen提出的一种密码算法rijndael作为aes.aes加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。aes加密有很多轮的重复和变换。大致步骤如下:1、密钥扩展(keyexpansion),2、初始轮(initialround),3、重复轮(rounds),每一轮又包括:subbytes、shiftrows、mixcolumns、addroundkey,4、最终轮(finalround),最终轮没有mixcolumns。

4.api:就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的api而使操作系统去执行应用程序的命令(动作)。应用程序接口是一组定义、程序及协议的集合,通过api接口实现计算机软件之间的相互通信。api的一个主要功能是提供通用功能集。程序员通过调用api函数对应用程序进行开发,可以减轻编程任务。api同时也是一种中间件,为各种不同平台提供数据共享。

5.memcpy:c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

6.vmprotect:是新一代的软件保护系统,将保护后的代码放到虚拟机中运行,这将使分析反编译后的代码和破解变得极为困难。使用map文件或内建的反编译引擎,您可以快速选择需要保护的代码。

实施例一

图1为本发明实施例中一种ios平台上对核心代码的保护方法的流程示意图。如图1所示,所述方法包括:

步骤110:获得ios应用程序的第一函数;

具体而言,所述应用程序指为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。所述第一函数为所述ios应用程序代码中的核心函数,例如程序中对数据进行加密的加密函数,或者对数据进行解密的解密函数等。

步骤120:根据所述第一函数获得第一加密函数;

进一步的,所述根据所述第一函数获得第一加密函数,还包括:根据所述第一函数获得所述第一函数的第一执行文件;根据所述第一执行文件获得所述第一函数的第一字节码;对所述第一字节码进行加密;获得所述第一加密函数。

具体而言:所述第一加密函数为对所述第一函数进行加密后的函数,本申请实施例以网络数据包加密的函数encodedata为例进行详细解释。首先通过xcode编译器来对所述第一函数进行编译,编译完成后,得到最终的执行文件,即所述第一执行文件,从所述第一执行文件中得到所述第一函数的全部汇编代码对应的字节码,即所述第一字节码,换句话说,一个函数经过编译器编译后对应的是其最终可执行的cpu的指令集的汇编代码,从数据上来看则是字节码。然后对所述第一字节码进行加密,得到所述第一加密函数,从而对所述第一函数进行保护,本申请实施例使用的是aes加密算法来对所述第一字节码进行加密,根据实际情况,也可以使用其他加密算法对所述第一函数进行加密,本申请实施例对此不作限制,

步骤130:将所述第一加密函数加入所述ios应用程序中;

进一步的,所述将所述第一加密函数加入所述ios应用程序中,还包括获得第一常量;根据所述第一常量,将所述第一加密函数加入所述ios应用程序中。

具体而言,在正式发布的应用程序代码中会定义一个全局常量字符串,也就是所述第一常量,将所述第一常量加入所述第一加密函数的字节码中。然后将所述具有第一常量的所述第一加密函数加入到应用程序中,随发布应用程序一起进行发布。

步骤140:获得所述第一加密函数的动态执行环境,其中,所述动态执行环境包括第一指令;

进一步的,所述获得所述第一加密函数的动态执行环境,还包括:对所述第一加密函数进行解密,获得所述第一函数;获得第一内存空间;通过所述第一内存空间存储所述第一函数。获得所述第一内存空间的第一属性;将所述第一属性修改为第二属性。

具体而言,在前述步骤中,完成了对所述第一函数的加密过程,获得了所述第一加密函数,在步骤140中,将对所述第一加密函数进行解密,从而获得所述第一函数,然后在程序进程中分配一段可以执行的内存空间,即所述第一内存空间,然后将解密后的代码,也就是所述第一函数拷贝到所述第一内存空间中,并且将所述第一函数指针赋值为此段内存。换言之,也就是在程序中动态的申请了一段代码内存空间,并且在这段代码内存空间中写入了所述第一函数。从而整个程序中则可以调用所述第一函数。具体实现如下:

步骤141:对所述第一加密函数进行解密,获得所述第一函数;

具体的,本文则会调用aes解密算法来对数据进行解密,根据实际情况,可以使用其他解密算法对所述第一加密函数进行解密,本申请实施例对此不作任何限制,最终得到解密后函数的字节码。

步骤142:获得第一内存空间;

具体的,本文则会调用ios提供的api函数来在内存中分配一段内存空间即所述第一内存空间,用于拷贝所述第一函数的字节码。api函数则需要传入分配的内存大小。

步骤143:通过所述第一内存空间存储所述第一函数;

在步骤142中已经分配完成了内存空间,步骤143则需要将所述第一函数的字节码拷贝到所述第一内存空间中。具体可以使用memcpy函数进行内存拷贝。

memcpy(address,funcencodedatacode,size);

其中参数address为所述第一内存空间;

其中参数funcencodedatacode为所述第一函数encodedata对应的第一字节码;

其中参数size为funcencodedatacode的大小。

步骤144:获得所述第一内存空间的第一属性;将所述第一属性修改为第二属性;

具体的,由于分配的所述第一内存空间是可以读写的,并不具备执行的权限,所以需要对内存属性进行修改,使其可以执行,从而可以执行所述第一函数。具体实现则是通过调用ios提供的系统api函数vm_protect来修改内存的属性。其函数原型如下:

其中,参数address为所述第一内存空间;

参数size为funcencodedatacode的大小;

参数new_protection为所述第二属性,标明需要将内存属性修改成什么。对应本文则是:

vm_prot_read|vm_prot_write|vm_prot_execute

表示所述第一内存具有读属性、写属性、可以执行的属性。通过上述步骤,为核心函数提供动态执行环境,有效防止核心代码被静态分析、非法盗用的技术效果

步骤150:通过所述第一指令对所述第一函数予以控制。

进一步的,所述通过所述第一指令对所述第一函数予以控制,还包括:判断所述第一函数是否满足第一预设条件;如果所述第一函数不满足所述第一预设条件,则通过所述第一指令控制所述第一函数初始化。如果所述第一函数满足所述第一预设条件,则通过所述第一指令直接调用所述第一函数。

具体而言,经过步骤110-步骤140的准备工作后,便得到一段能够动态执行的第一函数,所述第一函数是在所述应用程序执行后创建的一段内存代码,那么当所述应用程序执行时,如果所述应用程序中需要调用到所述第一函数去执行功能,则首先会去判断所述第一函数是否满足所述第一预设条件,所述第一预设条件为所述第一函数的指针不为空指针,如果为空指针,则说明此时所述第一函数的内存代码还没有初始化,需要通过所述第一指令调用上述步骤143的功能来将所述第一函数进行初始化,初始化后便可正常运行所述第一函数。如果所述第一函数满足所述第一预设条件,也就是所述第一函数的指针不为空,说明所述第一函数已经完成初始化,可以直接调用所述第一函数运行。

通过本申请实施例的方法,将ios平台应用程序中的核心代码进行数据加密,存储到正式的应用程序中,而当所述应用程序中需要调用上述核心函数时才会解密所述核心函数的代码。从而达到对核心函数进行有效保护和加密的效果。并且可以有效防止核心函数的数据代码被静态分析的可能,因为所述函数使用的是已经加密后的数据存储,只有当所述应用程序运行时才会有对所述核心函数的数据代码进行解密。

实施例2

基于与前述实施例中一种ios平台上对核心代码的保护方法同样的发明构思,本发明还提供一种ios平台上对核心代码的保护装置,如图2所示,包括:

第一获得单元11,所述第一获得单元11用于获得ios应用程序的第一函数;

第二获得单元12,所述第二获得单元12用于根据所述第一函数获得第一加密函数;

第一添加单元13,所述第一添加单元13用于将所述第一加密函数加入所述ios应用程序中;

第三获得单元14,所述第三获得单元14用于获得所述第一加密函数的动态执行环境,其中,所述动态执行环境包括第一指令;

第一控制单元15,所述第一控制单元15用于通过所述第一指令对所述第一加密函数予以控制。

进一步的,所述装置还包括:

第四获得单元,所述第四获得单元用于根据所述第一函数获得所述第一函数的第一执行文件;

第五获得单元,所述第五获得单元用于根据所述第一执行文件获得所述第一函数的第一字节码;

第一加密单元,所述第一加密单元用于对所述第一字节码进行加密;

第六获得单元,所述第六获得单元用于获得所述第一加密函数。

进一步的,所述装置还包括:

第七获得单元,所述第七获得单元用于获得第一常量;

第二添加单元,所述第二添加单元用于根据所述第一常量,将所述第一加密函数加入所述ios应用程序中。

进一步的,所述装置还包括:

第一解密单元,所述第一解密单元用于对所述第一加密函数进行解密,获得所述第一函数;

第八获得单元,所述第八获得单元用于获得第一内存空间;

第一存储单元,所述第一存储单元用于通过所述第一内存空间存储所述第一函数。

进一步的,所述装置还包括:

第九获得单元,所述第九获得单元用于获得所述第一内存空间的第一属性;

第一修改单元,所述第一修改单元用于将所述第一属性修改为第二属性。

优选的,所述装置还包括:

第一判断单元,所述第一判断单元用于判断所述第一加密函数是否满足第一预设条件;

第一控制单元,所述第一控制单元用于如果所述第一加密函数不满足所述第一预设条件,则通过所述第一指令控制所述第一加密函数初始化。

优选的,所述装置还包括:

第一调用单元,所述第一调用单元用于如果所述第一加密函数满足所述第一预设条件,则通过所述第一指令直接调用所述第一加密函数。

前述图1实施例1中的一种ios平台上对核心代码的保护方法的各种变化方式和具体实例同样适用于本实施例的一种ios平台上对核心代码的保护装置,通过前述对一种ios平台上对核心代码的保护方法的详细描述,本领域技术人员可以清楚的知道本实施例中一种ios平台上对核心代码的保护装置的实施方法,所以为了说明书的简洁,在此不再详述。

实施例3

基于与前述实施例中一种ios平台上对核心代码的保护方法同样的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述一种ios平台上对核心代码的保护方法的任一方法的步骤。

其中,在图3中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口306在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。

处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。

本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:

1.本申请实施例提供的一种ios平台上对核心代码的保护方法和装置,通过获得ios应用程序的第一函数;根据所述第一函数获得第一加密函数;将所述第一加密函数加入所述ios应用程序中;获得所述第一加密函数的动态执行环境,其中,所述动态执行环境包括第一指令;通过所述第一指令对所述第一加密函数予以控制。解决了现有技术中由于没有对核心代码进行合理保护,从而造成核心代码的执行逻辑被非法盗取的技术问题。达到了有效防止核心代码被静态分析,从而对核心代码进行动态保护,防止核心代码被非法盗用的技术效果。

2.本申请实施例通过根据所述第一函数获得所述第一函数的第一执行文件;根据所述第一执行文件获得所述第一函数的第一字节码;对所述第一字节码进行加密;获得所述第一加密函数。进一步解决了现有技术中由于没有对核心代码进行合理保护,从而造成核心代码的执行逻辑被非法盗取的技术问题。进一步达到了对核心代码的加密保护,从而防止核心代码被盗用的技术效果。

3、本申请实施例通过对所述第一加密函数进行解密,获得所述第一函数;获得第一内存空间;通过所述第一内存空间存储所述第一函数。获得所述第一内存空间的第一属性;将所述第一属性修改为第二属性。解决了现有技术中由于没有对核心代码进行合理保护,从而造成核心代码的执行逻辑被非法盗取的技术问题。进一步达到了为核心代码提供动态执行环境的技术效果。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

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

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

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

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

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