app上架国内应用商城合规检测、隐私合规检测
1.工具准备
-
camile代码(python)
git clone https://github.com/zhengjim/camille.git
-
模拟器(夜神模拟器/Mumu模拟器)
mumu模擬器:127.0.0.1:7555 夜神模擬器:127.0.0.1:62001
-
Frida
Firda 是一款易用的跨平 Hook 工具, Java 层到 Native 层的 Hook 无所不能,是一种 动态 的插桩工具,可以插入代码到原生 App 的内存空间中,动态的去监视和修改行为,原生平台包括 Win、Mac、Linux、Android、iOS 全平台。
下载地址:https://github.com/frida/frida/releases
直接搜索“server”,寻找对应的版本就可以啦(具体需要的版本可以看后面的内容)。
注意:
这个地方需要下载的版本,需要和模拟器的版本相互对应(主要是系统的位数)。
如果和我使用的是相同版本的夜神模拟器,我们应该是一致的。
如何查看设备(模拟器)的系统位数:
(1)连接模拟器:adb connect 127.0.0.1:7555 (mumu模拟器) (2)adb shell (3)getprop ro.product.cpu.abi 显示X86_64,就需要下载相应的frida (4)把frida上传到模拟器的某个路径:adb push frida-server-16.0.1-android-x86_64 /data/local/tmp
要找server-XXXX-android的
2.开始检测
-
adb连接模拟器
adb connect 127.0.0.1:7555
-
启动frida
PS C:\Users\msid> adb root PS C:\Users\msid> adb shell Welcome! If you need help getting started, check out our developer FAQ page at: https://g.126.fm/04jewvw We're committed to making our emulator as useful as possible for developers, so if you have any specific requirements or features that you'd like to see in the emulator, please let us know. We're always open to new ideas and suggestions. You can find our contact information on the FAQ page as well. Thanks for using our emulator, happy coding! 2206123SC:/ # cd /data/local/tmp 2206123SC:/data/local/tmp # chmod +x frida-server-16.2.1-android-x86_64 2206123SC:/data/local/tmp # ./frida-server-16.2.1-android-x86_64
-
启动python脚本
python路径 + camille.py路径 + 应用包名c:/VSCWorkspace/.venv/Scripts/python.exe c:/VSCWorkspace/camille-master/camille.py 应用包名
(后面跟的是应用包名,前提是得把应用安装到模拟器)
选择mumu模拟器1
如下图片,开始检测,然后发现有很多堆栈,这是获取了ip地址,可以根据堆栈信息定位到代码,然后解决。
3.补充
前提是需要准备adb环境、python环境,作为开发人员,应当必须有这两个环境,因此不多赘述。
参考链接:https://github.com/summerCndidnufihd/camile-master/tree/master
4.举例
1.未经用户同意隐私政策,获取电话相关信息、行为主体:华为HMS、行为描述:获取SIM卡国家信息
查看堆栈信息,一步一步一个函数得往前找,知道找到有你的Activity或者类,定位到相关代码,如上图,我定位的代码就是,
HMSSDK使用的时候没有经过用户同意隐私政策就初始化了,即执行onResume()方法,里面调用了getNetworkOperatorForPhone()方法,因此会检测到。
解决办法:在这一行初始化代码之前判断用户是否同意了隐私政策,否则直接return,不初始化。
2.未经用户同意,提前打开摄像头,华为统一扫码SDK(Android版),华为SDK
这里找不到之前的堆栈信息了,我记得也是因为这里的原因。
还有一种情况请参考这个链接:https://zhuanlan.zhihu.com/p/696223375
3.获取设备传感器
定位到
在前面判断用户是否同意了隐私政策
哦哦,忘记说了一点,代码要关闭混淆,不然堆栈信息看不到相关代码。基本上大部分问题按照这样的方法去做,都可以解决。