先介绍5种android apk安全技术,其它后面补充
1、代码混淆
原理:本质就是改变类名、方法名,使代码可读性变差,进而保护代码
种类 | 混淆前 | 混淆后 |
---|---|---|
class | BookManager | a |
function | getName() | c() |
方式:通过 proguard 三方库,在proguard-rules.pro文件中设置改名规则,将gradle中minifyEnabled 设为true,打开混淆功能
注意事项:四大组件保留、jin要调用的方法保留、R文件
2、去除log
原理:停止log输出,进而防止敏感信息泄露
方式:
(1)自己包装log类,打包时自动屏蔽
(2)通过proguard 将系统Log类置为无效
注意事项:打开优化开关、添加去除log规则
3、对抗反编译
原理:让apk、dex文件无法通过反编译工具正常编译,导致工具异常崩溃等。常见反编译工具apkTool、baksmali、dex2jar、JEB等
4、对抗模拟器
原理:如果检测到运行在模拟器,自动退出
方式:
(1)检测模拟器上特有的几个文件
(2)检测模拟器默认的电话号码
(3)检测设备"IDS"是不是"000000000000000"
(4)检测imsi id是不是“310260000000000”
(5)检测手机上的一些硬件信息
(6)检测手机运营商家
5、对抗apk重打包
原理:apk重新大包后签名会改变
方法:检测现在的签名和原本的签名是否一致,不一致退出应用
2020-11-22