抖音抓包教程~仅供学习交流

声明

本文仅供学习交流,如有侵权请联系删除

检测

抖音采用的是谷歌的Cronet网络协议栈,这个Cronet是从谷歌浏览器剥离出来的。

Chromium/net/socket/ssl_client_socket_impl.cc源码中可以看到与抖音libsscronet.so中相似的伪代码,如下图:

20250929102727407-image

20250929102752381-image

检测方法就是SSL_CTX_set_custom_verify,这个方法最终会调用boringssl中的SSL_CTX_set_custom_verify。其中mode参数的取值就是下面的三种情况,callback回调函数就是自定义证书校验逻辑。

// SSL_VERIFY_NONE, on a client, verifies the server certificate but does not
// make errors fatal. The result may be checked with |SSL_get_verify_result|. On
// a server it does not request a client certificate. This is the default.
#define SSL_VERIFY_NONE 0x00

// SSL_VERIFY_PEER, on a client, makes server certificate errors fatal. On a
// server it requests a client certificate and makes errors fatal. However,
// anonymous clients are still allowed. See
// |SSL_VERIFY_FAIL_IF_NO_PEER_CERT|.
#define SSL_VERIFY_PEER 0x01

// SSL_VERIFY_FAIL_IF_NO_PEER_CERT configures a server to reject connections if
// the client declines to send a certificate. This flag must be used together
// with |SSL_VERIFY_PEER|, otherwise it won't work.
#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02

void SSL_CTX_set_custom_verify(
    SSL_CTX *ctx, int mode,
    enum ssl_verify_result_t (*callback)(SSL *ssl, uint8_t *out_alert));

如何过

给出两种解决方案,第一种是使用frida直接将mode改为0x0,第二种就是patch so文件,硬编码一下so,然后重新放回去。

function hook_dlopen1(module_name) {
    var android_dlopen_ext = Module.findExportByName(null, "android_dlopen_ext");
    if (android_dlopen_ext) {
        Interceptor.attach(android_dlopen_ext, {
            onEnter: function (args) {
                var pathptr = args[0];
                if (pathptr) {
                    this.path = (pathptr).readCString();
                    console.log(this.path);
                    if (this.path.indexOf(module_name) >= 0) {
                        this.canhook = true;
                    }
                }
            },
            onLeave: function (retval) {
                if (this.canhook) {
                    let verifyadd = Module.getExportByName("libsscronet.so", "SSL_CTX_set_custom_verify");
                    Interceptor.attach(verifyadd, {
                        onEnter(args) {
                            console.log(args[1])
                            args[1] = ptr(0x0)
                        }
                    })
                }
            }
        });
    }
}

第二种使用ida自带的keypatch,将#1改为0后,保存so文件,重新放入,赋予对应权限后既可使用。

20250929102956157-image

效果

可以看到,reply接口评论可以正常抓取,其他接口也正常,但还有小部分是connect失败,该方法对于tk抓包同样有效,至于quic协议,尝试过wireshark抓取,但是连quic的影子都没看到,不知道哪个接口用了。

20250929103034317-image

20250929103048922-image

🎀 🌸

📜 重要提示:
如有解压密码:看下载页、看下载页、看下载页。
源码工具资源类具有可复制性: 建议具有一定思考和动手能力的用户购买。
请谨慎考虑: 小白用户和缺乏思考动手能力者不建议赞助。
虚拟商品购买须知: 虚拟类商品,一经打赏赞助,不支持退款。请谅解,谢谢合作!
邻兔跃官网:lt.lintuyue.com(如有解压密码看下载页说明)。

文章版权声明 1、本网站名称:邻兔跃lT
2、本站永久网址:https://lt.lintuyue.com/
3、本站内容主要来源于互联网优质资源整合、网友积极投稿以及部分原创内容,仅供内部学习研究软件设计思想和原理使用,学习研究后请自觉删除,请勿传播,因未及时删除所造成的任何后果责任自负,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容