某smartedu分析

某 smartedu 分析
起因是某个智慧教育网站看视频不能倍速了(

原本倍速好好的结果突然就不行了(

初步分析

首先发现倍速调高了之后会出现弹窗提示不要倍速
某 smartedu 分析

直接搜了一遍 js,并没有,那说明代码可能是 eval 出来的,从其他地方切入吧

然后发现,弹窗了之后会把视频直接暂停,那么这个可以作为一个切入点。

直接下 media breakpoint 在 pause 上面

某 smartedu 分析
然后调高倍速,果不其然断了下来

查看一下函数堆栈,然后可以发现关键位置
某 smartedu 分析
这个 Me 函数是通过一个已经记录的视频播放的位置,然后通过系统时间减掉来判断真实的倍速,非常基础的一个反倍速。但是是在 eval 出来的代码里面,所以没法直接修改,我们继续看
某 smartedu 分析
下面的地方能找到 Fe 函数
某 smartedu 分析
整个网页是 React + Webpack,所以这个地方的 createElement 事实上是 React 的函数
然后把这个 check 函数给了这个 element

Patching

我最初的思路是拿个油猴去 hook 一下这个 createElement
但是好像不是很好拿到这个对象哎

所以我最后看了一下函数调用栈
发现这个 check 是以一个 Interval 运行的
但是这个 setInterval 是 webpack 生成的,不是系统那个
所以直接改就完事了
某 smartedu 分析
然后发现好像倍速太高了会触发另一个地方的 check

就是直接给拉回了,所以这个地方也需要 patch 一下,直接不让他搞小动作就可以了
某 smartedu 分析

正文完
 0
评论(没有评论)