首页
社区
课程
招聘
[原创]Frida Objection 定位发包函数
2024-1-4 10:56 7380

[原创]Frida Objection 定位发包函数

2024-1-4 10:56
7380

Frida定位发包函数

这里以移动TV(版本为12.2) moveTV.apk 这个APP为例

1)切换到 ~/.objection 目录下,删除旧的objection.log,然后按下图启动APP,并使用objection附加到APP进程,运行一下命令获取APP已加载的所有类

1
2
objection -g com.cz.babySister explore  //启动APP
android hooking list classes  //Hook所有类

image

2)在加载所有类后,使用exit命令退出objection,为了之后运行所产生的日志不再继续影响本次产生的日志,需将objection.log进行重命名,并保存

1
mv ~/.objection/objection.log ~/objection_moveTV.log

3)使用cat​命令和grep​管道符过滤出HttpURLConnection​和okhttp(3)​相关类

image

4)使用>​符号,将上面过滤出来的类重定向到txt文件中,然后通过文本编辑器快速输入多行相同的数据来补全每一行中objection命令。以vscode为例,通过win系统 Alt + Shift +鼠标​ MAC系统 option + shift + 鼠标​的方式对每一行行首进行全选并输入以下命令

1
android hooking watch class

image​​​​​​​

5)使用以下命令,将objection附加到APP上,并自动执行文件中的所有命令。由于Hook过多类可能导致APP崩溃,这时将文本中的类分批Hook分批测试就可以了

1
objection -g com.cz.babySister explore -c "/Users/angel/1.txt"

​​image​​

6)将所有类Hook之后,便可以在手机上对APP进行操作,这里主要想抓到登录时的网络通信数据,所有在登录框中输入用户名和密码后点击“确定”按钮。如果objection的界面中没有任何函数被调用,说明实际发包函数并没有使用对应的框架,这是应当更换包含Hook命令的文本文件,继续通过-c​参数执行文件中所有Hook命令,如果在objection的界面上看到一堆函数被调用,则说明框架类型确认成功。

注意:这里虽然有一堆okhttp相关字眼,但并不是使用okhttp3网络框架,而是因为httpURLconnection这个原生库底层使用的是okhttp,与okhttp3第三方网络框架不是一个概念

图片描述

image

7)退出objection重新进入,对Hook到的方法进一步Hook,例如选择com.android.okhttp.HttpHandler.openConnection​ 函数进一步Hook。通过传参为URL,调用关键词HttpClient 猜测发包函数可能是 ​com.cz.babySister.c.a.a(HttpClients.java:22)

image

8)退出objection重新进入,对判断的函数进一步Hook,发现URL和用户名密码都清晰可见

image


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2024-2-2 10:16 被Alvinlight编辑 ,原因:
收藏
点赞5
打赏
分享
最新回复 (9)
雪    币: 275
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Damn7Kx 2024-1-4 11:27
2
0
Objection定位发包函数
雪    币: 262
活跃值: (306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Alvinlight 2024-1-4 11:41
3
0
Damn7Kx Objection定位发包函数[em_86]
有什么问题吗,都是Frida大类的,便于搜索
雪    币: 275
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Damn7Kx 2024-1-4 13:02
4
0
Alvinlight 有什么问题吗,都是Frida大类的,便于搜索
没问题
雪    币: 19349
活跃值: (28971)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2024-1-4 13:41
5
1
感谢分享
雪    币: 216
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
小木马 2024-1-5 16:51
6
0
直接抓包就行了,再分析请求中参数怎么生成的,一般不用去分析是哪个是发包函数
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_rgfytsxo 2024-1-6 14:42
7
0
objection一启动马上报错,这种怎么弄
    raise result.error
frida.core.RPCException: TypeError: cannot read property 'getApplicationContext' of null
    at getApplicationContext (/script1.js:19169)
    at <anonymous> (/script1.js:19801)
    at <anonymous> (/script1.js:19157)
    at <anonymous> (frida/node_modules/frida-java-bridge/lib/vm.js:12)
    at _performPendingVmOps (frida/node_modules/frida-java-bridge/index.js:250)
    at <anonymous> (frida/node_modules/frida-java-bridge/index.js:242)
    at apply (native)
    at ne (frida/node_modules/frida-java-bridge/lib/class-factory.js:673)
    at <anonymous> (frida/node_modules/frida-java-bridge/lib/class-factory.js:651)
Asking jobs to stop...
Unloading objection agent...
雪    币: 262
活跃值: (306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Alvinlight 2024-2-2 10:14
8
0
mb_rgfytsxo objection一启动马上报错,这种怎么弄 raise result.error frida.core.RPCException: TypeError: cannot read prop ...
这个可能是objection和Frida版本不兼容,百度一下,找一个相互兼容的版本应该就可以了
雪    币: 3671
活跃值: (3848)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
caolinkai 2024-2-3 16:32
9
0
感谢分享
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_bkkdeflr 2024-2-23 21:06
10
0
感谢分享
游客
登录 | 注册 方可回帖
返回