-
-
[分享]一个Native层的Android应用防护库
-
发表于:
2022-1-26 22:01
30213
-
[分享]一个Native层的Android应用防护库
前几个月自己的应用被破解了,作为安全小白在看雪努力学习了一段时间,搞了一个Native层的Android应用防护库,不知道有没有实用价值,大佬轻拍。
https://github.com/uestccokey/EZProtect
具有一些比较孱弱的检测功能
1.检测是否被动态调试
有经验的破解者通常会通过IDA等工具来动态调试So,以过掉So库中的检测功能,因此首先需要对动态调试进行拦截,通常采用
1.通过ptrace自添加防止被调试器挂载来反调试
2.通过检查TracePid!=0来进行判断
3.通过系统提供的Debug.isDebuggerConnected()方法来进行判断
2.检测APK的签名
非常基础的检测手段,因为容易被一键破解,因此需要配合其他手段防御
3.检测APK的包名
判断opendir("/data/data/CORRECT_PACKAGE_NAME")是否等于nullptr,如果没有指定私有目录的访问权限,说明不是正确的包名
4.检测是否被Xposed等框架注入
检测"/proc/self/maps"目录下的文件,如果出现包含xposed、substrate、frida等名称的文件,说明有框架正在注入
5.检测PMS是否被Hook
通过检测PMS是否继承Proxy类可以知道是否已被Hook
6.检测Application的className属性
大部分工具都会通过修改入口Application类,并在修改后的Application类中添加各种破解代码来实现去签名校验,它们常常费了很大的劲比如Hook了PMS,同时为了防止你读取原包做文件完整性校验可能还进行了IO重定向,但偏偏忽视了对Application类名的隐藏,经测试该检测可以防御大部分工具的一键破解
7.检测Application的allowBackup属性
正常情况下应该为false,如果检测到为true,说明应用被Hook了,破解者正在尝试导出应用私有信息
8.检测应用版本号
破解者为了防止应用更新导致破解失效,通常会修改此versionCode,因此需要进行检测
9.检测Native与Java层获取到的APK的文件路径或者大小
因为pm命令获取到的APK文件路径通常不容易被修改,这里与通过JavaApi获取到的APK文件路径做比较,如果文件路径或者文件大小不一致时,大概率是应用被IO重定向了,或者使用了VirtualXposed等分身软件
10.Apk和So文件完整性校验
可以获取到当前APK文件和此加密So包的文件信息用于服务器校验
目标是能防住纯新手小白,哈哈
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2022-4-28 08:45
被uestccokey编辑
,原因: