frida with camille - fancyfsz/FancyWiki GitHub Wiki

应用在中国市场的market store(比如华为、小米商城等)进行审核时,通常会检测:用户在同意Privacy(隐私协议)前不能收集用户信息。如果有违反的情况,则一律拒审。 对于Unity开发的应用来说,通常会收到如下的一个被拒堆栈信息:

at android.provider.Settings$Secure.getStringForUser(Settings.java:5282)
at android.provider.Settings$Secure.getString(Settings.java:5275)
at com.unity3d.player.UnityPlayer.nativeRender(null:-2)
at com.unity3d.player.UnityPlayer.c(null:0)
at com.unity3d.player.UnityPlayer$e$1.handleMessage(null:95)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:214)
at com.unity3d.player.UnityPlayer$e.run(null:20)

代表着在用户未授权前就收集了android id信息。 开发者可以排查以下几个方面:

1.主动的代码调用

比如java层的

Settings.Secure.getString(
                activity.getApplicationContext().getContentResolver(),
                Settings.Secure.ANDROID_ID);

比如c#层的

SystemInfo.deviceUniqueIdentifier

2.接入的第三方SDK、插件等,比如Bugly的初始化最好放在接受隐私协议之后。

3.Unity Analytics的配置,对应配置文件UnityConnectSetttings.asset

需要把里面所有m_Enabled: 1 都改为 m_Enabled: 0

子开关里面任一为m_Enabled: 1 都会导致总开关在打包时自动变成m_Enabled: 1,因此要特别注意

作为开发者,肯定不能依赖于每次修改完直接送审去检测是否还有问题,因此搭建一个自检环境是很有必要的事情。

以下已Windows系统+MuMu模拟器为开发环境为例,详解如何搭建自检环境

  1. 配置python3

    python官网下载并安装对应的版本即可,在安装界面勾选上Add Python to PATH(好处是勾上会自动配置环境变量,就无需我们手动配置了)

  2. 使用pip安装frida和frida-tools

    pip install frida
    
    pip install frida-tools
    

    使用pip list检查已安装的package的version

    pip list | find "frida"
    
  3. 安装frida-server

    点击frida-server-15.2.2-android-x86_64.xz进行下载(15.2.2是版本号,需要选择和前面安装的frida一致的版本,x86_64是模拟器的架构(在模拟器的设置界面查看))

    adb connect 127.0.0.1:7555
    adb devices
    adb push 你的frida-server文件 /data/local/tmp
    su
    cd /data/local/tmp
    chmod +x 你的frida-server文件
    ./你的frida-server文件
    

    以上frida的环境就搭建完毕了。如果输入su的时候报错找不到该命令,说明模拟器的root权限没有打开, 在模拟器的设置里面去开启即可。

  4. camille安装

    git clone 完工程后,进入工程根目录

    python camille.py com.test.demo(这里填你要测试的App的bundle id)
    

    可能会有一些报错,都是跟python脚本要用的库没有安装导致。

    比如ModuleNotFoundError:No module named 'cv2'

    解决安装cv2

    pip install opencv-python