腾讯天御滑块流程逆向

目标网站

aHR0cHM6Ly90ZnoubWFveWFuLmNvbS95YW1haGEvdmVyaWZ5P3JlcXVlc3RDb2RlPThkMDQ3MThlODRmNjE4ZTU1ZDA1N2ZjMDNiODNjY2FkdWUycGImcmVkaXJlY3RVUkw9aHR0cHMlM0ElMkYlMkZ3d3cubWFveWFuLmNvbSUyRmNpbmVtYSUyRjE2MTE5JTNGcG9pJTNEMTA4NDQ5MTYxIy8=

网站分析

这里先全流程过一下。

在做这种验证码方面的东西。从后往上看。

这里滑块走的接口是 cap_union_new_verify

这个接口负载主要有5个参数类似或者是疑似加密的地方。

分别为

  1. ua
  2. sess
  3. collect
  4. eks
  5. vData

这里经过分析可知

UA是由base64加密useragent生成的。

sess 是由接口返回的

collect加密 ——> 需要分析

eks——> 需要分析

vData——> 需要分析

这里我们肯定知道大体的流程是

返回接口值——> 获取背景图片和缺口图片——> 识别获得距离——> 利用算法获取轨迹——> 轨迹加密——> 完成请求。

那这里我们就来找一下图片

可以看到 这个图片也需要返回的sess。 继续网上找

这里发现 两次请求的sess 还不一样。那就继续去看

这里重新调用下代码。补一下 yamaha/verify 接口的JS

拼接得到 背景图和缺口图。进而得到距离。

然后就是考虑几个加密参数如何 生成了。

参数生成分析

如下图位置 。进JS网上找栈点。

然后如图位置打断点。看下生成值

如图 就是collect生成位置。

这里先记住这个地方。先来分析下Vdata 和 eks

eks生成处

追栈找。发现这个是l方法的info

后经过多次单步调试。发现走的都是同一个接口

而这个接口 也是JSVMP的入口函数。包括collect的生成。

collect

这里回头再来看看这个collect

单步调试进栈

可以发现和上面的eks 走的同一个入口。

这里话不多说。直接开补。

第一步:复制JS到浏览器 看看能否出值。

直接调用 window.TDC.getData(!0)

第二步: 去github 找个趁手的开源补环境框架(很重要,简单的确实补的不行。)

第三步: 复制到node 开补。

缺啥补啥。但是其中包含了

  1. 对原型链的检测。
  2. 对dom链式调用的检测
  3. 对canvas 以及其原型链的调用
  4. 还有body以及div的一些检测。

过掉这些 基本就能正确出值了。

但是正确出值 也只是不包含轨迹以及其他特定检测的出值。

这里我们补环境得到值。需要使用Dom去监听鼠标事件。

打开mouseup断点。然后单步进栈

如图位置打上日志断点。

后面根据a.type 判断轨迹走向。

然后伪造轨迹 通过事件喂给JS。最终拿到最终的collect 以及其他的值。


腾讯天御滑块流程逆向
https://hybpjx.cn/2024/09/05/腾讯天御滑块流程逆向/
作者
hybpjx
发布于
2024年9月5日
许可协议