Frida定位发包函数
这里以移动TV(版本为12.2) moveTV.apk 这个APP为例
1)切换到 ~/.objection 目录下,删除旧的objection.log,然后按下图启动APP,并使用objection附加到APP进程,运行一下命令获取APP已加载的所有类
1 2 | objection -g com.cz.babySister explore //启动APPandroid hooking list classes //Hook所有类 |
?
?
2)在加载所有类后,使用exit命令退出objection,为了之后运行所产生的日志不再继续影响本次产生的日志,需将objection.log进行重命名,并保存
1 | mv ~/.objection/objection.log ~/objection_moveTV.log |
3)使用cat?命令和grep?管道符过滤出HttpURLConnection?和okhttp(3)?相关类
?
?
4)使用>?符号,将上面过滤出来的类重定向到txt文件中,然后通过文本编辑器快速输入多行相同的数据来补全每一行中objection命令。以vscode为例,通过win系统 Alt + Shift +鼠标? MAC系统 option + shift + 鼠标?的方式对每一行行首进行全选并输入以下命令
1 | android hooking watch class |
?
???????
5)使用以下命令,将objection附加到APP上,并自动执行文件中的所有命令。由于Hook过多类可能导致APP崩溃,这时将文本中的类分批Hook分批测试就可以了
1 | objection -g com.cz.babySister explore -c "/Users/angel/1.txt" |
??
??
6)将所有类Hook之后,便可以在手机上对APP进行操作,这里主要想抓到登录时的网络通信数据,所有在登录框中输入用户名和密码后点击“确定”按钮。如果objection的界面中没有任何函数被调用,说明实际发包函数并没有使用对应的框架,这是应当更换包含Hook命令的文本文件,继续通过-c?参数执行文件中所有Hook命令,如果在objection的界面上看到一堆函数被调用,则说明框架类型确认成功。
注意:这里虽然有一堆okhttp相关字眼,但并不是使用okhttp3网络框架,而是因为httpURLconnection这个原生库底层使用的是okhttp,与okhttp3第三方网络框架不是一个概念

?
?
7)退出objection重新进入,对Hook到的方法进一步Hook,例如选择com.android.okhttp.HttpHandler.openConnection? 函数进一步Hook。通过传参为URL,调用关键词HttpClient 猜测发包函数可能是 ?com.cz.babySister.c.a.a(HttpClients.java:22)?
?
?
8)退出objection重新进入,对判断的函数进一步Hook,发现URL和用户名密码都清晰可见
?
?
?