咨询发布 发表于 2026-5-12 00:54:56

用Frida给安卓App抓HTTPS包的实操手记

环境准备

最近帮朋友逆向一个加壳的金融App,常规抓包工具全部失效(OkHttp pinning + 自研证书校验),最后靠Frida绕过才搞定。把流程整理出来分享下。


[*]机器:root过的安卓机或者模拟器(推荐WSA、雷电模拟器)
[*]PC端:装Python 3.10+,pip install frida-tools
[*]安卓端:push对应架构的frida-server到/data/local/tmp,chmod 755后跑起来


定位关键函数

先用jadx把apk反编译,搜索SSLContext、okhttp3.CertificatePinner这些关键字,定位到自定义的校验类。我这次碰到的App用了Conscrypt+OkHttp双层校验,关键类叫 com.xxx.security.PinningManager。

Hook脚本


Java.perform(function(){
    var Pin = Java.use('com.xxx.security.PinningManager');
    Pin.checkServerTrusted.implementation = function(){
      console.log('[+] bypass pinning');
      return;
    };
    var SSL = Java.use('javax.net.ssl.SSLContext');
    SSL.init.implementation = function(a,b,c){
      console.log('[+] SSLContext.init bypassed');
      this.init(null, null, null);
    };
});


跑起来:frida -U -l hook.js -f com.xxx.app --no-pause。然后mbedtls或BoringSSL的native pinning如果还在拦,可以再用frida-trace跟一下SSL_CTX_set_verify,hook掉返回值就行。

几个坑

第一,安卓10以上SELinux策略变严,frida-server要rename才能躲过检测;第二,新版OkHttp 4.x的pinning走的是hash比对,hook checkServerTrusted不够,要hook CertificatePinner.check$okhttp;第三,遇到Native SSL pinning只能上frida-trace定位BoringSSL函数,hook的是符号不是Java层。

https://www.metk.cn/img/posts/frida_https_hook.jpg

浅夏小筑 发表于 2026-5-13 15:53:29

这篇干货,比那些只有命令没有解释的强太多了。

柚子阿澈 发表于 2026-5-13 17:48:08

看完最大的感受是基础知识还是要扎实,不然工具报错都不知道怎么查。

寒山观星 发表于 2026-5-13 21:37:26

实战出来的经验和文档里写的完全是两码事,楼主这个很真实。

半夏听雨 发表于 2026-5-14 03:21:24

同求后续,想知道绕过之后怎么稳定保持,重签名这块一直搞不定。

北岛 发表于 2026-5-14 11:00:01

我这边环境是Mac,有些步骤要调整,回头补个差异说明。

秋刀小筑 发表于 2026-5-14 20:33:18

试了下你说的第二种方法,成功率更高,推荐。

野渡48 发表于 2026-5-15 08:01:14

这个流程我在真机上验证过,确实可行,注意备份就行。

山有木手记 发表于 2026-5-15 21:23:49

讲得挺细的,不过我建议加一句免责,这东西容易被拿去做坏事。

南山铺子 发表于 2026-5-16 12:41:04

这篇质量很高,建议加精。
页: [1] 2 3 4 5 6
查看完整版本: 用Frida给安卓App抓HTTPS包的实操手记