该环境是在python3.7下;安卓系统为6.0
Firda 安装
pip install frida
如果指定版本: pip install frida==14.0.0
Firda-tools安装
frida-tools的安装需要与frida版本匹配;我这里不匹配手机会重启;具体查看方法:点击进入Git地址 frida查看版本 根据版本找到对应的tools。我这里使用的是tools为9.0.0;
pip install frida-tools
如果指定版本: pip install frida-tools==9.0.0
frida-server安装
首先手机连好电脑,adb执行命令查看手机架构
adb shell getprop ro.product.cpu.abi
例如型号为 arm64-v8a
,则下载 frida-server-14.0.0-android-arm64.xz 解压,将解压文件传至 /data/local/tmp/
目录下
adb push frida-xxxx /data/local/tmp/frida1400
之后进入目录给权限 执行
$: adb shell
$: su
$: chmod 777 /data/local/tmp/frida1400
$: ./data/local/tmp/frida1400
cmd窗口执行端口转发:
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
检查是否执行成功:frida-ps -U
Objection 安装
进入Git地址,找到对应版本,之后执行pip install =Objection==1.10.0
以下收集Objection部分命令:
- 执行命令注入Objection:
objection -d -g 包名 explore
- 查看内存中加载的库(so文件):
memory list modules
- 查看库导出函数:
memory list exports xxx.so
- 查看内存中的class、services或Activites:
android hooking list class/services/activities
- 根据包含的关键词搜索类:
android hooking search classes naver
- 内存中搜索方法:
android hooking search methods methodName
- 当搜索到了比较关心的类之后,就可以直接查看它有哪些方法:
android hooking list class_methods 完整的类名
- 利用Objection直接生成Hookd代码:
android hooking generate simple 完整的类目
- 动态监听类,然后让其自吐:
android hooking watch class
之后执行jobs list
- hook方法的参数、返回值和调用栈
android hooking watch class_method 完整的包名.类名 --dump-args --dump-return --dump-backtrace
- 在hook某些app时,需要在启动时就hook,为了避免错过hook时机,采用附加模式,在objection 启动时就注入app
objection -d -g 包名 explore --startup-command "android hooking watch 完整的类名"