You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排查处理WebSocket消息的JS脚本及解密逻辑?

WebSocket消息解密逆向排查技巧(针对1win.com.ci Aviator游戏)
  • 直接拦截WebSocket通信:在Chrome DevTools的「Network」面板筛选「WS」类型,找到目标连接后切换到「Frames」标签查看原始收发消息,右键复制保存。同时点击「Initiator」列对应的JS文件,定位WebSocket连接的创建代码,这里通常是消息处理逻辑的入口。

  • Hook WebSocket核心方法:在DevTools控制台注入Hook脚本,监听消息收发事件,自动触发断点跟进逻辑:

    // Hook消息接收
    const originalOnMessage = WebSocket.prototype.onmessage;
    WebSocket.prototype.onmessage = function(event) {
      console.log("原始接收消息:", event.data);
      debugger;
      return originalOnMessage.call(this, event);
    };
    // Hook消息发送
    const originalSend = WebSocket.prototype.send;
    WebSocket.prototype.send = function(data) {
      console.log("原始发送消息:", data);
      debugger;
      return originalSend.call(this, data);
    };
    
  • 全局搜索加密相关关键词:在DevTools「Sources」面板按Ctrl+Shift+F全局搜索,关键词包括decode、decrypt、unpack、onmessage,甚至可以直接搜索示例消息里的明文字段(比如currentPayload),快速定位处理函数。

  • 解析二进制消息结构:你拿到的示例是Base64编码的二进制数据,先在控制台解码查看原始结构:

    const b64Str = "gABuEgADAAFwEgACAAFwEgADAA1jdXJyZW50UGF5b3V0B0AUAAAAAAAAAARjb2RlBAAAAMgAD2N1cnJlbnRHYW1lVGltZQUAAAAAAABLyAABYwgAEWN1cnJlbnRNdWx0aXBsaWVyAAFhAwANAAFjAgE==";
    const rawData = Uint8Array.from(atob(b64Str), c => c.charCodeAt(0));
    console.log(rawData);
    

    之后在代码里找处理ArrayBuffer或Uint8Array的逻辑,这类加密常搭配TextDecoder或加密库使用。

  • 绕过DOM断点局限:大倍数元素更新多由数据驱动而非直接操作DOM,可换这些方式:

    • 在「XHR/fetch Breakpoints」里添加任意URL,拦截数据更新请求;
    • 用「Performance」面板录制游戏运行过程,筛选「Scripting」任务,定位倍数更新相关的调用栈;
    • 在倍数元素上右键「Inspect」,再在「Elements」面板右键元素选择「Break on」→「Subtree modifications」,倍数变化时触发断点后回溯数据来源。
  • 处理混淆代码:若目标代码被混淆,用「Sources」面板的「Pretty print」({}按钮)格式化,再通过变量语义(如带crypto、ws、msg的变量)或调用栈反向追踪逻辑。

内容的提问来源于stack exchange,提问作者montovaneli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:45:30