安装frida 12.8.0全家桶
1 | pip install frida==12.8.0 |
frida切换端口
1 | ./frida-server-12.8.10-android-arm64 -v -l 0.0.0.0:9999 |
根据端口连接
1 | frida -H 192.168.137.148:9999 -F |
查看进程端口
1 | netstat -tuulp |grep fs |
objection通过端口连接
1 | objection -N -h 192.168.137.148 -p 9999 -g com.android.settings explore |
列出所有的类
1 | android hooking list classes |
在手机上启动frida-server
,并且点击启动“设置”图标,手机进入设置的界面,首先查看一下“设置”应用的包名
1 | # frida-ps -U|grep -i setting |
再使用objection
注入“设置”应用。
1 | # objection -g com.android.settings explore |
- 查看内存中加载的库
运行命令memory list modules
,
- 查看库的导出函数
运行命令memory list exports libssl.so
- 将结果保存到
json
文件中
当结果太多,终端无法全部显示的时候,可以将结果导出到文件中,然后使用其他软件查看内容
1 | # memory list exports libart.so --json /root/libart.json |
批量Hook
1 | objection -g 包名 explore -c "path" |
搜索文件下含有关键字
1 | grep -ril "okhttp3" * |
第二种 使用无线WiFi连接
首先先了解一点底层的知识:
Android系统底层运行着一个服务(adbd),用于响应和管理大家在电脑端的adb命令连接,这个服务在启动时会根据手机的配置监听USB连接或网络其中之一。配置的属性为:service.adb.tcp.port,也就是监听的网络端口
•以上属性的值 > 0:adbd将监听网络对应的端口(一般为5555)
•以上属性的值 <=-1:adbd将监听USB
接下来是连接步骤:
命令行输入:adb connect (ip):5555
提示:unable to connect to (ip):5555
解决办法:
1)手机与PC相连,执行以下命令:adb tcpip 5555
成功提示:restarting in TCP mode port 5555
然后断开USB
错误提示:error:device not found
查看手机USB调试是否打开;PC端是否安装手机驱动。
2)接着执行adb connect (ip):5555,这时候应该就能连接成功了
成功提示:connected to (ip):5555
调试完成之后,输入如下的命令断开连接:
adb disconnect (ip):5555
列出所有activity
1 | android hooking list activities |
跳到某一个activuty界面
1 | android intent launch_activity ***Activity |
列出所有services
1 | android hooking list services |
从内存中搜索实例类
1 | android heap search instances *** |
搜索到类的方法是否存在
1 | android heap execute 类的地址值 方法名 |
查看实例类的地址
1 | plugin wallbreaker objectsearch **** |
根据地址查看该类属性
1 | plugin wallbreaker objectdump **** |
启动app并执行
1 | objection -g 包名 explore --startup-command "android hooking watch ... --dump-args --dump-backtrace --dump-return" |
1 | objection -g 包名 explore -s "android hooking watch ... --dump-args --dump-backtrace --dump-return" |
如何使用objection去批量hook和trace?比如一次性hook几千个类?
- 把~/.objection/objection.log删掉;
- 到objection界面中运行android hooking list classes,列出所有的类;
- 对新生成的~/.objection/objection.log文件进行过滤,比如只关心http相关的。cat objection.log|grep -i http
- 将输出结果保存到一个excel列中,前面补全android hooking watch class xxxxx,另存为文本文件。如附件所示
- 加载这个文件:objection -g com.android.settings explore -c “2.txt” ,这样一下子就hook上了几千个相关类的所有方法及其所有重载。
- 如果trace感兴趣的方法也是同理,android hooking search methods * ,会打印出所有的方法。
安装objection插件
安装FRIDA_DEXDump
1 | git clone https://github.com/hluwa/FRIDA-DEXDump ~/Downloads/FRIDA-DEXDump; |
把frida_dexdumpp移到/root/.objection/plugins/下
1 | mv /root/Downloads/FRIDA-DEXDump/frida_dexdump /root/.objection/plugins/ |
使用方法
1 | objection -g com.app.name explore -P ~/.objection/plugins |
https://github.com/hluwa/FRIDA-DEXDump
安装Wallbreaker
1 | git clone https://github.com/hluwa/Wallbreaker ~/.objection/plugins/Wallbreaker |
https://github.com/hluwa/Wallbreaker
wallbreaker
导入(win下)
1 | plugin load .objection/plugins/Wallbreaker |
查看类的结构
1 | plugin wallbreaker classdump *** |
根据名字找类
1 | plugin wallbreaker classsearch *** |
查看类的实例的内容
1 | plugin wallbreaker objectdump --fullname *** |
找出类的实例
1 | plugin wallbreaker objectsearch *** |