首页
社区
课程
招聘
[已解决] [求助]facebook脸书安卓端处理响应体的函数在哪里? 1000雪币
发表于: 2024-9-24 16:08 2357

[已解决] [求助]facebook脸书安卓端处理响应体的函数在哪里? 1000雪币

2024-9-24 16:08
2357

寻找facebook中可能用到的网络库

我找到的可能的有Apache HttpClientTigonProxygen、以及可能有类似GraphQLRequest的请求,hook代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Java.perform(function () {
    console.log("Starting network request hooks...");
 
    // Hook Apache HttpClient (Commons HttpClient)
    try {
        var HttpRequestBase = Java.use("org.apache.http.client.methods.HttpRequestBase");
        HttpRequestBase.setURI.implementation = function (uri) {
            console.log("[Apache HttpClient] URL: " + uri.toString());
            return this.setURI(uri);
        };
    } catch (e) {
        console.log("Error hooking Apache HttpClient: " + e);
    }
 
    // Hook Tigon (Facebook custom library)
    try {
        var TigonRequest = Java.use("com.facebook.tigon.TigonRequest");
        TigonRequest.toString.implementation = function () {
            var requestInfo = this.toString();
            console.log("[Tigon] Request: " + requestInfo);
            return requestInfo;
        };
    } catch (e) {
        console.log("Error hooking Tigon: " + e);
    }
 
    // Hook Proxygen (Facebook custom library)
    try {
        var ProxygenRequest = Java.use("com.facebook.proxygen.HTTPRequestHandler");
        ProxygenRequest.sendRequest.implementation = function () {
            console.log("[Proxygen] sendRequest called");
            return this.sendRequest();
        };
    } catch (e) {
        console.log("Error hooking Proxygen: " + e);
    }
 
 
    // Hook Facebook specific networking classes (if any found in decompiled APK)
    try {
        // Hook GraphQL or other specific networking-related classes
        var GraphQLRequest = Java.use("com.facebook.graphql.GraphQLRequest");
        GraphQLRequest.toString.implementation = function () {
            var reqInfo = this.toString();
            console.log("[GraphQLRequest] Request: " + reqInfo);
            return reqInfo;
        };
    } catch (e) {
        console.log("Error hooking GraphQLRequest: " + e);
    }
 
    console.log("Network hooks setup completed.");
});

但是打印的结果却只有

1
[Apache HttpClient] URL: https://graph.facebook.com/graphql

打印堆栈为:

1
2
3
4
5
6
7
8
9
10
[23116PN5BC::Facebook ]-> [Apache HttpClient] URL: https://graph.facebook.com/graphql
[Apache HttpClient] Stack trace: java.lang.Exception
        at org.apache.http.client.methods.HttpRequestBase.setURI(Native Method)
        at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:84)
        at X.1yV.CO6(:86)
        at X.1yq.run(:232)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at X.26T.run(:9)
        at java.lang.Thread.run(Thread.java:1012)

继续向上hook就发现了tigon相关的内容,最后在类com.facebook.tigon.tigonobserver.TigonObserverData里hook到了response的响应头

没能hook到他的响应体,很多类中也没有看到有关onBody或者onResponse之类的处理响应体的代码,大部分我也hook过,有的类是跟UI相关,直接从so层拿Tree出来,如类com.facebook.graphservice.tree.TreeJNI中的各种getTree方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private native String getStringNative(int i);
 
private native String getStringNative(String str);
 
private native ImmutableList getTimeListNative(int i);
 
private native long getTimeValueNative(int i);
 
private TreeJNI[] getTreeArray(String str, Class cls, int i) {
    if (isFieldUnset(str.hashCode()) || !isValidGraphServicesJNIModel()) {
        return null;
    }
    return filterNullArrayEntries(getTreeArrayNative(str, cls, i));
}
 
private native TreeJNI[] getTreeArrayNative(int i, Class cls, int i2);
 
private native TreeJNI[] getTreeArrayNative(String str, Class cls, int i);
 
private native TreeJNI getTreeNative(int i, Class cls, int i2);
 
private native TreeJNI getTreeNative(String str, Class cls, int i);

虽然能拿到数据,但是没有响应体,我的目标不是过签,就是为了能在java曾或者JNI桥梁上hook到响应体,就像是Okhttp.responsebody,有大佬能帮忙找一下这个处理响应体的函数吗?

用IDA pro打开libcoldstart.so后发现了很多ProxygengetTree等相关的可能处理响应体的方法,使用fridahook后仍然找不到,希望有佬能救一把,困在这里一周了,难受ing

附件:

1
2
3
4
5
6
过ssl的git开源项目:https://github.com/Eltion/Facebook-SSL-Pinning-Bypass
 
 
 
下载的包地址:https://apkcombo.com/downloader/#package=com.facebook.katana
下载的版本是:armeabi-v7a的安卓11+版本,下载后又在google商店更新了一下,最终打包后进行编译的

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2024-9-24 16:10 被乐在囧途编辑 ,原因: 补充说明
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1049
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

我在吾爱看到了一个类似的,但是如今已不再适用,求佬:https://www.52pojie.cn/thread-1427213-1-1.html

2024-9-25 12:45
0
雪    币: 562
活跃值: (4070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
春天在哪里呀 春天在哪里呀 春天在小朋友的眼睛里
2024-9-25 14:50
0
雪    币: 1049
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
DirtyAngle 春天在哪里呀 春天在哪里呀 春天在小朋友的眼睛里
佬,我能找到的全部hook了,hook了很久了,没有一丝response.body的迹象,so层hook也没思路,希望给些指点
2024-9-25 16:12
0
雪    币: 1049
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

有没有大佬给个思路 求求了

2024-9-26 09:17
0
雪    币: 1049
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

找到解决方案了。

2024-9-26 19:08
0
雪    币: 1049
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
DirtyAngle 春天在哪里呀 春天在哪里呀 春天在小朋友的眼睛里
虽然你说的话一点用都没,但是我得悬赏,恭喜你,幸运儿
2024-9-30 08:57
0
雪    币: 562
活跃值: (4070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
乐在囧途 虽然你说的话一点用都没,但是我得悬赏,恭喜你,幸运儿
有没有一种可能可以撤回悬赏 既然你给了 那有fb ins 问题问我吧
2024-9-30 10:29
0
雪    币: 1049
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
DirtyAngle 有没有一种可能可以撤回悬赏 既然你给了 那有fb ins 问题问我吧
真的嘛?我想hook到FB请求的响应体,可以嘛?我没办法找到处理响应体的位置,像response.text或者response.body或者其他继承了类似的方法,这个要怎么找?搜什么关键词吗?
2024-10-8 11:16
0
雪    币: 562
活跃值: (4070)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
乐在囧途 真的嘛?我想hook到FB请求的响应体,可以嘛?我没办法找到处理响应体的位置,像response.text或者response.body或者其他继承了类似的方法,这个要怎么找?搜什么关键词吗?
先抓包 然后搜http头或者body里面的key'
2024-10-8 11:17
0
游客
登录 | 注册 方可回帖
返回
//