前言
最近上加了一个小小APK,因为政策和商店审核的原因需要做些安全方向的检测防护。
看了很多相关的资料做个笔记整理。
总结下来就是能够防小白和脚本小子就行了,反正高手你也防不住。
对于高手,能够让他们感到时间成本不足以去做这个分析的时候,你就已经成功了。
当你失去分析价值的时候,你就是最安全的软件。
如何让我们的软件更安全
- 避免动态分析,让软件处于安全的环境
- 避免静态分析,让软件源码无法轻易获取和分析
常用常见的环境检测方法
anti unidbg 反模拟执行
模拟执行是时下流行的算法分析方式 得益于unicorn和unidbg的开源贡献,现在已经人手可以进行算法模拟执行了。
优点就是分析速度快而且无需还原整个算法即可执行调用。
如果你现在还不会,建议找龙哥深入了解一下。
龙哥就是龙。
如果你想恶心一下unidbg的使用者,可以从一些方面入手。
关于unidbg的问题可以去项目的issue下参看一下没有完善的部分。
本身有些特征,比如map的起始地址为
unidbg对多线程的支持没有完善,因此做一些多线程的操作会让unidbg出故障。
毕竟是模拟的环境,需要补充环境来完善整个系统环境。
如果针对这些环境做大量调用,使其在补环境环境变得异常棘手,让他感觉无穷无尽的方法需要补。
尤其是一些没有现成库的方法需要实现
因为模拟执行往往不会去执行ui上的操作,直接访问数据加密缺失一个流程。
加上一个固定的流程校验可以避免直接调用。同样的可以针对rpc调用。
这里我们可以结合后面的操作,链接一下flutter的so文件并使用。
具体的代码实现
(AntiUnidbg)[https://github.com/ZhaoXiangLu0e/AntiUnidbg]
anti rebuild 反重打包
anti debug 反调试
anti frida 反frida调试
anti magisk 反面具
anti emulator 反模拟器
anti root 反root
anti lsp/xp 反xposed
anti hook 反hook
anti 反反编译器
anti 调用模拟执行2 (蜜罐-假若真时真亦假)
anti rpc 反rpc调用
anti dexdump 反脱壳机
anti multiApp 反多开
其他安全加强手法
魔改标准加密算法
dex混淆
字符串加密
apk加壳加固
ollvm混淆
使用混合语言或者框架
参考
更多【慢更新-小黄鸭安全开发之旅(如何让我们的APK软件更安全)】相关视频教程:www.yxfzedu.com