用于安卓系统的防逆向破解共享对象文件的方法和装置的制造方法

文档序号:9474287阅读:417来源:国知局
用于安卓系统的防逆向破解共享对象文件的方法和装置的制造方法
【技术领域】
[0001]本申请涉及计算机技术领域,具体涉及计算机安全技术领域,尤其涉及用于安卓系统的防逆向破解共享对象文件的方法和装置。
【背景技术】
[0002]安卓系统的开源性为应用开发者提供了更多的功能接口,这些功能接口提高了系统的可扩展性的同时也为恶意软件提供了便利。
[0003]例如在运行安卓安装包APK(AndroidPackage)文件时,会加载一些需要用到的共享对象so (Shared Object)文件(安卓系统使用的动态链接库文件),这些so文件被加载到内存中后,处于明文状态,而程序员往往会把一些重要的代码放到so文件中,恶意人员只要找到so文件的加载基地址,就可以完整的把so文件从内存中转储(dump)出来,以利于分析和利用,这就造成了比较严重的安全隐患。

【发明内容】

[0004]鉴于现有技术中的上述缺陷或不足,期望能够提供一种安全性高、难以破解的方案。为了实现上述一个或多个目的,本申请提供了防逆向共享对象文件的方法和装置。
[0005]第一方面,本申请提供了一种用于安卓系统的防逆向破解共享对象文件的方法,所述方法包括:加载安装包文件,其中,所述安装包文件包括共享对象文件,所述共享对象文件包括预先链接至共享对象文件的壳中的解密算法、已加密的被保护函数和加密算法;加载所述共享对象文件至内存中;在所述安装包文件调用被保护函数时,调用解密算法解密所述已加密的被保护函数,得到被保护函数的明文源代码;将所述被保护函数的明文源代码加载至明文源代码地址中;执行所述被保护函数的明文源代码;响应于执行所述被保护函数的明文源代码完成,调用加密算法删除所述被保护函数的明文源代码。
[0006]在一些实施例中,所述调用解密算法解密所述已加密的被保护函数,得到被保护函数的明文源代码包括:调用预设于静态链接文件中的解密函数,并根据预设于所述壳中的被保护函数的数据集合,将被保护函数的明文源代码地址传送至解密函数,其中,所述数据集合中的单条数据包括所述被保护函数的明文源代码地址、明文源代码大小、密文源代码地址和密文源代码大小;所述解密函数调用所述解密算法,并将所述明文源代码地址传送至所述解密算法;所述解密算法根据所述明文源代码地址在所述数据集合中查询密文源代码地址和密文源代码大小;所述解密算法根据所述密文源代码地址和密文源代码大小解密所述被保护函数,得到被保护函数的明文源代码。
[0007]在一些实施例中,所述响应于执行所述被保护函数的明文源代码完成,调用加密算法删除所述被保护函数的明文源代码包括:响应于执行所述被保护函数的明文源代码完成,调用预设于所述静态链接文件中的加密函数,并将所述明文源代码地址传输给所述加密函数;所述加密函数调用预设于所述壳中的所述加密算法,并将所述明文源代码地址传输给加密算法;所述加密算法根据所述明文源代码地址在所述数据集合中查询明文源代码大小;所述加密算法根据所述明文源代码地址和所述明文源代码大小,删除所述被保护函数的明文源代码。
[0008]在一些实施例中,所述数据集合的结构形式包括以下任意一项:数据表、链表、二维数组和结构体数组。
[0009]第二方面,本申请提供了一种用于安卓系统的防逆向破解共享对象文件的装置,所述装置包括:第一加载模块,用于加载安装包文件,其中,所述安装包文件包括共享对象文件,所述共享对象文件包括预先链接至共享对象文件的壳中的解密算法、已加密的被保护函数和加密算法;第二加载模块,用于加载所述共享对象文件至内存中;解密模块,用于在所述安装包文件调用被保护函数时,调用解密算法解密所述已加密的被保护函数,得到被保护函数的明文源代码;第三加载模块,用于将所述被保护函数的明文源代码加载至明文源代码地址中;执行模块,用于执行所述被保护函数的明文源代码;删除模块,用于响应于执行所述被保护函数的明文源代码完成,调用加密算法删除所述被保护函数的明文源代码。
[0010]在一些实施例中,所述解密模块包括:第一调用模块,用于调用预设于静态链接文件中的解密函数,并根据预设于所述壳中的被保护函数的数据集合,将被保护函数的明文源代码地址传送至解密函数,其中,所述数据集合中的单条数据包括所述被保护函数的明文源代码地址、明文源代码大小、密文源代码地址和密文源代码大小;第二调用模块,用于通过所述解密函数调用所述解密算法,并将所述明文源代码地址传送至所述解密算法;查询模块,用于通过所述解密算法根据所述明文源代码地址在所述数据集合中查询密文源代码地址和密文源代码大小;解密子模块,用于根据所述密文源代码地址和密文源代码大小解密所述被保护函数,得到被保护函数的明文源代码。
[0011]在一些实施例中,所述删除模块包括:第三调用模块,用于响应于执行所述被保护函数的明文源代码完成,调用预设于所述静态链接文件中的加密函数,并将所述明文源代码地址传输给所述加密函数;第四调用模块,用于通过所述加密函数调用所述加密算法,并将所述明文源代码地址传输给加密算法;查询子模块,用于通过所述加密算法根据所述明文源代码地址在所述数据集合中查询明文源代码大小;删除子模块,用于通过所述加密算法根据所述明文源代码地址和所述明文源代码大小,删除所述被保护函数的明文源代码。。
[0012]本申请提供的用于安卓系统的防逆向破解共享对象文件的方法和装置,由于解密算法、已加密的被保护函数和加密算法均设置于共享对象文件的壳中,加壳的程序可以直接运行,但是不能查看源代码,而被保护函数的明文只在被保护函数被调用的短暂时间段内存在于内存的明文源代码地址中,调用完毕之后明文源代码随即被清空,恶意人员很难在明文存在于内存的短暂时间内转储出被保护函数的源代码,因此提高了共享对象文件中被保护函数的安全性;另外,恶意人员若想要通过获取解密算法得到被保护函数的明文,需要对共享对象文件进行脱壳,增加了破解共享对象文件的难度。
【附图说明】
[0013]通过阅读参照以下附图所作的对非限制性实施例的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0014]图1示出了可以应用本申请实施例的示例性系统架构;
[0015]图2示出了根据本申请一个实施例的用于安卓系统的防逆向破解共享对象文件的方法的示例性流程图;
[0016]图3示出了根据本申请一个实施例的用于安卓系统的防逆向破解共享对象文件的方法的应用场景流程图;
[0017]图4示出了根据本申请一个实施例的通过解密函数调用解密算法解密已加密的被保护函数的方法的示例性流程图;
[0018]图5示出了根据本申请一个实施例的通过加密函数调用加密算法删除被保护函数的明文源代码的方法的示例性流程图;
[0019]图6示出了根据本申请一个实施例的用于安卓系统的防逆向破解共享对象文件的装置的示例性结构图;
[0020]图7示出了根据本申请一个实施例的解密模块的示例性结构图;
[0021]图8示出了根据本申请一个实施例的加密模块的示例性结构图;
[0022]图9示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
【具体实施方式】
[0023]下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
[0024]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0025]图1示出了可以应用本申请实施例的示例性系统架构100。
[0026]如图1所示,系统架构100可以包括终端设备101、102、103、网络104和服务器105。网络105用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0027]用户可以使用终端设备101、102、103通过网络104与服务器105交互,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1