LS_Liang 发表于 2023-8-13 10:53

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

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

[*]破除鼠标无法离开窗口的限制

直接进入控制台中,查看【元素】-【事件监听器】,可以看到其添加了mouseout事件监听器,移除即可。


[*]视频日志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请求加入断点。

断点触发之后,可以在调用堆栈中看到对应的函数调用堆栈。然后一次点击不同的堆栈,依次点击不同的调用堆栈向上回溯。

回溯至`_0xa4b2fd`这个函数时发现有一段构造请求的代码,将鼠标放置url上还能看到对应的提示。点击该变量,发现该变量来自传入的参数,且为函数的第二个参数,继续回溯堆栈。

可以在该堆栈中找到URL变量的构建过程,_0x37a9a5这个变量便是传入的URL变量

根据该变量的声明过程,发现其中的` md5(_0x4555be)`函数表示`enc`参数。也可以知道`enc`参数是由md5哈希生成。
_0x37a9a5 = , '/', _0x46503e, _0x20f39c(0x33f), _0x46503e['clazzId'], _0x20f39c(0x213), _0x847d49, '&duration=', _0x46503e, _0x20f39c(0x266), _0x133074, _0x20f39c(0x210), _0x46503e, _0x20f39c(0x44a), _0x46503e, _0x20f39c(0x3ca), _0x46503e, _0x20f39c(0x440), _0x46503e, '&isdrag=', _0x478c58, '&view=pc', _0x20f39c(0x20f), md5(_0x4555be), _0x20f39c(0x34e), _0x46503e['rt'], _0x20f39c(0x27e), _0x20f39c(0x212), new Date()()]('');
            _0xa4b2fd(_0x9289c, _0x37a9a5, _0x46503e, _0x681ef6);
      };
此时可以在此处打一个断点,然后就可以获取传入`md5`函数的参数


分析传入的参数,发现其构成如下。由此可以确认该参数的生成方法。
md5(+++++["d_yHJ!$pdA~5"]++)
进一步跟进`_0x4555be`变量,发现其创建过程如下。
var _0x4555be = Ext(_0x58cdef, _0x46503e, _0x46503e, _0x46503e || '', _0x46503e['objectId'], _0x2f17e7, _0x20f39c(0x1fb), _0x46503e['duration'] * 0x3e8, _0x133074)

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







wangguang 发表于 2023-8-14 15:31

楼主丢个链接给弟弟玩玩

Wisdom_xiaogui 发表于 2023-8-14 15:44

mooc1.beirenjy.com

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

感谢分享:lol

skzxx 发表于 2023-8-14 22:29

感谢分享,看看去
页: [1] 2 3
查看完整版本: 【js逆向】某网课平台前端限制破除思路分析