1. 项目背景与核心挑战
最近在风控领域有个高频词叫"同盾检查",指的是金融机构使用同盾科技的反欺诈系统进行风险识别。而"blackbox"则是该系统用于前端数据采集的核心JS文件,经过高度混淆处理。我最近刚完成一个航空公司的项目,需要逆向这套系统获取关键参数,过程中积累了些实战经验。
这个项目的核心难点在于:新版同盾的blackbox文件采用了AST(抽象语法树)级别的混淆技术,比传统字符串混淆更难破解。传统的正则替换、格式化美化等手段完全失效,必须从语法树层面进行反混淆。更棘手的是,运行环境检测机制极为敏感,任何细微的环境差异都会触发反爬策略。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案选型与工具链
2.1 AST反混淆技术路线
面对AST混淆,我们选择Babel工具链作为基础架构:
- @babel/parser:将混淆代码解析为AST树
- @babel/traverse:遍历和修改AST节点
- @babel/generator:将处理后的AST重新生成代码
具体操作流程:
bash复制# 安装必要依赖
npm install @babel/core @babel/types @babel/traverse
2.2 环境补全方案设计
补环境的核心是创建完整的浏览器环境镜像,我们采用以下组合:
- Puppeteer提供基础浏览器环境
- vm2沙盒隔离执行环境
- 自定义Hook拦截环境检测点
关键环境参数包括:
| 检测项 | 补全方案 | 注意事项 |
|---|---|---|
| navigator | 对象深度克隆 | 需保持原型链完整 |
| screen | 动态生成随机分辨率 | 需符合常见设备比例 |
| WebGL渲染 | 硬件指纹模拟 | 需保持哈希值稳定性 |
3. 核心实现过程详解
3.1 AST反混淆实战步骤
- 标识混淆模式:通过对比多版本样本,发现主要采用:
- 控制
