首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
WEB安全
发新帖
2
25
【JS逆向】某网站加速乐逆向解混淆
发表于: 2025-3-27 21:16
6821
【JS逆向】某网站加速乐逆向解混淆
ShriyGo
2025-3-27 21:16
6821
网址:aHR0cHM6Ly95cC4xMjBhc2suY29tL3NlYXJjaC81LTI4My5odG1s 视频教程:<a href="elink@0c1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2T1K9h3I4A6j5X3W2D9K9g2)9J5k6h3y4G2L8g2)9J5c8Y4k6A6k6r3g2G2i4K6u0r3b7W2j5I4e0U0y4j5g2q4W2b7c8h3&6r3">视频</a> # 1. 分析请求 打开F12抓包观察  加速乐经典两次521,由于页面已经加载成功,两次521的请求响应看不到,清除cookie再下个script断点继续观察。 ## 1.1. 清除cookie  ## 1.2. 下断点访问  ## 1.3. 第一次521  拿出来看看。 ```javascript document.cookie = ('_') + ('_') + ('j') + ('s') + ('l') + ('_') + ('c') + ('l') + ('e') + ('a') + ('r') + ('a') + ('n') + ('c') + ('e') + ('_') + ('s') + ('=') + ((+true) + '') + (1 + 6 + '') + (1 + 3 + '') + (-~1 + '') + (0 + 1 + 0 + 1 + '') + (1 + [0] - (1) + '') + ([3] * (3) + '') + (9 - 1 * 2 + '') + ((1 + [2]) / [2] + '') + (([2] + 0 >> 2) + '') + ('.') + (-~[5] + '') + (-~[6] + '') + (7 + '') + ('|') + ('-') + ((+true) + '') + ('|') + ('d') + ('W') + ('S') + ('x') + ('Z') + ('R') + ('l') + ('N') + ('N') + ('K') + ('z') + ('I') + ('V') + ('E') + (~~[] + '') + ((2 << 2) + '') + ('l') + ('Z') + ('v') + (1 + 8 + '') + ('T') + (5 + '') + ('D') + ('m') + ('G') + ('j') + ('Q') + ('%') + ((1 + [2] >> 2) + '') + ('D') + (';') + (' ') + ('M') + ('a') + ('x') + ('-') + ('a') + ('g') + ('e') + ('=') + (1 + 2 + '') + ([2] * (3) + '') + ((+[]) + '') + (~~[] + '') + (';') + (' ') + ('P') + ('a') + ('t') + ('h') + ('=') + ('/') + (';') + (' ') + ('S') + ('a') + ('m') + ('e') + ('S') + ('i') + ('t') + ('e') + ('=') + ('N') + ('o') + ('n') + ('e') + (';') + (' ') + ('S') + ('e') + ('c') + ('u') + ('r') + ('e'); location.href = location.pathname + location.search ``` 简单,直接执行即可拿到第一次的cookie。  ## 1.4. 第二次521 继续放行,直到断住第二次521 再观察本次请求头特征,携带的cookie正是第一次521生成的cookie  ## 1.5. 继续放行 继续放行,页面加载成功,发现__jsl_clearance_s值已经发生变化  # 2. 流程分析 整体流程如下: 1. 第一次请求返回521,一段js生成第一次__jsl_clearance_s 2. 第二次请求携带第一次生成的__jsl_clearance_s,并通过js加载生成第二次__jsl_clearance_s 3. 最终请求携带第二次__jsl_clearance_s,即可加载成功 第一次521的cookie值很容易获取,执行js即可。 第二次521的js需要逆向分析 # 3. 第二次521分析 ## 3.1. 解混淆  观察代码发现OB混淆三个特征(大数组、数组位移、解密函数)。 看到一个OB混淆,正好最近在学习AST,拿来还原练手。完整解混淆流程在:<a href="elink@13dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2T1K9h3I4A6j5X3W2D9K9g2)9J5k6h3y4G2L8g2)9J5c8Y4k6A6k6r3g2G2i4K6u0r3b7W2j5I4e0U0y4j5g2q4W2b7c8h3&6r3">视频</a> ## 3.2. js分析 解混淆后观察代码结构:  2个大方法,调用了go方法,传入了一个对象,继续分析go方法   cookie来自于_0x4bcd58,_0x4bcd58来自于 _0x583426[0],_0x583426[0]来自于_0x583426,所以下面代码可以全部干掉  此时目标就是看_0x583426的逻辑了,精简后的go方法代码如下。 ```plain function go(_0x2d1873) { var _0x5a9eea = new Date(); function _0xfa0964(_0x3ef848, _0x2dee2) { var _0x1ed308 = _0x2d1873["chars"]["length"]; for (var _0x56d891 = 0; _0x56d891 < _0x1ed308; _0x56d891++) { for (var _0x479e66 = 0; _0x479e66 < _0x1ed308; _0x479e66++) { if ("VhzfI" !== "FDcqf") { var _0xeeecec = _0x2dee2[0] + _0x2d1873["chars"]["substr"](_0x56d891, 1) + _0x2d1873["chars"]["substr"](_0x479e66, 1) + _0x2dee2[1]; if (hash(_0xeeecec) == _0x3ef848) { if ("NaMJk" === "NaMJk") { return [_0xeeecec, new Date() - _0x5a9eea]; } else { blks[_0x56d891] = 0; } } } else { return !![]; } } } } ; var _0x583426 = _0xfa0964(_0x2d1873['ct'], _0x2d1873["bts"]); console.log(_0x583426); } ``` debug看看。  大致分析如上,最终代码如下: ```plain var CryptoJS = require('crypto-js') function dynamicHash(algorithm, data) { try { // 根据算法名称选择对应的哈希函数 const hashFunctions = { 'md5': CryptoJS.MD5, 'sha1': CryptoJS.SHA1, 'sha224': CryptoJS.SHA224, 'sha256': CryptoJS.SHA256, 'sha384': CryptoJS.SHA384, 'sha512': CryptoJS.SHA512, 'sha3': CryptoJS.SHA3 }; if (!hashFunctions[algorithm]) { throw new Error(`Unsupported algorithm: ${algorithm}`); } // 计算哈希值 const hash = hashFunctions[algorithm](data); return hash.toString(CryptoJS.enc.Hex); // 返回十六进制字符串 } catch (error) { return `Error: ${error.message}`; } } function getCookie(_0x52e87e) { _0x52e87e = JSON.parse(_0x52e87e); console.log(_0x52e87e); var _0x171118 = new Date(); function _0x18b9db(_0x3a9f8b, _0x28ec7f) { var _0x15f5ed = _0x52e87e["chars"]["length"]; for (var _0x4184d5 = 0; _0x4184d5 < _0x15f5ed; _0x4184d5++) { for (var _0x19da6b = 0; _0x19da6b < _0x15f5ed; _0x19da6b++) { var _0x44455a = _0x28ec7f[0] + _0x52e87e["chars"]["substr"](_0x4184d5, 1) + _0x52e87e["chars"]["substr"](_0x19da6b, 1) + _0x28ec7f[1]; if (dynamicHash(_0x52e87e['ha'],_0x44455a) == _0x3a9f8b) { return [_0x44455a, new Date() - _0x171118]; } } } } var _0x41c42e = _0x18b9db(_0x52e87e['ct'], _0x52e87e["bts"]); console.log(_0x41c42e[0]); return _0x41c42e[0]; } param = { "bts": ["1741572280.105|0|muv", "sjo3nn%2FimqQAhNp9X1aCuY%3D"], "chars": "TqPahdOXDzvVxEzQfGHK5v", "ct": "d38f1d26d274ebfb77ae39fda3893f0611b8256716fa6ce1a11a1bba7feaedcf", "ha": "sha256", "is": true, "tn": "__jsl_clearance_s", "vt": "3600", "wt": "1500" } param1 = {"bts":["1741586083.055|0|8CI","B7T2GJJz%2FcUdeHFkRe6pg3bg%3D"],"chars":"YSmMypDsqQ2ohC%jibqXLT","ct":"460ea567c075a1ae6961688fdfb94b90ad348834","ha":"sha1","is":true,"tn":"__jsl_clearance_s","vt":"3600","wt":"1500"} // getCookie(param1) getCookie('{"bts":["1741586083.055|0|8CI","B7T2GJJz%2FcUdeHFkRe6pg3bg%3D"],"chars":"YSmMypDsqQ2ohC%jibqXLT","ct":"460ea567c075a1ae6961688fdfb94b90ad348834","ha":"sha1","is":true,"tn":"__jsl_clearance_s","vt":"3600","wt":"1500"}') ``` 注意这里去掉了hash方法,因为每次返回的js不一样,其本质算法就是拿出当前这次js的参数里面的ha值,代表对应的哈希算法,经过运算比对处理后生成新的__jsl_clearance_s,至此流程全部结束。 # 4. 测试 没毛病,完成
回复或点赞可查看完整内容
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
收藏
・
2
点赞
・
25
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
mb_lthgjpwj
为你点赞!
2026-8-21 09:25
afishlong
为你点赞!
2026-7-14 18:47
npc0vo
你的帖子非常有用,感谢分享!
2026-4-25 21:47
58582404
感谢你的贡献,论坛因你而更加精彩!
2026-2-1 10:44
mb_tctjrkss
为你点赞!
2025-12-30 08:50
LIU.YZ
这个讨论对我很有帮助,谢谢!
2025-12-23 15:55
TheNightLord
感谢你分享这么好的资源!
2025-12-19 13:18
mb_dpdsgqgj
感谢你的积极参与,期待更多精彩内容!
2025-10-6 09:10
Lafu
非常支持你的观点!
2025-9-29 15:45
mb_iarusbyx
期待更多优质内容的分享,论坛有你更精彩!
2025-9-29 09:09
mb_rqgxdcwg
感谢你的积极参与,期待更多精彩内容!
2025-9-19 14:43
赵将李牧
非常支持你的观点!
2025-9-15 11:14
SuEmiya
这个讨论对我很有帮助,谢谢!
2025-8-16 17:46
mb_lqbdyaym
感谢你的贡献,论坛因你而更加精彩!
2025-8-14 16:10
mb_hzvbvwsa
谢谢你的细致分析,受益匪浅!
2025-8-5 09:55
mb_tjsrxqxh
非常支持你的观点!
2025-8-5 02:06
kclonline
为你点赞!
2025-7-19 08:04
ALG
为你点赞!
2025-4-22 13:47
mb_gxfvzbud
谢谢你的细致分析,受益匪浅!
2025-4-22 10:47
冷冷的崽崽
谢谢你的细致分析,受益匪浅!
2025-4-16 13:20
爱吃菠菜
为你点赞!
2025-4-5 11:48
大肠刺身
你的分享对大家帮助很大,非常感谢!
2025-3-30 12:08
顽劣
感谢你的贡献,论坛因你而更加精彩!
2025-3-28 09:49
mystica
谢谢你的细致分析,受益匪浅!
2025-3-27 22:49
huangyalei
期待更多优质内容的分享,论坛有你更精彩!
2025-3-27 22:47
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
12
)
Losir
雪 币:
324
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
11
粉丝
1
关注
私信
Losir
2
楼
看看完整版
2025-3-30 01:17
2
百事可乐就好
雪 币:
1867
活跃值:
(1481)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
14
粉丝
0
关注
私信
百事可乐就好
3
楼
666
2025-3-30 21:46
0
wx_简单_549
雪 币:
13
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
2
粉丝
0
关注
私信
wx_简单_549
4
楼
66666
2025-7-13 15:13
0
mb_jozguahv
雪 币:
230
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
1
粉丝
0
关注
私信
mb_jozguahv
5
楼
2025-7-19 00:08
0
mb_sdvjpqrb
雪 币:
92
活跃值:
(353)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
8
粉丝
0
关注
私信
mb_sdvjpqrb
6
楼
2025-8-4 15:29
0
小李同学_
雪 币:
0
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
4
粉丝
0
关注
私信
小李同学_
7
楼
666
2025-9-1 14:52
0
atompure
雪 币:
24461
活跃值:
(7370)
能力值:
( LV3,RANK:20 )
在线值:
发帖
6
回帖
280
粉丝
3
关注
私信
atompure
8
楼
学习一下,谢谢
2025-9-1 21:15
0
勒LI
雪 币:
58
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
74
粉丝
0
关注
私信
勒LI
9
楼
66,学习
2025-11-18 15:54
0
mb_ejimlmwd
雪 币:
0
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
12
粉丝
0
关注
私信
mb_ejimlmwd
10
楼
66,学习
2025-11-28 15:12
0
mb_dfpmyfye
雪 币:
210
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
1
粉丝
0
关注
私信
mb_dfpmyfye
11
楼
学习了!
2025-12-19 11:17
0
淡然他徒弟
雪 币:
5589
活跃值:
(7258)
能力值:
( LV10,RANK:160 )
在线值:
发帖
23
回帖
296
粉丝
124
关注
私信
淡然他徒弟
1
12
楼
mark
2025-12-19 12:58
0
老小白
雪 币:
2021
活跃值:
(3866)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
11
粉丝
1
关注
私信
老小白
13
楼
666
2026-1-5 16:57
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
ShriyGo
4
发帖
12
回帖
20
RANK
关注
私信
他的文章
【JS逆向】某条signature逆向补环境
7225
【JS逆向】yun片滑块验证码逆向
15039
【JS逆向】某网站加速乐逆向解混淆
6821
【JS逆向】某验三代点选逆向分析
14945
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部