apk的加固方法、电子设备及存储介质.pdf

上传人:li****8 文档编号:10147102 上传时间:2021-06-05 格式:PDF 页数:9 大小:415.42KB
返回 下载 相关 举报
apk的加固方法、电子设备及存储介质.pdf_第1页
第1页 / 共9页
apk的加固方法、电子设备及存储介质.pdf_第2页
第2页 / 共9页
apk的加固方法、电子设备及存储介质.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《apk的加固方法、电子设备及存储介质.pdf》由会员分享,可在线阅读,更多相关《apk的加固方法、电子设备及存储介质.pdf(9页珍藏版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010920292.6 (22)申请日 2020.09.03 (71)申请人 深圳创维-RGB电子有限公司 地址 518052 广东省深圳市南山区深南大 道创维大厦A座13-16楼 (72)发明人 韩强 (74)专利代理机构 深圳市君胜知识产权代理事 务所(普通合伙) 44268 代理人 刘芙蓉温宏梅 (51)Int.Cl. G06F 21/14(2013.01) G06F 21/60(2013.01) G06F 8/41(2018.01) (54)发明名称 一种apk的加。

2、固方法、 电子设备及存储介质 (57)摘要 本发明公开一种apk的加固方法、 电子设备 及存储介质, 方法包括对待加固源代码编译, 以 得到dex文件; 对所述dex文件加密, 以得到第一 dex文件; 基于所述第一dex文件, 生成用于解密 所述第一dex文件的解密程序; 对所述解密程序 加密, 以得到第一解密程序; 将所述解密程序与 所述第一解密程序配置为so文件; 将所述第一 dex文件配置为apk的资源文件, 并与所述so文件 得到目标apk。 本发明使用插件化的方式, 将待加 固的代码打包到dex文件中, 对该dex文件进行加 密后与用于解密已加密的dex文件的解密程序进 行加密处理。

3、后一起打包到apk中, 增加获取应用 程序源代码文件的难度, 从而提高对应用程序代 码的保护力度。 权利要求书1页 说明书6页 附图1页 CN 112115430 A 2020.12.22 CN 112115430 A 1.一种apk的加固方法, 其特征在于, 所述apk的加固方法包括以下步骤: 对待加固源代码编译, 以得到dex文件; 对所述dex文件加密, 以得到第一dex文件; 基于所述第一dex文件, 生成用于解密所述第一dex文件的解密程序; 对所述解密程序加密, 以得到第一解密程序; 将所述解密程序与所述第一解密程序配置为so文件; 将所述第一dex文件配置为apk的资源文件, 并。

4、与所述so文件得到目标apk。 2.根据权利要求1所述apk的加固方法, 其特征在于, 所述对待加固源代码编译, 以得到 dex文件具体包括: 构建JAVA运行环境, 获取待加固源代码; 利用集成开发工具对所述待加固源代码执行编译命令, 以得到dex文件。 3.根据权利要求2所述apk的加固方法, 其特征在于, 所述对所述dex文件加密, 以得到 第一dex文件具体包括: 利用gradle插件对所述dex文件采用加密算法加密, 以得到加密的dex文件; 获取待加固apk的签名; 将所述签名作为密钥以对所述加密的dex文件进行加密运算, 得到签名后的加密的dex 文件, 并将所述签名后的加密的d。

5、ex文件作为第一dex文件。 4.根据权利要求3所述apk的加固方法, 其特征在于, 所述加密算法包括对称加密算法 和非对称加密算法。 5.根据权利要求1所述apk的加固方法, 其特征在于, 所述基于所述第一dex文件, 生成 用于解密所述第一dex文件的解密程序具体包括: 确定用于解密所述第一dex文件的解密密钥; 利用集成开发工具编译出解密程序, 其中, 所述解密程序配置有所述解密密钥。 6.根据权利要求5所述apk的加固方法, 其特征在于, 所述解密程序为native解密程序, 所述native解密程序处于系统框架的native层。 7.根据权利要求1所述apk的加固方法, 其特征在于,。

6、 所述将所述解密程序与所述第一 解密程序配置为so文件具体包括: 利用C语言或C+语言分别编译所述解密程序和所述第一解密程序, 以得到so文件。 8.根据权利要求1所述apk的加固方法, 其特征在于, 所述将所述第一dex文件配置为 apk的资源文件, 并与所述so文件得到目标apk具体包括: 将所述第一dex文件配置为apk的资源文件; 将所述apk的资源文件以及所述so文件按照预设系统规则生成目标apk。 9.一种电子设备, 其特征在于, 所述电子设备包括处理器和与所述处理器连接的存储 器, 所述存储器存储有存储有一个或者多个程序, 所述处理器用于执行如权利要求1-8中任 意一项所述的ap。

7、k的加固方法中步骤。 10.一种非临时性计算机可读存储介质, 其特征在于, 当所述存储介质中的指令由电子 设备的处理器执行时, 使得电子设备能够执行如权利要求1-8任意一项所述的apk的加固方 法中步骤。 权利要求书 1/1 页 2 CN 112115430 A 2 一种apk的加固方法、 电子设备及存储介质 技术领域 0001 本发明涉及应用安全处理技术领域, 特别是涉及一种apk的加固方法、 电子设备及 存储介质。 背景技术 0002 随着Android开放系统的发展, Android系统占据了大量的移动终端时长, 已逐渐 成为了移动终端的普及的操作系统, 同时基于该系统的软件应用也越来越。

8、多, 但是开发这 发布的Android应用使用Java语言开发, 容易被其他人恶意反编译, 从而获取应用中重要信 息, 这样, 很容易被逆向而造成损失。 目前, 应用加固的方法有很多, 但大多加固方法启动时 过程比较复杂, 运行效率低。 0003 因此, 现有技术还有待于发展和改进。 发明内容 0004 基于此, 本发明提供一种apk的加固方法、 电子设备及存储介质, 用以解决现有技 术中apk的加固安全性低的技术问题。 0005 第一方面, 本发明实施例提供了一种apk的加固方法, 包括: 0006 对待加固源代码编译, 以得到dex文件; 0007 对所述dex文件加密, 以得到第一dex。

9、文件; 0008 基于所述第一dex文件, 生成用于解密所述第一dex文件的解密程序; 0009 对所述解密程序加密, 以得到第一解密程序; 0010 将所述解密程序与所述第一解密程序配置为so文件; 0011 将所述第一dex文件配置为apk的资源文件, 并与所述so文件得到目标apk。 0012 可选地, 所述对待加固源代码编译, 以得到dex文件具体包括: 0013 构建JAVA运行环境, 获取待加固源代码; 0014 利用集成开发工具对所述待加固源代码执行编译命令, 以得到dex文件。 0015 可选地, 所述对所述dex文件加密, 以得到第一dex文件具体包括: 0016 利用gra。

10、dle插件对所述dex文件采用加密算法加密, 以得到加密的dex文件; 0017 获取待加固apk的签名; 0018 将所述签名作为密钥以对所述加密的dex文件进行加密运算, 得到签名后的加密 的dex文件, 并将所述签名后的加密的dex文件作为第一dex文件。 0019 可选地, 所述加密算法包括对称加密算法和非对称加密算法。 0020 可选地, 所述基于所述第一dex文件, 生成用于解密所述第一dex文件的解密程序 具体包括: 0021 确定用于解密所述第一dex文件的解密密钥; 0022 利用集成开发工具编译出解密程序, 其中, 所述解密程序配置有所述解密密钥。 0023 可选地, 所述。

11、解密程序为native解密程序, 所述native解密程序处于系统框架的 说明书 1/6 页 3 CN 112115430 A 3 native层。 0024 可选地, 所述将所述解密程序与所述第一解密程序配置为so文件具体包括: 0025 利用C语言或C+语言分别编译所述解密程序和所述第一解密程序, 以得到so文 件。 0026 可选地, 所述将所述第一dex文件配置为apk的资源文件, 并与所述so文件得到目 标apk具体包括: 0027 将所述第一dex文件配置为apk的资源文件; 0028 将所述apk的资源文件以及所述so文件按照预设系统规则生成目标apk。 0029 第二方面, 本。

12、发明实施例还提供了一种电子设备, 所述电子设备包括处理器和与 所述处理器连接的存储器, 所述存储器存储有存储有一个或者多个程序, 所述处理器用于 执行: 0030 对待加固源代码编译, 以得到dex文件; 0031 对所述dex文件加密, 以得到第一dex文件; 0032 基于所述第一dex文件, 生成用于解密所述第一dex文件的解密程序; 0033 对所述解密程序加密, 以得到第一解密程序; 0034 将所述解密程序与所述第一解密程序配置为so文件; 0035 将所述第一dex文件配置为apk的资源文件, 并与所述so文件得到目标apk。 0036 第三方面, 本发明实施例还提供了一种非临时。

13、性计算机可读存储介质, 当所述存 储介质中的指令由电子设备的处理器执行时, 使得电子设备能够执行一种apk的加固方法, 所述apk的加固方法包括以下步骤: 0037 对待加固源代码编译, 以得到dex文件; 0038 对所述dex文件加密, 以得到第一dex文件; 0039 基于所述第一dex文件, 生成用于解密所述第一dex文件的解密程序; 0040 对所述解密程序加密, 以得到第一解密程序; 0041 将所述解密程序与所述第一解密程序配置为so文件; 0042 将所述第一dex文件配置为apk的资源文件, 并与所述so文件得到目标apk。 0043 与现有技术相比, 本发明实施例具有以下优。

14、点: 0044 根据本发明实施方式提供的方法, 所述apk的加固方法包括以下步骤: 对待加固源 代码编译, 以得到dex文件; 对所述dex文件加密, 以得到第一dex文件; 基于所述第一dex文 件, 生成用于解密所述第一dex文件的解密程序; 对所述解密程序加密, 以得到第一解密程 序; 将所述解密程序与所述第一解密程序配置为so文件; 将所述第一dex文件配置为apk的 资源文件, 并与所述so文件得到目标apk。 本发明使用插件化的方式, 将待加固的代码打包 到dex文件中, 对该dex文件进行加密后与用于解密已加密的dex文件的解密程序进行加密 处理后一起打包到apk中, 这样, 增。

15、加获取应用程序源代码文件的难度, 从而提高对应用程 序代码的保护力度。 附图说明 0045 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本 说明书 2/6 页 4 CN 112115430 A 4 发明中记载的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。 0046 图1为本发明实施例中一种apk的加固方法的流程示意图。 0047 图2为本发明实施例中一种电子设备的结构示意图。 具体实施方式 0048 为了使本技术领域的人员。

16、更好地理解本发明方案, 下面将结合本发明实施例中的 附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例仅是本 发明一部分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普通技术人员在 没有做出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。 0049 为了进一步理解本申请的技术方案, 下面结合附图加以说明: 0050 请参阅图1, 图1是本发明提供的一种apk的加固方法的流程图, 应该说明的是, 本 发明实施方式的apk的加固方法并不限于图1所示的流程图中的步骤及顺序, 根据不同的需 求, 流程图中的步骤可以增加、 移除或者改变顺。

17、序。 0051 如图1所示, 本发明提供的apk的加固方法包括以下步骤: 0052 S10、 对待加固源代码编译, 以得到dex文件。 0053 在本实施例中, 由于Android系统支持的应用格式主要以apk形式存在, 该apk (Android application package)Android应用程序包, 是Android操作系统使用的一种类 似Symbian Sis或Sisx应用程序包文件格式, 用于分发和安装移动应用及中间件。 0054 Android应用程序的代码想在Android设备上运行, 要先进行编译, 被打包成为一 个被Android系统所能识别的文件才可以被运行, 而。

18、这种能被Android系统识别并运行的文 件格式便是 “APK” 。 APK文件内包含被编译的代码文件(.dex)、 文件资源(resources)、 ssets、 证书(certificates)、 清单文件(manifest file)。 0055 dex文件指的是可执行文件, 其通过工具软件dx把所有的字节码文件转成Android dex文件(classes.dex)。 0056 相应地, 应用的主要逻辑实现在apk文件中的class .dex文件中。 因此, 对于 class.dex文件的保护是保护整个apk文件安全的关键所在。 0057 为此, 本申请采用对应的加密方式隐藏该clas。

19、s.dex文件中实现的逻辑, 并且不影 响程序的正常运行, 为用户保证加固的透明性。 0058 示例性地, 对待加固源代码编译, 以得到dex文件具体包括: 0059 S11, 构建JAVA运行环境, 获取待加固源代码; 0060 S12, 利用集成开发工具对所述待加固源代码执行编译命令, 以得到dex文件。 0061 具体地, 所述待加固源代码指的是需要保护的Java代码, 例如: 注册时保存用户信 息的Java代码, 又如登录时检测用户信息的Java代码。 所述集成开发工具包括Eclipse, 其 附带了一个标准的插件集, 包括Java开发工具(Java Development Kit, 。

20、JDK)、 MyEclipse, 其包括了完备的编码、 调试、 测试和发布功能, 是功能丰富的JavaEE集成开发环境等。 0062 S20, 对所述dex文件加密, 以得到第一dex文件。 0063 在本实施例中, 由于dex文件容易被恶意反编译获取到重要数据, 因此, 为了保护 开发者和使用者的权益, 且在不影响合法应用便利的前提下, 对dex文件采用对应的加密算 说明书 3/6 页 5 CN 112115430 A 5 法进行加密, 从而得到加密的dex文件, 将该加密的dex文件作为第一dex文件。 本申请采用 自定义的gradle插件通过一定加密算法对该dex文件进行加密。 所述gr。

21、adle插件内置了很 多常用的插件, Gradle中的插件在一定的场景中可以提高开发效率, 可以通过扩展现有的 插件来实现更多功能, 比如Android Gradle插件就是基于内置的Java插件来实现的。 其能 够实现: 0064 1、 添加任务到项目中, 可对项目进行测试、 编译、 打包; 0065 2、 添加依赖到项目中, 可用来配置项目构建过程中需要的依赖; 0066 3、 可以向项目中现有的对象类型添加新的扩展属性、 方法等, 可方便项目的配置 和构建优化, 比如Android项目构建中的android就是Android Gradle插件为Project对 象添加的一个扩展; 006。

22、7 4、 可以对项目进行一些约定, 如使用Java Gradle插件可以约定src/main/java目 录下源代码的存放位置, 在编译的时候就可以编译指定目录下的Java源代码文件。 0068 因此, 采用gradle插件简便易用, 还可根据不同项目需求自定义插件, 节省开发成 本, 可移植性强。 0069 示例性地, 所述对所述dex文件加密, 以得到第一dex文件具体包括: 0070 S21, 利用gradle插件对所述dex文件采用加密算法加密, 以得到加密的dex文件; 0071 S22, 获取待加固apk的签名; 0072 S23, 将所述签名作为密钥以对所述加密的dex文件进行加。

23、密运算, 得到签名后的 加密的dex文件, 并将所述签名后的加密的dex文件作为第一dex文件。 0073 具体地, 所述加密算法包括对称加密算法和非对称加密算法。 其中, 对称加密算法 指的是加密和解密使用相同密钥的加密算法, 密钥非公开, 其特点是算法公开、 计算量小、 加密速度快、 加密效率高。 所述对称加密算法包括DES、 TripleDES、 RC2、 RC4、 RC5和Blowfish 等。 由于本申请仅对需要保护的Java代码单独生成的dex文件进行加密, 不需要保护的Java 代码不需要进行加密, 因此, 可以根据实际需求灵活更改对称加密算法。 0074 非对称加密算法需要两个。

24、密钥: 公开密钥和私有密码。 公开密钥和私有密钥是一 对, 如果用公开密钥对数据进行加密, 只有配对的私有密钥才能解密; 如果用私有密钥对数 据进行加密, 只有配对的公开密钥才能解密。 例如: 甲方生成一对密钥并将其中一把作为公 开密钥向其他方公开; 得到该公开密钥的乙方使用该公开密钥对保护信息进行加密后再发 送给甲方; 甲方再用自己保存的另一把私有密钥对加密后的信息进行解密。 同理, 甲方可以 用自己的私有密钥对保护信息进行加密后再发送给乙方, 乙方用甲方的公开密钥对加密后 的信息进行解密。 非对称加密算法的特点是算法强度复杂, 安全性依赖于算法, 但加解密速 度大于对称加密算法的速度。 所。

25、述非对称加密算法包括RSA、 ECC(移动设备用)、 Diffie- Hellman、 El Gamal、 DSA(数字签名用)等。 0075 签名用于鉴别身份, 且用于检验数据的完整性。 为了防止被恶意攻击和传输的数 据完整, 还需要对加密后的dex文件签名, 在接收到第一dex文件后, 需要先进行验签操作, 只有双方的签名匹配, 才可获取到所述第一dex文件中的该加密后的dex文件, 否则失败或 丢弃。 0076 上述加密运算可以有与运算、 或运算、 与或运算等, 根据用户需求进行设定。 本实 施例中, 所述加密运算较佳地为或运算, 更进一步提高保护力度。 说明书 4/6 页 6 CN 1。

26、12115430 A 6 0077 S30, 基于所述第一dex文件, 生成用于解密所述第一dex文件的解密程序。 0078 在本实施例中, 编译过程中, 需要将解密的逻辑一起编译到apk中, 而这个解密的 逻辑是在目标apk安装到终端如手机或电视等设备上运行时对加密的dex文件进行解密操 作的。 利用Android Studio开发工具编写用于解密所述加密后的dex文件的解密程序。 该解 密程序为native解密程序, 其位于本地层, 即native层。 为了进一步提高反编译破解难度, 提高安全性, 采用C/C+语言编写所述解密程序中的解密的逻辑。 0079 示例性地, 所述基于所述第一de。

27、x文件, 生成用于解密所述第一dex文件的解密程 序具体包括: 0080 S31, 确定用于解密所述第一dex文件的解密密钥; 0081 S32, 利用集成开发工具编译出解密程序, 其中, 所述解密程序配置有所述解密密 钥。 0082 S40、 对所述解密程序加密, 以得到第一解密程序。 0083 在本实施例中, 对该解密程序中的代码逻辑再次采用加密算法进行加密, 以更进 一步增加反编译难度, 降低被破解的概率。 具体实施时, 获取所述解密程序的代码逻辑; 利 用自定义gradle插件对该代码逻辑通过加密算法进行加密, 以得到第一解密程序。 该加密 算法同样可以是对称加密算法, 也可以是非对称。

28、加密算法, 本申请并不对加密算法限制。 0084 S50、 将所述解密程序与所述第一解密程序配置为so文件。 0085 在本实施例中, 所述so文件指的是Linux下的程序函数库,即编译好的可以供其他 程序使用的代码和数据, 为了使得目标apk能够被正常使用, 需要该目标apk包含对应的so 文件。 一般来讲, so文件称为共享库, 其依赖于开发平台, 无法单独运行使用。 0086 so文件使用方法有: 0087 (1)动态库的编译。 提供一头文件: so_test.h, 三个.c文件: test_a.c、 test_b.c、 test_c.c, 将这几个文件编译成一个动态库: libtest。

29、.so。 0088 例如: 0089 命令: $gcc test_a.c test_b.c test_c.c-fPIC-shared-o libtest.so不用该标 志外部程序无法连接, 其相当于一个可执行文件。 0090 (2)动态库的链接 0091 提供一个程序源文件test.c与动态库libtest.so链接生成执行文件test: 0092 例如: 0093 命令: $gcc test.c-L.-ltest-o test 0094 命令: $ldd test执行test, 可以看到它是如何调用动态库中的函数的。 0095 由于Java源文件编译出的dex文件被反编译的难度低于C/C+源。

30、文件编译出的so 文件被反编译的难度, 因此, 利用C语言或C+语言分别编译所述解密程序和所述第一解密 程序, 以得到so文件。 0096 S60、 将所述第一dex文件配置为apk的资源文件, 并与所述so文件得到目标apk。 0097 在本实施例中, 为了将加密后的dex文件隐藏, 以保护应用程序代码, 则将所述第 一dex文件配置为应用的assert资源文件, 与其他资源文件以及所述so文件一起打包, 得到 目标apk。 所述目标apk能够在终端如手机或电视等设备上运行执行。 0098 示例性地, 所述将所述第一dex文件配置为apk的资源文件, 并与所述so文件得到 说明书 5/6 页。

31、 7 CN 112115430 A 7 目标apk具体包括: 0099 S61, 将所述第一dex文件配置为apk的资源文件; 0100 S62, 将所述apk的资源文件以及所述so文件按照预设系统规则生成目标apk。 0101 基于上述apk的加固方法, 本申请还提供一种电子设备, 如图2所示, 电子设备1包 括处理器11以及与所述处理器11连接的存储器22, 图2仅示出了电子设备1的部分组件, 但 是应理解的是, 并不要求实施所有示出的组件, 可以替代的实施更多或者更少的组件。 0102 所述存储器22在一些实施例中可以是所述电子设备1的内部存储单元, 例如系统 100的内存。 所述存储器。

32、22在另一些实施例中也可以是所述系统100的外部存储设备, 例如 所述电子设备1上配备的插接式U盘, 智能存储卡(Smart Media Card,SMC), 安全数字 (Secure Digital,SD)卡, 闪存卡(Flash Card)等。 进一步地, 所述存储器22还可以既包括 所述电子设备1的内部存储单元也包括外部存储设备。 所述存储器22用于存储安装于所述 电子设备1的应用软件及各类数据, 例如所述apk的加固程序代码等。 所述存储器22还可以 用于暂时地存储已经输出或者将要输出的数据。 在一实施例中, 存储器22上存储有apk的加 固程序, 该apk的加固程序可被处理器11所执。

33、行, 从而实现本申请中apk的加固方法, 具体如 上述方法所述。 0103 所述处理器11在一些实施例中可以是一中央处理器(Central Processing Unit, CPU), 微处理器, 手机基带处理器或其他数据处理芯片, 用于运行所述存储器22中存储的程 序代码或处理数据, 例如执行所述apk的加固方法, 具体包括: 0104 对待加固源代码编译, 以得到dex文件; 0105 对所述dex文件加密, 以得到第一dex文件; 0106 基于所述第一dex文件, 生成用于解密所述第一dex文件的解密程序; 0107 对所述解密程序加密, 以得到第一解密程序; 0108 将所述解密程序。

34、与所述第一解密程序配置为so文件; 0109 将所述第一dex文件配置为apk的资源文件, 并与所述so文件得到目标apk; 具体如 上所述apk的加固方法中步骤。 0110 本领域技术人员在考虑说明书及实践这里公开的发明后, 将容易想到本发明的其 它实施方案。 本发明旨在涵盖本发明的任何变型、 用途或者适应性变化, 这些变型、 用途或 者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识 或惯用技术手段。 说明书和实施例仅被视为示例性的, 本发明的真正范围和精神由下面的 权利要求指出。 0111 应当理解的是, 本发明并不局限于上面已经描述并在附图中示出的精确结构, 并 且可以在不脱离其范围进行各种修改和改变。 本发明的范围仅由所附的权利要求来限制。 0112 以上所述仅为本发明的较佳实施例, 并不用以限制本发明, 凡在本发明的精神和 原则之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。 说明书 6/6 页 8 CN 112115430 A 8 图1 图2 说明书附图 1/1 页 9 CN 112115430 A 9 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1