吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3170|回复: 18
收起左侧

[Web逆向] 某验3纯算逆向分析

  [复制链接]
jhdgff 发表于 2025-9-29 22:44
本帖最后由 jhdgff 于 2025-9-30 13:39 编辑

前言
js解混淆和风控一直是我的弱点,js混淆我基本都是强看写算法,最近逛了下吾爱,看了很多大佬对某验的分析,研究了一段时间,会了点ast看代码轻松好多啊,虽然有很多大佬研究了,但还是来献献丑混点cb,谢谢,没写过文章,多见谅下哈
声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关. 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除.
正文
那么,让我们开始吧
网址:aHR0cHMlM0ElMkYlMkZkZW1vcyUyRWdlZXRlc3QlMkVjb20lMkZzbGlkZSUyRGZsb2F0JTJFaHRtbA==
第一步先分析流程

第一步

第一步

总共6个请求
1-就是获取gt和challenge
2-获取第一次w加密需要的加密参
3-第一次w加密请求,我觉得是先给服务器钥匙,顺便获取过风控的类型,这一步如果把第二步返回参写死,可以不用2
4-第二次w加密请求,无感验证、认证了gt和challenge才能进行之后的步骤,上一步给他钥匙了,他就能看我们行为,过了才能继续
5-获取新参数,以便最后请求
6-最后一步w加密请求,根据滑动轨迹加密跟第一步w加密差不多
我们看了这几个请求知道了,加密参只有一个w需要解,至于callback,看时间戳多了就会知道callback=geetest_13位时间戳
第二步分析js文件,解混淆
我们根据w加密的请求知道了调用栈,主要都是fullpage和slide进行,那么我们先用ast解混淆,去看看吾爱中大佬发的解某验混淆把,我也刚学ast,就不误人子弟了
ast解他们,大概需要解ob混淆、合并switch语句、unicode解码,这三步完,在我来看够了,跟之前强看不知道幸福多少,你们有能力可以继续解花指令
刚入门可以想我一样解完一步,替换js文件测试过风控,看能不能行,能就继续下一步,不行就继续研究,或者强看,我是就只能解到合并switch,能力不足阿,哈哈哈...........
第三步分析js文件,解w算法
解第一步w算法
2.png
导入解完的js文件,根据请求调用栈我们知道第一步w是i+r
先解决r算法如何生成

r加密

r加密

跟进去我们知道e是undefind拿去生成什么数据,然后进行加密
跟栈,我们先进去x方法生成加密算法
4.png
你们有经验了就会知道这个是rsa中n,e生成pubkey公钥的,跟栈走下去你们也会看到
5.png
看这边不是写着rsapubkey,可能你们会觉得我逆完了,正向看肯定是这样,但是你们不懂可以先记下,想好大概流程,后面走完这个请求伪造试试嘛,试试又不会怀孕
我为什么说伪造请求试试,不是叫你们加密看看和浏览器对不对,rsa加密是非对称加密,每次加密都不一样的,有些可以对,有些对不了的
这个x()方法跟完后进去--e是undefind拿去生成什么东西的方法
6.png
这边又提示我们aeskey,姑且先记下来,继续跟栈
7.png
这个算法,自己多试几次就知道生成16位16进制随机数了,我们也给他记下来aeskey的值
然后拿去加密了,我们跟栈出来就是这个结果
8.png
这个结果没有=大小写字母混合,所以不是加密后base64编码,我看是加密后转16进制
接下去就是解o算法,这也是什么加密,跟进去看看
9.png
看这个3,是不是之前aeskey生成的,还有1中的iv,我们就能知道不是aes就是des,2这边也写了模式cbc
那我们可以根据4中的数据自己去写加密算法试试嘛,转成字节数组来对对这个s是不是一样,就会知道这个就是aes加密了,aes是对称加密可以拿来对的,还有这个e,其中参数有一部分不就是之前所得第二步请求返回参嘛
得出的o是数组,在进行i加密就能得到w了,跟进去
10.png
看这个会不会熟悉
11.png
所以我们可以得出这个是魔改的,那是不是换chars字符表就行了?试试呗
我得出来是不行哦,那照着js写这个算法呗,自己学着写写,不贴出来了,后面还有其他修改算法也要写的,不是像md5,base64,aes这些造好的轮子

mgbase64str

mgbase64str

像不像base64,=换了.,然后就是i、参数aes加密魔改base64编码加,r、我们猜rsa加密aeskey生成得16进制字符串
去试试呗,看看第一次w生成能不能过这个请求
解第二步w算法
第二步w和第一步不一样,没有rsa加密16进制字符串了,又要重新逆,下断点跟栈

第二步w算法

第二步w算法

熟不熟悉,那个又是我们之前得aeskey,根据抓包第二次w请求来对比,所以这个w加密大概是aes加密、魔改base64编码,所以我们现在要先解r的参数算法,找到这个方法最上层下断点
14.png
根据r中,第一个加密参tt,由e,t,n三个生成的,那先逆e,跟进去
15.png
16.png
e传进来的值是滑动轨迹列表、r则是轨迹差
我之前看了一个大佬文章,全程手撕很牛,他对这个无感验证有个思路很好,他说这个检测行为不会因为,我轨迹少就封我吧,我深以为然
所以这个轨迹想想,是个小彩蛋
继续往下走

行为列表

行为列表

这个轨迹差,重新整合了4个列表
18.png
行为列表、x、y、时间差列表,然后行为列表一个算法,其他三个一个算法,这几个算法都要手动还原,没有什么轮子
跟进f方法
19.png
大概就是根据行为得p中的值拿去运算,最后转为二进制,前面补零,在相加成为str
然后就是d算法
20.png
也是什么运算之后得到一个列表,再拿去转二进制,根据t判断是否需要多运算转二进制,再相加成为str
21.png
最后4个二进制str相加,余6,有剩补0,最后每6个转10进制对应chars的数,得出tt,这个可不是最后tt的值啊
t算法跟刚刚轨迹算法一样

t算法

t算法

不过进来的是空列表,生成的可以写死值
25.png
tt生成还需要一步,第一步w请求后返回的c、s拿去运算,这边的c、s才是t和n

n算法

n算法

这些win对象转74个-1再用magic data拼接
s 是无感认证时间,一定要比轨迹时间长
接下去就是twe_w_str json字符串拼接
24.png
s、h、hh、hi加密,本身str就是死值可以写死,要弄算法也行
s、h比hh、hi多了一层算法
26.png
熟悉不,之前叫你们自己练手的魔改base64

md5

md5

h算法根据这两个标记,大概可以确认md5,可以自己去试试,算法贴给gpt问问也行,这种表长整数的,基本都是有轮子的那种算法,不用手敲
写文章真的比我逆向还要累,我都敲了半天了....................有点烦,想直接贴
28.png
然后就是ep、passtime就是之前说的s值、rp就是gt+challenge+passtime拿去md5加密
ep去跟栈
29.png
fp是轨迹最开始运动的参,lp是最后的运动参、跟进em,不过都是死参
30.png
31.png
tm根据自己返回的参数对照的伪造吧

captcha

captcha

captcha,伪造没有任何意义,本身就是通过js代码生成的,真要计较,我们ast解码后的这个也不能用,只能写死
33.png

gmbadse64

gmbadse64

最后就是整合twe_w_str加密了,熟悉不?
这步请求完,再把第五步请求完,就剩第三个w加密了
解第三步w算法
35.png
这是第五步返回需要的参
challenge比原本多最后两位数,bg切割混乱的背景图、slice滑块图、s值

ut算法

ut算法

bg切割混乱的背景图Ut算法

图片还原

图片还原

bg还原图片,可以先等图片出来后,断着Canvas,按刷新直接就断到bg还原图片了,我Ut也是直接写死的
像这个bg图片还原、滑块x值,还有滑块轨迹都有现成的,k哥里面get_slide_track这个就能使用
原本我是想自己写轨迹的,x、y值好伪造,就是ts时间差没整好过不去,后续能力强了,自己多试试看行不行
38.png
终于到了最后的w生成,看抓包生成的w和第一次w生成差不多
39.png
先跟着找参数,最早轨迹生产加密算法在这,跟着进去
40.png
且听我说,1是滑动轨迹、2是滑动轨迹差,真正需要的是轨迹差、当每个轨迹差头两个差等于3中e的列表时则计算完生成str添加到i列表,不符合时候,就通过4步骤进入5中的n方法来计算str,添加到r、i中,o中单独计算轨迹差中的时间差,通过5中的n方法转换str
最后生成6中的r、i、n列表,再通过!!拼接,要记得这边也有个passtime,这个passtime就是根据轨迹差中的时间差总和
41.png
这个像不像第二次w中tt最后生成的算法
42.png
来咯,这个就是最后w生成算法了,刚刚生成的轨迹差参数就叫aa,现在我们继续逆userresponse
43.png
1中的t就是滑块滑倒缺口的x距离,e就是challge,在第五步返回的
2根据challge中最后两个参数进行36进制转10进制
3遍历challge的前32位,通过计算把c中没有key添加进去,最后再把计算的参添加到_列表中
4我也不懂这什么算法,gpt说是贪心算法,取随机数,最后就生成p了
不懂算法真没啥,这种照抄写成自己算法也不难,userresponse就出来了
imgload是图片载入时间,随机整数咯,自己伪造,然后进入ep
44.png
ep其他值都是死的,就tm和第二步一样,自己伪造咯
45.png
h9s9跟前面的captcha差不多,先是代码生成一个h9s9,在进入第二个p方法中重新生成新的h9s9,没意义,写死把
49.png
rp不是和之前第二次w生成一样嘛gt+challenge【:32】+passtime
46.png
通过抓包,我们也能猜出来最后w和第一次差不多,看这边是不是也很像第一次加密,只是加密参不同罢了
47.png
和第一次一样把,不过这个t是undefined,说明他重新生成了aeskey
48.png
aes加密,aeskey变了,加密参不就是我们前面逆的参
50.png
最后魔改base64加密,结束
第一次写这个,这么累,快敲了我一天时间,越写到后面越没耐心了,不好意思啊,下次改正,拜拜

免费评分

参与人数 19威望 +2 吾爱币 +117 热心值 +18 收起 理由
adlnb1 + 1 我很赞同!
中二 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cy51168 + 1 + 1 用心讨论,共获提升!
luoxiake + 1 + 1 我很赞同!
melooon + 1 + 1 我很赞同!
junjia215 + 1 + 1 谢谢@Thanks!
c271687388 + 1 + 1 用心讨论,共获提升!
fiscivaj + 1 我很赞同!
allspark + 1 + 1 用心讨论,共获提升!
user23456 + 1 + 1 谢谢@Thanks!
逍遥黑心 + 1 + 1 用心讨论,共获提升!
fengbolee + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
涛之雨 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Command + 1 + 1 我很赞同!
Issacclark1 + 1 谢谢@Thanks!
Yao2903 + 1 用心讨论,共获提升!
开心的一逼 + 1 + 1 热心回复!
buluo533 + 1 + 1 用心讨论,共获提升!
helian147 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fanqie8 发表于 2025-10-1 09:48
能逆,还能写出来真是厉害,厉害厉害,我有时候能搞出来,但不会写这么详细,也抓不住重点,胡搞,嘎嘎
buluo533 发表于 2025-9-30 09:21
mysticz 发表于 2025-9-30 11:34
 楼主| jhdgff 发表于 2025-9-30 13:41

我才是向你学习,大佬ast思路很好啊,我刚学ast顺着你思路都能写下去
buluo533 发表于 2025-9-30 18:17
jhdgff 发表于 2025-9-30 13:41
我才是向你学习,大佬ast思路很好啊,我刚学ast顺着你思路都能写下去

加油,你有大帝之资
imxz 发表于 2025-10-1 13:58
我反手一个Ctrl + M 保存楼主的帖子! 算我学到了!
开个玩笑, 楼主的帖子 很棒!
lengyanwl 发表于 2025-10-1 18:36
感谢分享~
a657938016 发表于 2025-10-1 19:41
牛逼啊,感谢分享,学习了,又get了新技能
TLcm 发表于 2025-10-3 16:41
t q l,又能进步了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-2-7 19:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表