安全开发
- 网络
- 添加必要的请求值以应对爬取问题。网络请求时
token
和sign
校验,建议在请求头中做 - 使用 socket 传输(难度高),或使用 https 协议(不建议使用自定义证书,防止证书过期导致应用无法使用)
- 防抓包。中间人代理,xposed,HttpCanary
- 添加必要的请求值以应对爬取问题。网络请求时
- 反调试,ptrace,父进程附加自身让其他进程无法附上,达到无法调试的目的
- 混淆
- proguard 混淆。压缩代码,增加反编译阅读难度
- so 混淆。花指令,OLLVM 混淆
运行环境检测
- 反调试,TracerPid,进程被调试时 TracePid 的值 Pid 会发生变化,检测 TracerPid 的值,如果不为0,说明正在被调试注入进程
- 反调试,调试器检测
- ida 的默认端口是23946,检测端口是否被占用来确认是否是调试状态
- 检测在中手机中运行
android_server
,gdbserver
,gdb
等进程 - 检测 frida
- 反调试,root,判断当前设备权限
- 模拟器,模拟器检测
- 应用多开
加固
- 防止篡改,二次打包
- dex 加固
- so 加固
业务场景
- 接口直刷
- 自动辅助插件
风险用户判断
- 基于特定业务场景,用户轨迹等多方位判断