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。