apk加固了解 apk加固是什么意思


转载本文需注明出处:微信公众号EAWorld , 违者必究 。
引言: 在安卓开发中 , 打包发布是开发的最后一个环节 , apk是整个项目的源码和资源的结合体;对于懂点反编译原理的人可以轻松编译出apk的源码资源 , 并且可以修改资源代码、重新打包编译 , 轻轻松松变成自己的apk或者修改其中一部分窃取用户信息 。
代码被反编译对于apk的开发者和使用者而言十分苦恼 。apk加固、防止反编译此时显得尤为重要 。虽然有好多给apk加固的第三方 , 可能并不需要自己做apk加固 , 但是了解apk加固原理还是很有必要的 。本文主要向大家介绍apk加固原理和简单实现 。
目录: 一、apk常见加固方式
二、apk加固原理
三、apk加固实现
四、apk该方式加固后缺陷
一、apk常见加固方式 (1)代码层级加密–代码混淆
代码混淆是一种常用的加密方式 。本质是把工程中原来的有具体含义的类名、变量名、方法名 , 修改成让人看不懂的名字 。常见的代码混淆工具proguard(有兴趣的可以自己看一下该工具:http://t.cn/ELjgHdi) 。该加密方式只是对工程提供了最小的保护 , 并不是说不能逆向破解;只是说难度增加 , 需要耐心 。
(2) Dex文件加密
dex是Android工程中的代码资源文件 , 通过dex可以反编译出java代码 。dex的加壳是常见的加密方式 。通过对dex文件加密拼接加壳 , 可以有效的对工程代码进行保护 。apk工程在安装成功后 , app启动时会有dex解密的过程 , 然后重新加载解密后的dex文件 。

第二种加密方式也就是本文要为大家分享的加密方式 。基本原理是在jni层 , 使用DexClassLoader动态加载技术完成对加密classex.dex的动态加载 , dex文件可以附属在assert或raw目录 。
二、apk加固原理 (1)apk文件结构
解压一个apk包 , 可以看到如下目录结构:
assets:存放工程资源(图片、本地html等)文件的目录
Lib:存放ndk编译出来的so文件(so:C/C编译出的文件)
me

    推荐阅读