在ai还没有如今这么强大的时候,当我们遇到了防水墙滑块的时候,可能最常用的方案就是Selenium方案,甚至在早期的时候有人曾言只有自动化可以通过滑块验证码。
那么为什么会有这种说法呢?---->其实原因很简单,因为某些大厂的验证码确实很难,对于小白和经验不是很丰富的人来说,通过逆向的方式实现,这完全是一个不可能完成的挑战。
以防水墙为例来说,其中包含了vmp、webpack、高度代码混淆、控制流平坦化、僵尸代码等,这些技术的处理对于一个经验丰富的人员来说也需要很长的一个周期才能解决。
现在AI飞速发展,对于那些经验不是很丰富的人,只要对逆向有了解,也可以在AI的辅助下逆向出验证码。
1、什么是jsvmp
JSVMP(JavaScript Virtual Machine Protection,JS代码虚拟化保护)是一种企业级的JavaScript代码高强度加密混淆技术。
它通过将原始JS代码转换为一种特定的、自定义的字节码,并在浏览器或Node.js中运行私有的解析器,使代码反编译和逆向分析极度困难,常用于保护Web应用的关键算法。
某防水墙滑块验证码对jsvmp的应用:
1、__TENCENT_CHAOS_STACK---自定义的字节码解释器
2、字节码以大数组形式内联(数万个数字)
3、所有的 collect 和 eks 加密逻辑都在 VM 内部执行
4、逆向难度极高,需要还原整个 VM 指令集
2、webpack打包 + 变量混淆
webpack打包---模块化混淆,函数调用链难以追踪
变量混淆---单字母变量名 (a, b, c),无语义
3、随机变量名
window.KcYVdONjSbHEDgmXanKNEdRPYPMTPdOh 存储 eks,每次加载变化
二、使用AI辅助分析
1、准备工作
在正式进行分析时可以让AI写一个design.md、tasks.md、requirements.md文件,这样可以使得你的项目更加的有层次感
requirements.md---需求文档,可以根据你自己的需要来进行进一步改进,这部分AI会根据你的需求写好一个requirements.md
design.md---设计文档,AI根据需求设计出一个方案
tasks.md---任务文档,AI会根据设计文档列出下面它需要做的事

2、分析启动
1)抓包预览
通过 Chrome DevTools 抓包,核心只有 2 步:
```
[1] GET /cap_union_prehandle → 初始化,获取 sess + 图片配置 + PoW 挑战
[2] POST /cap_union_new_verify → 提交答案,获取 ticket
```
这里面的Chrome DevTools大家可能都不陌生,AI能自己调度浏览器抓包主要是基于Chrome DevTools MCP
2)prehandle 请求分析
| 参数 | 说明 | 示例 |
|------|------|------|
| aid | 应用 ID | 199999861 |
| ua | Base64 编码的 User-Agent | TW96aWxsYS81LjA... |
| lang | 语言 | zh-cn |
| entry_url | 来源页面 | ff0K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6i4c8W2L8X3y4W2L8Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6Q4x3X3g2Q4x3X3g2Q4x3X3f1`. |
| subsid | 子会话 ID(递增) | 1 |
| callback | JSONP 回调名 | _aq_191730 |
3)verify 请求分析
| 参数 | 说明 |
|------|------|
| collect | TDC 加密的设备指纹 + 轨迹数据 |
| tlg | collect 字符串长度 |
| eks | TDC 生成的加密密钥信息 |
| sess | 会话标识 |
| ans | 滑块答案 JSON |
| pow_answer | PoW 计算结果 |
| pow_calc_time | PoW 计算耗时(毫秒) |
3、跟进分析JS文件
1)核心JS文件清单
| 文件 | 大小 | 作用 | 混淆程度 |
|------|------|------|---------|
| TCaptcha.js | 入口 | 加载器 | 低 |
| tcaptcha-frame.js | 207KB | 主框架逻辑 | 中(Webpack) |
| dy-ele.js | 209KB | 滑块核心逻辑 | 中(Webpack) |
| tdc.js | 78KB | 设备指纹采集 | **极高(JSVMP)** |
2)混淆技术分析
**dy-ele.js 混淆特征:**
- Webpack 打包,模块化结构
- 变量名混淆(单字母变量)
- 部分字符串 Base64 编码
- 可通过断点调试还原
**tdc.js 混淆特征(重点):**
- 腾讯自研 `__TENCENT_CHAOS_STACK` 虚拟机
- 自定义字节码解释器
- 字节码以数万个数字的大数组形式内联
- 核心加密逻辑全部在 VM 内执行
- **逆向难度:极高**
说实话,分析完都有哪些核心文件和对抗技术之后,如果是我自己手搓的话可能需要很长的一段时间才能搞定,但是有了AI之后,工作量就可以减轻很多了,每天花几个小时,在一两天的时间内就能搞定。
3、算法分析
1)PoW (Proof of Work) 算法
就是一个暴力搜索的md5
暴力搜索: md5(nonce + counter) === target
返回:
ans: counter,
duration: +new Date - startTime
2)ft (浏览器特征指纹) 生成
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!