吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2897|回复: 20
收起左侧

[Web逆向] 【js逆向】某网课平台前端限制破除思路分析

  [复制链接]
LS_Liang 发表于 2023-8-13 10:53
最近在看视频学习。观看视频期间发现平台对视频窗口做了限制,无法将鼠标离开窗口,也无法快进。通过F12查看浏览器的网络面板看到会定时向后台发送视频观看的日志信息,修改其参数然后再发送发现会报错,于是便对其逻辑做了分析,顺便学习了一波前端破解
  • 破除鼠标无法离开窗口的限制

直接进入控制台中,查看【元素】-【事件监听器】,可以看到其添加了mouseout事件监听器,移除即可。
Pasted image 20230813081040.png
  • 视频日志URL参数构建分析

复制并查看视频观看记录请求包,发现`playingTime`,`enc`和`_t`参数一直在变,其中`playingTime`参数会每一分钟增加60,因此推测`playingTime`记录了视频观看打卡的日志。
[] 纯文本查看 复制代码
https://mooc1.xxxxxx.com/multimedia/log/a/325xxxx270/797608xxxxxx65265170xxxxf1d83e?clazzId=77735865&playingTime=125&duration=2369&clipTime=0_2369&objectId=8259bb87xxxxxxcbb4c86211aad9&otherInfo=nodeId_745347156-cpi_32xxxxxxxx_1-be_0_0-vt_1-v_6-enc_538a5dc1d7xxxxxxe0a9f021f0307998&courseId=234908773&jobid=1672133846352355&userid=28xxxxxx4&isdrag=3&view=pc&enc=97e121ea5ab03ea746fe4879c8&rt=0.9&dtype=Video&_t=1691885644798

直接修改`playingTime`参数发现请求会报错,推测与`enc`参数相关,下面就查找一下`enc`参数的生成过程。
进入【源代码】页面,找到【十几秒侦听器断点】,然后为选中XHR,为所有的ajax请求加入断点。
Pasted image 20230813082406.png
断点触发之后,可以在调用堆栈中看到对应的函数调用堆栈。然后一次点击不同的堆栈,依次点击不同的调用堆栈向上回溯。
Pasted image 20230813082536.png
回溯至`_0xa4b2fd`这个函数时发现有一段构造请求的代码,将鼠标放置url上还能看到对应的提示。点击该变量,发现该变量来自传入的参数,且为函数的第二个参数,继续回溯堆栈。
Pasted image 20230813083138.png
可以在该堆栈中找到URL变量的构建过程,_0x37a9a5这个变量便是传入的URL变量
Pasted image 20230813083505.png
根据该变量的声明过程,发现其中的` md5(_0x4555be)`函数表示`enc`参数。也可以知道`enc`参数是由md5哈希生成。
[] 纯文本查看 复制代码
_0x37a9a5 = [_0x46503e[_0x20f39c(0x3e0)], '/', _0x46503e[_0x20f39c(0x3a0)], _0x20f39c(0x33f), _0x46503e['clazzId'], _0x20f39c(0x213), _0x847d49, '&duration=', _0x46503e[_0x20f39c(0x3a7)], _0x20f39c(0x266), _0x133074, _0x20f39c(0x210), _0x46503e[_0x20f39c(0x475)], _0x20f39c(0x44a), _0x46503e[_0x20f39c(0x46a)], _0x20f39c(0x3ca), _0x46503e[_0x20f39c(0x3c8)], _0x20f39c(0x440), _0x46503e[_0x20f39c(0x4b7)], '&isdrag=', _0x478c58, '&view=pc', _0x20f39c(0x20f), md5(_0x4555be), _0x20f39c(0x34e), _0x46503e['rt'], _0x20f39c(0x27e), _0x20f39c(0x212), new Date()[_0x20f39c(0x2ee)]()][_0x20f39c(0x297)]('');
            _0xa4b2fd(_0x9289c, _0x37a9a5, _0x46503e[_0x20f39c(0x3c8)], _0x681ef6);
        };

此时可以在此处打一个断点,然后就可以获取传入`md5`函数的参数
Pasted image 20230813095634.png
Pasted image 20230813095721.png
分析传入的参数,发现其构成如下。由此可以确认该参数的生成方法。
[Asm] 纯文本查看 复制代码
md5([clazzId]+[userid]+[jobid]+[objectId]+[playingTime+"000"]+["d_yHJ!$pdA~5"]+[duration+"000"]+[clipTime])

进一步跟进`_0x4555be`变量,发现其创建过程如下。
[JavaScript] 纯文本查看 复制代码
var _0x4555be = Ext[_0x20f39c(0x3d7)][_0x20f39c(0x26b)](_0x58cdef, _0x46503e[_0x20f39c(0x28e)], _0x46503e[_0x20f39c(0x4b7)], _0x46503e[_0x20f39c(0x3c8)] || '', _0x46503e['objectId'], _0x2f17e7, _0x20f39c(0x1fb), _0x46503e['duration'] * 0x3e8, _0x133074)

开启一个隐私窗口,然后加载该JavaScript文件,发现传入的特殊字符串`d_yHJ!$pdA~5`未发生变化,因此确定该字符串是一个硬编码的值,可以直接使用。后面就是构造请求,然后发送,之后刷新页面,可以看到该视频已经成功被定位到目标地址。







Pasted image 20230813082406.png

免费评分

参与人数 3威望 +1 吾爱币 +21 热心值 +3 收起 理由
mengzhongxin + 1 我很赞同!
liuman02 + 1 + 1 谢谢@Thanks!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

wangguang 发表于 2023-8-14 15:31
楼主丢个链接给弟弟玩玩
Wisdom_xiaogui 发表于 2023-8-14 15:44
Pwaerm 发表于 2023-8-14 15:57
iimax 发表于 2023-8-14 17:06
看来是升级了,以前看视频发现鼠标移走就暂停,移除mouseout事件就行了
charleskao 发表于 2023-8-14 17:49
mouseout没有了
lfg1974 发表于 2023-8-14 18:24
谢谢分享
sinmu 发表于 2023-8-14 19:23
谢谢分享
ddvvc 发表于 2023-8-14 21:07
感谢分享
skzxx 发表于 2023-8-14 22:29
感谢分享,看看去
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-29 03:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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