基于 AST 手撕 xm-sign 生成逻辑:从环境补全到代码深度解析

查看 13|回复 1
作者:板砖亲你头   
基于 AST 手撕 sign 生成逻辑:从环境补全到代码深度解析
一、sign 与 AST 的核心价值
书接上文(音频网站逆向如何进行捞偏门https://www.52pojie.cn/thread-2031462-1-1.html (出处: 吾爱破解论坛))
在逆向工程与爬虫开发领域,sign 是典型反爬签名机制,广泛应用于音频、视频类平台的接口请求中。其核心作用是通过对请求参数进行多轮加密、压缩处理,生成唯一的 sign 签名,验证请求合法性,抵御恶意爬取行为。
1.1 sign 逆向的核心难点
sign 的生成逻辑通常被封装在 高度混淆的 JavaScript 代码 中,常见混淆手段包括:
  • 变量名加密(如 _0x383a33、_0x292fa3 等无意义标识符)
  • 控制流平坦化(用 switch-case 打散正常逻辑顺序)
  • 字符串加密(关键密钥、常量通过自定义函数加密存储)
  • 浏览器环境依赖(atob、encodeURIComponent 等 API)

    直接阅读和复现这类代码效率极低,且易因手动修改引入错误。
    1.2 AST 的解决方案价值
    抽象语法树(AST,Abstract Syntax Tree) 是 JavaScript 代码的结构化表示,可将非线性的混淆代码转化为可遍历、可修改的树形结构,解决逆向痛点:
    [ol]
  • 自动化解混淆:批量还原变量名、重组控制流、解密字符串,摆脱手动操作;
  • 精准定位逻辑:快速定位加密函数(如 AES)、参数处理步骤(如 compress);
  • 跨语言复现:基于清晰的 AST 分析结果,可无缝将 JS 逻辑复现为 Python、Java 等语言。
    [/ol]
    二、第一步:环境补全——模拟浏览器与依赖库
    sign 生成依赖浏览器原生 API 与第三方库,需先搭建 Node.js 模拟环境,补全所有依赖项。
    2.1 核心依赖清单
    [table]
    [tr]
    [td]依赖类型[/td]
    [td]具体依赖[/td]
    [td]作用[/td]
    [td]模拟/安装方式[/td]
    [/tr]
    [tr]
    [td]浏览器原生 API

    逻辑, 代码

  • 悦来客栈的老板   

    如果把ast反混淆的源码放出来,那更好
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部