logo好方法网

安卓源代码保护方法和装置


技术摘要:
本发明公开了安卓源代码保护方法和装置,包括:转换原始dex文件为class文件;抽取并转译所述class文件中的函数为对应的C 的函数,得到cpp文件;通过定制的NDK编译所述cpp文件得到经过加固的ABI动态库;将抽取函数后的所述class文件转换成第二dex文件;打包所述ABI动态  全部
背景技术:
目前,Android系统本身开源特性,以及移动应用承载的越来越多的核心业务,使 其已成为黑客的主要攻击对象。dex文件容易被反编译,并被还原成java源代码,导致被黑 客攻击。 为了解决这些问题,通常的方法: 1 .在开发完成后的文件中,把dex加密成新的文件的dex,然后让代理App去和 Android系统对接,通过加载dex文件,把拿到的加密的apk中的dex文件进行解密,然后再交 给系统处理。 2.把核心相关的逻辑使用C或者C 代码编写加密解密逻辑,先加密需要加密的函 数或者段,然后再加载SO文件,解密先前加密的函数和段,从而避免dex中核心逻辑被反编 译成可读性的java源代码。 现有技术对于源码保护的处理,不足之处非常明显,具体在于: 在系统获取dex文件时可以通过反射拿到解密之后的dex文件。 核心相关的逻辑使用C编写的加密解密SO文件。由于运行后需要解密相关的逻辑, 因此破解者只需要在SO文件运行后,DUMP内存,即可获取解密后的逻辑,导致其它代码会被 窃取利用。 每个应用都需要单独针对核心功能代码进行加密和解密的保护功能编写。增加了 项目的开发周期,存在安全强度低、维护成本高的缺点。
技术实现要素:
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出安卓源 代码保护方法和装置。 第一方面,本发明的一个实施例提供了安卓源代码保护方法,包括:转换原始dex 文件为class文件;抽取并转译class文件中的函数为对应的C 的函数,得到cpp文件;通过 定制的NDK编译cpp文件得到经过加固的ABI动态库;将抽取函数后的class文件转换成第二 dex文件;打包ABI动态库和第二dex文件以形成新的代码文件。 本发明的安卓源代码保护方法至少具有如下有益效果:通过将整体的函数的转换 成C 的函数,能够natives层上进行代码的安全处理,有助于提高破译的难度;通过定制的 NDK能够有针对性的对cpp文件进行加固,提高安全性;通过打包ABI动态库和第二dex文件, 以形成正式的代码文件。 根据本发明的另一些实施例的安卓源代码保护方法,抽取并转译class文件中的 函数为对应的C 的函数,包括:通过jni反射调用class文件中的函数的字节码,实现相同 的代码逻辑以得到对应的C或C 版本的函数。 4 CN 111597514 A 说 明 书 2/7 页 根据本发明的另一些实施例的安卓源代码保护方法,定制的NDK具体用于:虚拟化 保护、内容混淆、识别特定代码并分割、遍历并添加虚拟机got表、遍历并处理LLVM固有指 令、遍历并添加虚拟机全局变量、调用后端转换器生成虚拟机字节码和修改待保护函数为 虚拟机中间函数。 根据本发明的另一些实施例的安卓源代码保护方法,得到cpp文件的过程,包括: 翻译函数中的字节码指令;生成Native常量池文件;初始化Native函数的运行环境;注册 Native函数;替换VMakelist文件中的源文件列表。 根据本发明的另一些实施例的安卓源代码保护方法,还包括提供辅助类以处理接 口函数;针对具体的函数属性进行对应的处理。 第二方面,本发明的一个实施例提供了安卓源代码保护装置,包括处理器,处理器 用于执行:转换原始dex文件为class文件;抽取并转译class文件中的函数为对应的C 的 函数,得到cpp文件;通过定制的NDK编译cpp文件得到经过加固的ABI动态库;将抽取函数后 的class文件转换成第二dex文件;打包ABI动态库和第二dex文件以形成新的代码文件。 根据本发明的另一些实施例的安卓源代码保护装置,抽取并转译class文件中的 函数为对应的C 的函数,包括:通过jni反射调用class文件中的函数的字节码,实现相同 的代码逻辑以得到对应的C或C 版本的函数。 根据本发明的另一些实施例的安卓源代码保护装置,定制的NDK具体用于:虚拟化 保护、内容混淆、识别特定代码并分割、遍历并添加虚拟机got表、遍历并处理LLVM固有指 令、遍历并添加虚拟机全局变量、调用后端转换器生成虚拟机字节码和修改待保护函数为 虚拟机中间函数。 根据本发明的另一些实施例的安卓源代码保护装置,得到cpp文件的过程,包括: 翻译函数中的字节码指令;生成Native常量池文件;初始化Native函数的运行环境;注册 Native函数;替换VMakelist文件中的源文件列表。 根据本发明的另一些实施例的安卓源代码保护装置,得到cpp文件的过程,还包 括:提供辅助类以处理接口函数;针对具体的函数属性进行对应的处理。 附图说明 图1是本发明实施例中安卓源代码保护方法一具体实施例的流程示意图; 图2是本发明实施例中安卓源代码保护流程一具体实施例的流程示意图; 图3是本发明实施例中class文件转C 的一具体实施例的流程示意图。
分享到:
收藏