2

[分享]一个Native层的Android应用防护库

 2 years ago
source link: https://bbs.pediy.com/thread-271302.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

[分享]一个Native层的Android应用防护库-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com

[分享]一个Native层的Android应用防护库
2022-1-26 22:01 3364

前几个月自己的应用被破解了,作为安全小白在看雪努力学习了一段时间,搞了一个Native层的Android应用防护库,不知道有没有实用价值,大佬轻拍。

https://github.com/uestccokey/EZProtect

具有一些比较孱弱的检测功能

1.检测是否被动态调试
有经验的破解者通常会通过IDA等工具来动态调试So,以过掉So库中的检测功能,因此首先需要对动态调试进行拦截,通常采用
1.通过ptrace自添加防止被调试器挂载来反调试
2.通过系统提供的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包的文件信息用于服务器校验

目标是能防住纯新手小白,哈哈

【公告】欢迎大家踊跃尝试高研班11月试题,挑战自己的极限!

最后于 2022-1-26 22:13 被uestccokey编辑 ,原因:

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK