V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aaaa9966
V2EX  ›  问与答

掌上英雄联盟这样的 APP 为什么不能使用 Fidder 或者 Charles 这样的工具抓包呢?

  •  
  •   aaaa9966 · 2018-07-07 12:54:16 +08:00 · 4342 次点击
    这是一个创建于 2330 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近想研究一下掌盟 LOL 玩家战绩查询的接口,发现 Fidder 或者 Charles 都抓不到包,是为什么呢? 难道说因为协议的问题吗,难道掌盟数据查询用的是 TCP 协议? 求做过类似的大佬帮忙指点一下~

    12 条回复    2018-07-09 17:41:41 +08:00
    crab
        1
    crab  
       2018-07-07 13:01:41 +08:00
    APP 要是提示网络连接失败或者等其他 有可能是 SSL Pinning。
    aaaa9966
        2
    aaaa9966  
    OP
       2018-07-07 13:16:22 +08:00
    @crab 没有提示网络连接失败,应该是走的内部协议?
    daigouspy
        3
    daigouspy  
       2018-07-07 13:18:42 +08:00 via Android
    直接在网线上接一个信号分析仪
    RockOrRoll
        4
    RockOrRoll  
       2018-07-07 15:37:03 +08:00 via iPhone
    换个低版本安卓看看
    KomeijiSatori
        5
    KomeijiSatori  
       2018-07-07 16:28:00 +08:00
    走的 https 吧
    ChangQin
        6
    ChangQin  
       2018-07-07 16:28:43 +08:00   ❤️ 1
    可以抓的,首先你先看看是不是装证书才能看。装了之后不能的话就有可能是 ssl,用 xposed hook ssl 的方法就能绕过去了。再有就是有的走的不是 Http,你下载一个代理机器人就能玩了 http://apps.game.qq.com/daoju/go/zmgoods/list?cat=16&page=1&plat=android&version=9811
    victor97
        7
    victor97  
       2018-07-07 19:29:53 +08:00 via Android
    Android 7.0 开始装了证书也不能抓包了
    iluhcm
        8
    iluhcm  
       2018-07-07 19:39:49 +08:00 via Android
    没试过,但是我猜测楼主说的抓不到包应该是请求都没有经过 Charles,这可能是因为在代码中设置了不经过代理直接请求。
    yezhiye
        9
    yezhiye  
       2018-07-07 20:19:30 +08:00 via Android
    xposed + JustTrustMe +安装证书。这样才能抓 https 的包。
    FanWall
        10
    FanWall  
       2018-07-07 20:37:57 +08:00 via Android
    说说猜测,因为我也没有去实际反编译。
    假设是 http 协议,那么楼主已经说了抓包没有出现连接错误,所以基本可以排除 SSL Pinning。那么最常见的就如同 @iluhcm #8 的观点,设置了不走代理,想个办法让它走代理就行了。
    然后就是非 http 协议的情况,可能性更大,因为腾讯系的 app 一直有比较通用的基于 TCP 的通信协议,例如可以反编译看下有没有类似 com.qq.taf.jce 的 package。
    jpmorn
        11
    jpmorn  
       2018-07-07 20:40:10 +08:00
    app ssl 加密 bypass 一般来说,我们抓 https 包使用 fiddler 或 charles,然后手机安装证书就可以抓包了,但是有时候我们抓某些 app 时候,一连上代理,却提示不能上网,明明可以上网,为啥 app 提示无网络,原因可能就是开启了 https 双向认证,客户端一般使用 SSL Pinning 防止中间人拦截攻击。我们可以使用 ssl-kill-switch2 绕过客户端的证书校验,就又可以愉快的抓包了。

    ssl-kill-switch2 最新版本是 v0.11 ,支持 ios10

    方法论:

    Did you go through these procedures to get JustTrustMe to bypass the cert pinning -- http://www.welivesecurity.com/2016/09/08/avoid-certificate-pinning-latest-versions-android/ -- ?
    If you are just looking to intercept WebViews, then the Frida extension, appmon (which allows for API interception), using these techniques will work well --
    If you do end up having to rewrite some code, try to keep it really simple. I found this technique which doesn't mess with the existing cert-pinning code and instead just adds the HTTP traffic to the logging system -- https://blog.securityevaluators.com/how-to-view-tls-traffic-in-androids-logs-6a42ca7a6e55
    For a series on repackaging Android apps, be sure to check out:
    *
    https://pen-testing.sans.org/blog/pen-testing/2015/06/30/modifying-android-apps-a-sec575-hands-on-exercise-part-1
    *
    https://pen-testing.sans.org/blog/pen-testing/2015/07/07/modifying-android-apps-a-sec575-hands-on-exercise-part-2
    aaaa9966
        12
    aaaa9966  
    OP
       2018-07-09 17:41:41 +08:00
    最新结果:LZ 试了一下,用 rvictl+wireshark 抓包,抓到的结果:



    结论:掌盟 LOL 战绩查询的数据通信应该是用的的 SSL 加密的 SOCKET,所以是 TCP 协议,抓包抓到了的数据全是 SSL 加密的数据,所以想获取这个接口的数据应该难度是很大的,不知道我说的对不对?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:45 · PVG 15:45 · LAX 23:45 · JFK 02:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.