JS逆向 --- 易盾有感滑块

Posted .源.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS逆向 --- 易盾有感滑块相关的知识,希望对你有一定的参考价值。

声明:本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢

滑动拼图验证码_拼图验证_图形验证_在线体验_网易易盾网易易盾创新行为式验证,轻松一滑完成拼图,用户体验极佳,秒速通过验证。https://dun.163.com/trial/jigsaw

 一、验证码接口

以下滑块以官网的为例

获取验证码主要加密参数:fp、 cb

 二、分析 fp

 1. 进入函数下断点

 2.在执行到这里的时候参数已经形成了, 单步跟栈

 3.跟到这里可以发现参数是 “fingerpring”, 全局查找参数

4.  'fingerprint'是由参数_0x443773赋值,_0x443773window 中取值,控制台打印一下 _0x1fb903(0x7ef), 大致就是从window取 gdxidpyhxde,拿 fiddler 去 hook 下结果

 5.  打开fiddler使用编程猫的插件,编写 hook 代码, 勾上选项,清除 cookie刷新浏览器

6. hook到内容的时候是没有值的,说明还没有生成,第一次赋值为 null, 一步一步跟栈

 7. 函数 _0x18a835 就是生成  gdxidpyhxde 的地方了,单步走,跳过流程我们直接看结果

 8. 加密的参数基本都可以定死, 把 _0x18a835  函数扣下了, 哪里报错补哪里,补不上赋值为空

到这 fp 参数就逆完了, 测试结果


 三、分析 cb

1.还记得之前分析fp第三步的时候有出现的cb参数吗?回到这里接着分析

这是一个随机数,应该由时间戳或者随机生成的数据, 进入 _0x4339f3 重新下断点

 2. 发现一只小可爱 "uuid" ,uuid的生成一般都是32位的随机数,扣下来就完了

 3.cb 参数测试结果:扣代码的时候有 try 异常捕获,最好是(不重要的情况下)把捕获代码去除

 验证码获取测试

fp、cb教程到此结束 

本篇文章结束

。。。。。。

。。。

好了开玩笑的休息一下放松放松眼睛,开始下一轮分析: 滑块轨迹分析


四、滑块轨迹分析

1.  观察成功划过滑块返回的参数:验证正确返回不为空的 validate

 2.观察所需要的参数: 除去cb参数剩余的参数都是经过加密的,在验证之前发了个 b 包 

 3. 先查看 b 包: 表单提交有一串长长未知数据,不管它先凉着,打个卡


五、acToken分析

1. 进入函数内部,为什么进这里呢?两点:一、有混淆进混淆,二、一个个点进去观察观察

2.  断这里呢加密结果已经出来了,跟进一下

3. 结论得出: acToKen 由变量 ”_0x6f9f72“ 取出 ”_arg“ “_0x6f9f72” 又是 this,由于全局查找 ”_arg“ 没有结果, 但变量中有 "_fullfilledCallback" ,遗憾的是也是查找不到的,那怎么办?
世上无难事,只要肯放弃!

那就洗洗睡吧!本文章大结局 ....

我觉得还能抢救一下下。。。

但是还有一个重点 --- 就是它是混淆!没毛病所以你懂了吗? 全局查找 “0x6e7” , 瓦特?

控制台输出一下 0x6e71767  这是什么?下标?现在明白了吗?

还不明白?来再看看?从第一张图我们知道 通过 _0x3d3aca( 0x6e7) 取得参数,而刚刚已经将了  0x6e7 = 1767,  说明什么? 从此得出 _0x3d3aca 取出的参数结果是固定的, 那_0x3d3aca是什么?是不是等于一个变量?里面存储着大量的数据?还不懂? 控制台再来看看。Got it ?

 4.好了,回头看看通过全局查找来到这里下重新下断点, 像不像 python 类初始化参数?

现在 ”_arg“  已经出来了,同上再全局查找 “0x83e”

5. 来到 ”_arg“ 赋值的地方 这时 acToKen 已经出来了,继续跟进

6. 在跟到 h 的时候加密参数已经出现了,加密了一串字符串不知道什么玩意,但是又有点眼熟?

 7.  嚯嚯嚯是他是他就是他!她来了她来了!图中不难看出吧? Oa 加密了 a 字典?
a 的参数是什么?总感觉在哪见过?

 8. 还记得之前打卡的 b 包吗?我们来看看,经过多次调式,有一个值是固定不变的?

全局查找没有?接口查找有了!?OK,果不其然有个 d 包 返回的值。 

acToken分析总结: acToken 由 d 包返回 值加密一串神秘的字符串;打个卡 Oa,先分析到这里


六、分析未知的 d、b 包

d)

1. 已知 b 包通过 d 包获取到参数,先分析 d包,清除 cookie 进 d 包点 

2.目标出现~ 跟进 d 包点

 3.观察四周,发现目标;小心上当受骗;c 数组级联 e、f 数组,断点 $a()

 4. 进入 $a() 函数,初始化 m 字典 遍历字典,生成数组 F;

重点函数直接拿下;缺啥补啥会员肾宝片你值得拥有! 

5. 回到外部 进入 DC 函数,遍历字典 Ya 生成 数组 e 

 6.小技巧补充重点敲黑板: 关于字典的快速取值保存当前 JS 到本地

打开fiddler,勾选浏览器与fiddler服务 ,刷新浏览器,你编写的js就会被替换成本地的JS了,为所欲为,接

定义全局变量,放入里面,成功拿到 Ya 字典值

 d 包分析到此结束 测试结果 ↓


b)

1. b 包跟 d 包的请求方式加密方式基本一致 ,需要注意参数

 2. b包的参数基本可以固定, d.concat 的 d 要生成其他两个可以固定

 d、b包到这里就结束了

这个随机字符作用很大哦~

后续轨迹需要使用 随机且唯一 测试 ↓

接下来就是轨迹加密的重头戏了!决战时刻!!!


七、回到 acToKen 继续分析

1.还记得之前打卡的 Oa 函数吗?回头继续分析,通过 d、b包的分析,我们可以已知两个参数了

 acToKen 就这? 扣它就完事了,要是不行多喝点六味地黄丸、肾宝啥的补补

其实这个随机字符也可以固定写死,测试结果 ↓


 八、data 轨迹加密生成

1. 顾名思义、、、进去打卡 

 2. 这这这。。。轨迹的数组也加密了?没事咱先把加密函数 _0x277e54 拿下

 3.之前写fp的时候函数啥的基本都补齐了,这里还是很快的, 看看测试结果

 4. 轨迹的生成,全局查找 “0x481” 为什么查它? 之前已经解释了,这里不再复述

 5.这个地方很是可疑断点看看 

 6. 这不就出来了吗?轨迹加密之前扣data加密是有拿下的,直接使用

 

以上是关于JS逆向 --- 易盾有感滑块的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你玩转极验滑块JS逆向系列:滑块底层图片还原

手把手教你玩转极验滑块JS逆向系列:滑块底层图片还原

手把手教你玩转极验滑块JS逆向系列:滑块底层图片还原

爬虫反爬:JS逆向之实战3

2022-01-11JS逆向之拉钩登入(上)

爬虫反爬:JS逆向之实战3