Android APP 加固思路 1.源码保护 1.1 Dex文件保护 对源文件使用加壳技术实现Dex文件保护,即隐藏原本的Dex文件,然后生成一个Dex壳文件放到APK中 1.2 防二次打包 在应用程序内加入代码验证自我的签名是否被篡改。常用验证策略:1.Java层签名验证,2.服务器验证(在Android的Java层获取签名信息,上传服务器在服务端进行签名然后返回验证结果),3.NDK技术底层获取签名和验证,4.自定义指纹验证 1.3 so文件保护 (1).对ELF文件加壳,(2).对Android系统中so文件的加载、调用机制做处理 1.4 资源文件保护 (1)对APK中资源文件名使用简短无意义名称进行替换 (2)修改resources.arsc DataType数据类型来促使apktool无法直接反编译资源文件 2.应用加密 2.1 Log日志输出屏蔽 通过配置proguard,将类android.util.Log的方法置为为无效代码。 2.2 清场技术 依赖于云端的黑白名单库,检测手机运行环境,发现异常则停止运行并提示用户 3.数据安全 3.1 页面防劫持 在所有Activity的onPause()方法中,弹出提示用户的警告,延迟1-2秒执行;在所有Activity的onResume()方法中,取消在onPause中的提示 3.2 本地数据保护 (1)将文件放在尽量安全的位置,比如内部存储而不是sd卡。(2)对文件内容使用对称加密或基于口令的加密。(3)对于数据库可用相关工具加密比如SQLCiper。(4)使用Android设备管理策略。(5)使用加密的SharePreference即Secure-Preferences # 3.3 截屏保护 (1)可以使用Hook技术监控截屏相关函数的调用。 (2)可以在界面中添加代码防止页面截屏。 3.4 内存数据防查询 对当前进程的so进行排查,存在非本包名下的so即认为被注入了。当然,如果是存在合作伙伴的so,也可以加入白名单机制。 3.5 协议加密 使用TLS 蓝牙端可使用的SDK http://www.btsdk.com/develop/index.html 推荐使用加固方案:通付盾、 梆梆安全、爱加密、阿里聚、360。