bigbigegg123
V2EX  ›  Claude

Claude 帮我来逆向 真的很有意思 有人也研究这个么

  •  
  •   bigbigegg123 ·
    PRO
    · 11h 57m ago · 1939 views

    Claude 帮我逆向 Futu:把闭源行情通道做成命令行工具

    最近用 Claude 做了一次完整的客户端协议分析,过程比想象中有意思。

    最后做出了一个小项目:futu-moni

    它是一个零依赖、单文件的 Python 命令行工具,可以通过 Futu / Moomoo 桌面客户端使用的原生协议,获取港股、美股和日股的实时行情。

    不需要 OpenD 、不需要 API Key ,也不依赖官方 SDK 。

    不知道之前有没有人研究过这套协议,如果有人做过类似的项目,也欢迎交流。

    为什么做

    最近想做一套股票自动监控、分析和推荐系统,但第一步就卡在了行情数据源上。

    我购买了 Futu 的行情订阅,准备通过 OpenD 获取数据,结果发现:OpenD 暂不支持日本市场行情

    我又找客服确认了一遍,结果确实如此。订阅买了,桌面客户端也能正常查看日股,但官方 API 就是不提供。

    一肚子气,只能自己动手。

    既然 Futu 桌面客户端可以正常显示日股,就说明底层数据通道本身存在,只是没有通过 OpenD 对外开放。

    于是我决定分析 Mac 客户端的通信协议,顺便测试一下 Claude 在客户端逆向和协议分析方面的能力。

    使用的工具

    • 开发能力:本人已经退化得基本不会开发了
    • 主要模型:Claude Opus 4.6 和 4.7
    • 运行方式:找了一个中转站,通过 Claude Code 完成分析和开发
    • 目标客户端:Futu / Moomoo macOS 客户端

    让 Claude 真正进入逆向状态,着实花了一段时间。

    刚开始,它一直纠结于官方 OpenD ,不愿意跳出官方 API 的思路。骂了几次以后,我干脆给它划清边界:

    • 不允许继续研究 OpenD
    • 不允许使用网页接口
    • 目标只限定为 Mac 桌面客户端

    边界明确以后,它才终于开始认真干活。

    期间它也试过偷懒,想绕到网页接口读取行情。再次限制以后,才真正转向桌面客户端协议、流量数据、本地数据库和 Protobuf 结构。

    最终成果:futu-moni

    futu-moni 可以通过一条命令,同时查询港股、美股和日股:

    python futu_moni.py --query 00700 AAPL 1306 7203
    

    futu-moni 项目截图

    futu-moni 查询效果

    核心实现

    1. FT 私有协议解析

    桌面客户端通过 TCP 443 端口连接行情服务器,应用层使用私有 FT 协议:

    • 32 字节大端序 Header
    • Protobuf 编码的 Body
    • 实时行情命令:CMD 0x1AA8
    • selector = 0 返回实时价格

    普通个股的价格采用纳单位存储,需要除以 10^9 才能还原成正常价格。

    2. 登录包重放

    客户端登录过程涉及 RSA 和随机填充,绕开了完整复现登录加密算法的问题。

    3. 多市场路由

    协议通过 route 字段区分不同市场:

    市场 route
    港股 1
    美股 11
    日股 1001

    工具会根据股票代码自动识别市场,并发送对应的行情请求。

    4. 证券 ID 解析

    协议请求使用的并不是股票代码,而是 Futu 内部的数字证券 ID 。

    这些数据保存在客户端本地的 SQLite 数据库 SecListDB 中。futu-moni 会自动查询对应的证券 ID ,并按照市场优先级匹配和去重。

    踩过的坑

    开发过程中遇到了几个比较有意思的问题:

    • 多只股票合并请求时,服务端只返回第一只,最终改成逐只发送
    • 部分响应存在非标准前缀,需要搜索 varint 标记定位有效数据
    • 指数使用毫单位,普通个股使用纳单位,两者相差 6 个数量级
    • 相同代码可能出现在不同市场,需要增加市场优先级和去重逻辑

    Opus 赏心悦目的逆向过程

    下面是 Claude 分析客户端、协议和数据结构时的一些过程记录:

    协议分析过程 1

    协议分析过程 2

    协议分析过程 3

    项目特点

    • 零第三方依赖,只使用 Python 标准库
    • 单文件实现
    • 支持港股、美股和日股
    • 自动识别市场和证券 ID
    • 按需获取实时行情
    • 不依赖 OpenD 和官方 SDK
    • 开源版本已移除敏感认证信息

    多说几句

    这次最大的感受是:Opus 一旦真正理解任务,逆向分析能力确实很强。

    前期需要不断纠正方向、明确边界,避免它退回官方 API 或网页接口这些更容易的路径。但一旦“开窍”,它在协议分析、流量定位、Protobuf 解析和客户端数据查找方面的表现非常惊艳。

    过程中它还通过 Certificate Transparency 日志寻找相关域名线索,并进一步定位客户端实际使用的服务入口。

    这种思路我自己之前完全没有想到。

    域名分析过程

    服务入口分析

    总体来说,这家伙一旦开窍,是真的强。

    欢迎朋友一起交流。

    本项目仅用于技术研究和学习。使用时请遵守相关用户协议、数据授权要求以及所在地区的法律法规。 以上文章 chatgpt-5.6 写的

    17 replies    2026-07-17 23:37:07 +08:00
    cluulzz
        1
    cluulzz  
       11h 52m ago
    有的,用 codex 直接逆向老游戏的 rom,然后直接改二进制 hook 字体渲染流程实现汉化
    bigbigegg123
        2
    bigbigegg123  
    OP
    PRO
       11h 44m ago
    @cluulzz 兄弟,有群或者 TG 么,加下加下
    suckinbottle
        3
    suckinbottle  
       11h 42m ago
    在没有 ai 前就做过对 futu 协议的逆向, 其实你完全可以用 apk 去逆向获取, 另外如果你能找到 futu 早期版本的客户端,就可以从 java 层拿到协议的结构体.
    justtokankan
        4
    justtokankan  
       11h 33m ago
    你传到 github 还是有风险啊,有 AI 之后,这些都很简单了
    seers
        5
    seers  
       11h 11m ago via iPhone   ❤️ 1
    黑灰哥们早就在用了,白盒,混淆,ollvm ,vmp 在 ai 眼里都不是事了,trace 一拿分分钟出 key
    evan1
        6
    evan1  
       11h 5m ago
    之前做过其它逆向,获取结果这一步相对简单,后面想要高频获取最新结果比较复杂。不过有了 AI 之后复杂也只是工程上的复杂,技术无所谓了。
    sigmadog
        7
    sigmadog  
       9h 6m ago
    有没有碰到过 ai 不帮你逆向的情况?咋绕过的
    NamelessRain
        8
    NamelessRain  
       8h 32m ago
    @seers #5 vmp 壳都瞬秒了吗
    Adven
        9
    Adven  
       6h 33m ago
    支持查询历史行情数据吗
    wisej
        10
    wisej  
       6h 23m ago
    没有 guardrail 问题么?
    owen800q
        11
    owen800q  
       6h 20m ago via iPhone
    @NamelessRain 测试了下,一样秒了,
    bigbigegg123
        12
    bigbigegg123  
    OP
    PRO
       5h 46m ago
    @sigmadog 跟他谈心, 然后越狱他
    bigbigegg123
        13
    bigbigegg123  
    OP
    PRO
       5h 46m ago
    @Adven 应该是支持的,你说的对,我把 k 线数据也弄下。
    bigbigegg123
        14
    bigbigegg123  
    OP
    PRO
       5h 44m ago
    秒 VMP ollvm 不至于, 但是肯定是能搞的,具体完成度和实现效果, 就得看调教和运气了。
    123128xyz
        15
    123128xyz  
       5h 19m ago
    python futu_moni.py --query 00700 AAPL 1306
    No securities found for: 00700, AAPL, 1306
    SecListDB not found. Is Futu/Moomoo installed?
    这个要依赖客户端的话....
    bigbigegg123
        16
    bigbigegg123  
    OP
    PRO
       5h 16m ago
    @123128xyz 需要登录凭据,所以这一步就在需要客户端,没做自动化登录。
    ccpp132
        17
    ccpp132  
       5h 0m ago
    试试能不能搞定 d 加密
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   924 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 20:37 · PVG 04:37 · LAX 13:37 · JFK 16:37
    ♥ Do have faith in what you're doing.