V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LxnChan
V2EX  ›  Android

如何对 Android APP 抓取 HTTPS 包?

  •  2
     
  •   LxnChan · 197 天前 · 6202 次点击
    这是一个创建于 197 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现有一 APP ,采用 HTTPS 方式与服务器通讯,需要对该 APP 抓包获得接口。

    但是现在问题如下:

    • 用主力机抓包:Android 12 ,安装证书后第三方 APP 默认不信任非系统证书,无法抓包;

    • 用备用机抓包:Android 5.1.1 ,因该接口需要先获得定位数据,而备用机定位十分缓慢,也无法抓包;

    • Android Studio Emulator:arm 架构的镜像无法启动,该应用无法安装在 x86 架构上。

    因此想问问大家有什么别的好的方法吗?

    第 1 条附言  ·  197 天前
    附属条件:应用会检测 Root 或 Xposed 、另外主力机( Android 12 )也不想 Root ,Root 的方案可以不用推荐了。
    第 2 条附言  ·  196 天前
    1. 统一回复一下为什么不 Root:一方面前面也说了,应用会检测;另外一方面,Root 后会丢掉所有数据,且因为需要在手机上看奈飞,Root 后 GMS 会受影响,奈飞会无法运行。还有别问我“×××方法能防止奈飞在 Root 环境下运行,你为啥不用”,别问,问就是懒。
    2. 我现在是怎么解决的:借了台 iPhone 6 ,问题解决🤣。
    3. 我把这些东西都记录在了我的 blog 下了,有兴趣的可以去看看 https://lxnchan.cn/app-package-grab.html
    58 条回复    2022-04-23 01:02:24 +08:00
    mynuolr
        1
    mynuolr  
       197 天前
    Root 后把自签加入系统证书。
    learningman
        2
    learningman  
       197 天前
    用 frida/xposed hook 证书验证的接口,直接 return true
    DonaldY
        3
    DonaldY  
       197 天前
    charles
    NjcyNzMzNDQ3
        4
    NjcyNzMzNDQ3  
       197 天前
    补充#1

    下个安卓模拟器,比如网易木木,再带 root 功能,方便自签证书导入
    popok
        5
    popok  
       197 天前   ❤️ 1
    现在的安卓系统确实比较麻烦,我也蹲一个可用的方法。

    这方面还是 ios 方便,直接证书信任,然后就可以抓了。
    DonaldY
        6
    DonaldY  
       197 天前
    Android 确实。。。
    dier
        7
    dier  
       197 天前
    Fiddler 在 PC 上做代理也不行吗
    tiny1994095
        8
    tiny1994095  
       197 天前
    LxnChan
        9
    LxnChan  
    OP
       197 天前 via Android
    @mynuolr @learningman 不能采用 root 或者框架,会被检测
    @NjcyNzMzNDQ3 应用不支持 x86 架构
    @dier 要安装证书
    @tiny1994095 稍后我看一下
    bruce0
        10
    bruce0  
       197 天前
    忘记从哪个版本开始 Android 抓包变麻烦了, 原因是 app 可以不信任非系统证书,这就需要 root 权限把伪造的证书加入 root ,然后在用 frida 代理抓包

    但是有的 app 检测到 root 后就退出,或者检测到代理就退出,有的还只信任 app 内自带的私有证书,这些就很难搞了

    https://zhuanlan.zhihu.com/p/46433599 可以参考
    ysc3839
        11
    ysc3839  
       197 天前 via Android
    SSLUnpinning 2.0
    ysc3839
        12
    ysc3839  
       197 天前 via Android
    @LxnChan #9 市面上的模拟器有 ARM 模拟功能的,不需要应用支持 x86 也可以运行
    clf
        13
    clf  
       197 天前
    手机虚拟机装 root 的镜像呗
    deplivesb
        14
    deplivesb  
       197 天前
    Xposed
    tsanie
        15
    tsanie  
       197 天前
    实在不行自编译 aosp ,把 mitm 证书内置为系统证书(
    learningman
        16
    learningman  
       197 天前
    @LxnChan #9 root 检测本身也可以被 hook 的,一直不能 root 多束手束脚啊
    mxalbert1996
        17
    mxalbert1996  
       197 天前 via Android
    先用 Magisk 来 root
    然后用 https://github.com/Magisk-Modules-Repo/movecert 把用户证书转成系统证书
    再用 Shamiko ( https://github.com/LSPosed/LSPosed.github.io/releases) 对特定应用隐藏 root
    mxT52CRuqR6o5
        18
    mxT52CRuqR6o5  
       197 天前 via Android
    你那应该不是不信任非系统证书,而是有 ssl pinning ,只信任特定的证书
    我的建议就是用安卓 5 ,装个 xposed 插件去除 ssl pinning 限制,再找些插件防止 root/xposed 检测
    mxT52CRuqR6o5
        19
    mxT52CRuqR6o5  
       197 天前 via Android
    定位速度问题再找一些虚拟定位去解决
    libook
        20
    libook  
       197 天前
    买个可解锁的手机(无锁更方便,如 Pixel ),system 挂载成可写之后把证书转 PEM 格式、按命名规则改好名字,放在特定的目录下就可以了,不需要手机持续 root 状态。

    当然 root 了也可以,操作更方便一些。

    急着用可以找些电脑上用的自带 root 的安卓模拟器,比如夜神模拟器,就是兼容性不是特别好,有时候会闪退。
    LxnChan
        21
    LxnChan  
    OP
       197 天前
    @bruce0 是 7.0
    @ysc3839 #11 @mxalbert1996 #17 不能 root
    @clf 考虑过,但我想作为最后的解决方案
    @tsanie 草🤣,这就开始下载源码(
    @mxT52CRuqR6o5 #19 虚拟定位稍后试一下
    Jat001
        22
    Jat001  
       197 天前
    试试这个,root 之后基本全自动了

    https://github.com/httptoolkit/httptoolkit-android
    ch2
        23
    ch2  
       197 天前
    ->该应用无法安装在 x86 架构上
    装个翻译插件就行了
    LxnChan
        24
    LxnChan  
    OP
       197 天前
    @ch2 细说,试过 Android 模拟器的兼容模式会导致该 App 闪退
    Zy143L
        25
    Zy143L  
       197 天前 via Android
    安卓 12 使用 Magisk 模块安装根证书
    使用 Xposed 模块 JustTrustMe TrustMe 解除固定证书
    noahhhh
        26
    noahhhh  
       197 天前 via Android
    Android 不是有很多虚拟机吗…太极应该也行吧
    chanwang
        27
    chanwang  
       197 天前 via Android
    电脑开热点抓手机的包不可以吗?抓包不是很简单嘛?当然我说抓的是手机的流量全部包了。还是说要解密数据?这个绕不开证书。抓包整个通讯路径上都可以尝试抓包吧?非要手机上自己抓?路由器上不可以?
    xFrank
        28
    xFrank  
       197 天前
    @mynuolr
    已 root 的手机怎么加入系统证书?
    skylancer
        29
    skylancer  
       197 天前
    @chanwang 人家要看内容,你通讯路径抓了看个寂寞?
    skylancer
        30
    skylancer  
       197 天前
    [现有一 APP ,采用 HTTPS 方式与服务器通讯,需要对该 APP 抓包获得接口。]

    我发现都是回贴不看贴的..
    mxT52CRuqR6o5
        31
    mxT52CRuqR6o5  
       197 天前 via Android
    如果 app 用了 ssl pinning ,你在那边折腾证书是没用的,这种情况下不 root 就得改 app 了,你说哪个更难操作(都能改 app 了还抓什么包呢)
    theqiang
        32
    theqiang  
       197 天前 via Android
    目前用 lsposed 插件 JustTrustMe/TrustMeAlready + HttpCanary + magiskhide 组合,但是有 root 方案了
    imtianx
        33
    imtianx  
       197 天前
    我记得使用 okhttp 可以自定义代理,这样抓包工具是抓不到的,但是如果连的 wifi ,在路由器上应该可以抓到,但是解密比较麻烦吧。
    imtianx
        34
    imtianx  
       197 天前
    还有 ,root 和 xposed 检测可以自己欺骗过去的
    mxalbert1996
        35
    mxalbert1996  
       197 天前 via Android
    @LxnChan 不能 root 就放弃吧,你这个需求没 root 是不可能的。
    wanf3ng
        36
    wanf3ng  
       197 天前   ❤️ 1
    下个安卓模拟器,安卓版本选 4.4 (只要 7 以下就行,7 以下可以信任非系统证书)
    jpyl0423
        37
    jpyl0423  
       197 天前
    装个平行空间 apk ,然后就能用 charles/fiddler 抓包了
    不过这个平行空间的版本有要求,好像是某个版本之下,具体不记得了可以搜一下。
    0o0O0o0O0o
        38
    0o0O0o0O0o  
       197 天前 via iPhone
    1. 用一些免 root 框架,如果被检测,先尝试各种公开的过检测的技巧和插件,再进一步则需要学习分析
    2. 带有 ARM 转译的商业模拟器,或者干脆 arm 云真机,如果仍然被 APP 检测,那么可能也需要学习分析和过检测
    3. 修改 APP ,重新打包 APK ,由于现在的应用多数有加固,比上述的大概还复杂一些,一般用于需要重新分发的场景,只是抓个包成本太高

    总之,这方面的新手如果一定要给自己提前设下机型和免 root 的限制,那对于同等防护级别,要付出的努力也会更多。
    cweijan
        39
    cweijan  
       197 天前
    @mxT52CRuqR6o5 不是的,比如京东就没有 ssl pinning, 而是设置了只信任系统证书
    LxnChan
        40
    LxnChan  
    OP
       197 天前
    @0o0O0o0O0o 倒是提醒我 arm 云真机的问题了,等下问问学校那边还有没有资源
    mydingyan
        41
    mydingyan  
       197 天前
    我项目组原本 APP 加了私有证书,fiddler 抓包抓不了,后来让前端打包 APP 时不加 ssl pinning 就可以抓了。
    xuhaoyangx
        42
    xuhaoyangx  
       197 天前
    @mxalbert1996 #17 方法正解

    解决 ssl pinning 。装 lsp ,和插件 JustTrustMe 或 TrustMeAlready
    maskerTUI
        43
    maskerTUI  
       197 天前
    装个免 root 框架,像太极 xposed 这种
    ltkun
        44
    ltkun  
       197 天前
    会检测不能装个屏蔽检测的工具吗 root 了都 还有啥不能干
    kingfalse
        45
    kingfalse  
       197 天前
    这不想那不想的,干脆别抓了,不想 root 主力机就用模拟器,mumu,夜神,雷电,完全够用,检测 root 就屏蔽他检测,这些都是可以做到的
    kingfalse
        46
    kingfalse  
       197 天前
    除了 Flutter 开发的 app 抓包恶心点外,其他的都好说
    HFX3389
        47
    HFX3389  
       197 天前
    话说现在有人出已 root 的抓包机吗:D😋
    serge001
        48
    serge001  
       197 天前
    https://github.com/android-hacker/VirtualXposed
    不需要 root, 装一个 VirtualXposed ,然后把 app 安装到 VirtualXposed 里
    FaiChou
        49
    FaiChou  
       197 天前
    红米 Note10 root 后, 使用 Packet Capture 和 HttpCanary 都不能添加证书.. 不知道啥原因
    popok
        50
    popok  
       197 天前
    @chanwang #27 人家都说了想抓 https 的包,必然绕不开证书这个环节啊,现在问题是怎么让安卓系统认这个证书
    soulmine
        51
    soulmine  
       197 天前
    冷知识 安卓 7 之前可以随便装证书
    yukiwc
        52
    yukiwc  
       197 天前
    借楼问问,wifi 直连的应用怎么抓数据,fiddler 抓不到
    ZeroDu
        53
    ZeroDu  
       197 天前
    HttpCanary 貌似 github 上作者删库了
    LxnChan
        54
    LxnChan  
    OP
       196 天前
    @ZeroDu GPlay 上也跑了,已经买了的直接就打不开了
    @yukiwc WiFi 直连是啥,WiFi Direct 那个吗?
    @serge001 基本就是太极的原理?
    @HFX3389 有闲置的手机就可以 root 一下装个 Charles 抓呗
    MonkeyJon
        55
    MonkeyJon  
       196 天前
    https://blog.chrxw.com/archives/2020/08/10/1353.html
    你试试,把小黑盒这个软件换成你要抓的软件
    serge001
        56
    serge001  
       196 天前
    @LxnChan 对 跟太极差不多
    yolee599
        57
    yolee599  
       196 天前 via Android
    root 后安装面具,是可以隐藏 root 的,隐藏后某钉都检测不到,所有银行 APP 也检测不到
    magicdawn
        58
    magicdawn  
       166 天前
    安卓好麻烦...
    有没简单点的办法, 现在没 root, 日用机, 没解锁
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2319 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 08:15 · PVG 16:15 · LAX 01:15 · JFK 04:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.