近期,听闻公安又对公司的一款游戏包,说存在隐私整改问题了,还没有拿到报告,领导先让我分析一下我们apk包有那些涉及隐私的问题,因为联运游戏包涉及的个体比较多,有游戏开发队,还有渠道SDK,和我们自己的SDK,所以定位起来就比较麻烦,也是在网上搜了一些资料,发现VIVO和小米的云测平台是提供免费的隐私检测服务的,也是用了一下,小米的,包体上传有些慢,而且测试机型加载不出来,无法选择,就放弃了。

贴:

小米隐私合规检测平台

android 如何查看堆栈方法 手机app堆栈_python

然后去看了vivo了,上传包体,等待一段时间,就可以拿到报告了。

贴:vivo云测平台

android 如何查看堆栈方法 手机app堆栈_android_02

 报告内容有提到,风险项,但是没有堆栈信息,无法定位到代码,属于那一端的问题,于是,又开始找寻能输出堆栈的方案,在参考了罗大佬的Android-APP隐私合规检测_app隐私合规检测工具_罗圣修的博客

后,便开始自己搭建环境,运行脚本。把整个步骤记录一下:

1:查询手机CPU-架构

我本地是有adb环境的,因此先查询了手机的cpu架构,方便下载对应版本的frida。

    win+R 输入cmd,进入命令行,输入:

adb shell

getprop ro.product.cpu.abi

android 如何查看堆栈方法 手机app堆栈_堆栈_03

 2:下载frida-server(移动端)

先简单说明一下这是个什么东西:根据官方描述,意思大概是一个注入框架,可以追踪API的代码,支持Andorid,IOS,Windos等,是用Python和Js实现的。接着我又百度百科了一些资料,参考大佬的理解,其实就和Xpose是一个东西,逆向框架,只不过Xpose是Java实现的,只能hook安卓,当然Xpose我还没用过,就不阐述了。~~~

android 如何查看堆栈方法 手机app堆栈_堆栈_04

根据第一步我们查询的cpu架构,我们下载这个……OK

android 如何查看堆栈方法 手机app堆栈_堆栈_05

附下载地址: Releases · frida/frida · GitHub

3:安装camille

一样,先简单说说camille是个什么东西……在一顿操作以后,也是大概知道……

android 如何查看堆栈方法 手机app堆栈_堆栈_06

 oh no  ^_^ 它不是一个歌手,是一位叫zhengjim大佬写的隐私合规检测辅助工具,昂,对!

它是python实现的,同样我们先把它拉到本地。

git clone https://github.com/zhengjim/camille.git
cd camille
pip install -r requirements.txt
python camille.py -h

然后安装:

android 如何查看堆栈方法 手机app堆栈_android 如何查看堆栈方法_07

注意:这里确保本地安装好了python3,pip工具。

附下载地址:GitHub - zhengjim/camille: 基于Frida的Android App隐私合规检测辅助工具 

4:具体实现

环境到这里,就已经万事俱备了,现在我们看看准备的工具有那些吧,

android 如何查看堆栈方法 手机app堆栈_android 如何查看堆栈方法_08

于是,我怀着激动的心情,现在开始跑脚本!!!

4.1:frida 推送到手机

#推送
adb push frida-server-16.0.17-android-arm64 /data/local/tmp/frida-server-16.0.17-android-arm64
#查看
adb shell
cd data/local/tmp
ls
#运行
./frida-server-16.0.17-android-arm64

android 如何查看堆栈方法 手机app堆栈_python_09

哎呀,照着大佬的步骤,怎么说没有权限呀,原来查看frida的文档,就有说明,支持root的手机,根据adb shell打印的信息,原来我们的测试机没有root。

如何区分手机root,我也标准了一下,用adb shell, 如果是$,是没root权限的,如果是#,则说明设备已root。

android 如何查看堆栈方法 手机app堆栈_android_10

android 如何查看堆栈方法 手机app堆栈_android 如何查看堆栈方法_11

因为公司的测试机,不方便root,于是我使用了雷电模拟器,来再次运行frida。运行结果如下:

android 如何查看堆栈方法 手机app堆栈_android 如何查看堆栈方法_12

 注:因模拟器cpu架构是x86,于是我重新去官方下载了一个x86的frida.这一步完成后,不要关闭cmd,重新打开一个窗口,运行camile.

4.2:运行camile脚本

python camille.py 包名  -f demo.xls

android 如何查看堆栈方法 手机app堆栈_android_13

 又报错了:“frida-server没有运行/frida-server与frida版本不一致,请排查”,于是,我打开camille.py,开始排查,除了print(报错信息),也没有和版本相关的代码呀……头疼,好在,我看项目目录比较仔细,原来项目里附赠了大佬的联系方式,我加上大佬VX,开始沟通……

原来是我电脑没有frida-server这个服务,

pip install frida

注意:PC端的frida和移动端的版本要一致。

android 如何查看堆栈方法 手机app堆栈_堆栈_14

再次运行,结果图如下

android 如何查看堆栈方法 手机app堆栈_堆栈_15

不会吧,到这里就结束了吗?不对啊,我还没有操作隐私协议啊…… 于是我又在交流群里,向大佬们请教……

原来是脚本获取的窗口,白屏,需要加延时操作,于是更改源码camille/utils/simulate_click.py

android 如何查看堆栈方法 手机app堆栈_android 如何查看堆栈方法_16

好了,现在在ANDROID PHONE 窗口有了画面,不在白屏。

同意隐私协议,开始打印堆栈,直到流程结束,一定要记得按ctrl+c结束,这样才会生成demo.xls文件哦。

android 如何查看堆栈方法 手机app堆栈_android 如何查看堆栈方法_17

然后打开demo.xls,又是一片新的天空~~ 

android 如何查看堆栈方法 手机app堆栈_python_18

 5:总结

经过整套apk包的隐私信息堆栈分析流程,我只能说我跪了,谢谢大佬们的解惑,和前辈们的资料。666