-
-
[原创] 某网站极验逆向 v3.1.2
-
发表于: 2025-5-16 20:23 1892
-
jscrambler 混淆器,主要是可见性的问题,一些 unicode 字符的去除,还有 decodeURI
里面的内容不能直接解码,得用源代码保留
逆向该混淆器的时候有一些通用的模板
首先是类似于这样的形式的代码,我们通过查看能够知道 f3.$_Ct
是一个函数,通过输入对应的索引就能得出对应的字符串,类似于字符串池,而以下的代码有用的只有 v507
和 v509
其余的代码都是死代码( v510
几乎不会被用到)
没什么用的 switch
,单步即可
270
索引的字符串为 prototype
,而 f52
是一个函数,为的是给函数添加新的函数,类似于继承
73aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5i4y4K6M7r3!0J5N6q4)9J5k6h3u0A6L8r3W2T1K9h3I4A6i4K6u0W2j5$3!0E0i4K6u0r3P5q4)9J5c8Y4m8S2M7%4y4H3L8%4u0@1i4K6u0V1L8r3!0Y4K9h3&6Q4x3V1k6U0j5i4m8@1j5$3S2S2
该接口获取极验的 token、challenge、gt
获取参数
56fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2M7r3W2Q4x3X3g2Y4k6h3g2@1k6i4y4@1i4K6u0W2j5$3!0E0i4K6u0r3k6$3g2@1i4K6u0W2M7r3S2H3i4K6y4r3
该接口获取一些必要参数,后面要用到
获取极验图片
23cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6N6r3q4@1K9h3y4Q4x3X3g2Y4k6h3g2@1k6i4y4@1i4K6u0W2j5$3!0E0i4K6u0r3M7%4c8S2N6r3W2U0i4K6u0r3K9Y4y4Q4x3V1k6U0L8r3W2U0K9#2)9J5k6e0y4Q4x3X3f1I4i4K6u0W2x3W2)9J5k6h3A6K6
e01K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6N6r3q4@1K9h3y4Q4x3X3g2Y4k6h3g2@1k6i4y4@1i4K6u0W2j5$3!0E0i4K6u0r3M7%4c8S2N6r3W2U0i4K6u0r3K9Y4y4Q4x3V1k6Y4j5%4c8Q4x3X3g2T1y4K6q4S2z5e0l9J5y4K6f1H3z5h3u0U0y4X3u0U0k6X3g2X3z5h3k6U0y4X3p5I4z5e0j5@1x3U0c8X3y4g2)9J5k6h3A6K6
这两个 js
实现了极验的加密(下面详细讲)
becK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2M7r3W2Q4x3X3g2Y4k6h3g2@1k6i4y4@1i4K6u0W2j5$3!0E0i4K6u0r3j5h3A6S2P5q4)9J5k6i4m8Z5M7l9`.`.
该接口用于提交请求
点击验证提交
首先找到提交 post
请求的函数
post 提交
调用者上面就是请求的参数,可以很清晰的看到
通过查看,我们可以发现 gt
challenge
lang
在上述 get.php
的接口就可以找到,剩下的参数有 pt
client_type
w
生成的地方
通过搜索 643 这个索引即可找到赋值的地方,它由 v452
决定,可能为 0
或 3
我们通过索引 107
和 141
我们可以知道源代码长这样
而其中 v450 为 Navigator,是浏览器提供的结构,至此我们可以知道 pt
的值代表着 UA
字符串中是否 Mobi
字样,如果有,则为 3
,如果没有则为 0
在 pt
参数附近,见上图,也就是
翻译一下就是
同理,非 Mobi
字样 UA 选择 'web'
w
是一个组合的参数
分析该三个数据即可
其中主要的是 new vF6()[v2081(374)](this[v2081(750)](p538));
内部的函数调用 $_CACd
,而通过调试我们可以知道它会返回 v1811
,它从 vF9()
初始化得到
vF9
可知它返回一个 16 字符长度的字符串,也就是 AES key,然后该生成的随机 AES key 会通过 RSA 加密,其中构造 vF6
的时候会自动加载公钥,然后调用 encrypt
函数
通过断点 setPublic
我们可以知道它会获取公钥
这里它虽然写的是这个,但是后面的解析其实是不需要首部的 00
字节的,所以我们去掉 00
然后转换为 PEM
格式公钥
通过跟踪 encrypt
函数,我们可以从中发现填充的代码,通过动态跟踪我们可以知道这是 RSAES-PKCS1-v1_5
填充
至此我们分析完了 v2019 的流程,也就是随机生成 AES key,然后再拿 RSA
公钥加密 AES key,返回 hex
格式字符串
将 vO16
对象序列化,然后调用 AES
加密,密钥是刚刚生成的 AES key
跟踪到里面就可以获取 IV
是 0000000000000000
字符串,然后返回字节数组
赞赏
- [原创] 某网站极验逆向 v3.1.2 1893
- [原创] 某截图软件 ocr 功能逆向 4356