李恒道 发表于 2022-3-10 15:34:48

[油猴脚本开发指南]超底层注入videojs

# 前文

觉得不继续分析太可惜了

枉我之前读了一上午videojs源码

壳儿,我就是这么真。

# 开始分析

我们之前利用的是`Component.registerComponent`来进行组件替换Player函数

进行构造前和构造后的劫持

但是超星新一次的更新过程中registerComponent进行了过滤

只要发现在替换name为Player即直接return

难道我们就要束手无策了么?

新的风暴已经出现!

我们怎能停滞不前?!

我们总结registerComponent的核心代码其实就两句

```javascript
      Component.components_ = ComponentToRegister;
      Component.components_ = ComponentToRegister;
```

其他的代码都是在做校验

也就是说最后是往

```javascript
Component.components_
```

进行赋值

那Component是啥

查阅源码可以找到

![图片.png](data/attachment/forum/202203/10/152857ztfa75t3vemmujay.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "图片.png")

这里Component是一个函数,然后获取了他的原型链叫_proto

![图片.png](data/attachment/forum/202203/10/152919iwbaeuwjhgp2uwjz.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "图片.png")

之后做大量的赋值处理

![图片.png](data/attachment/forum/202203/10/152959p1471nnn1nm1n1nc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "图片.png")

我们拖到最后发现发做完各种函数和原型函数处理,返回了Component

那么我们看看返回给了谁

![图片.png](data/attachment/forum/202203/10/153035ngrb76xpz7odz2to.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "图片.png")

返回给了Component$1

然后再下面两句做了一下兼容性处理

最后registerComponent自身

等等,自身?

那我们通过GetComponent岂不是就能拿到Component$1

再直接找到components里修改Player

这样就绕过了registerComponent函数的过滤检测

理论建立完毕

实践开始

```javascript
      let OriginPlayer = _self.videojs.getComponent('Player')
      let woailiyinhe = function (tag, options, ready) {
            let player = OriginPlayer.call(this, tag, options, ready)
            return player;
      }
      woailiyinhe.prototype = Object.create(OriginPlayer.prototype)
      _self.videojs.getComponent('Component').components_['Player'] = woailiyinhe
```

秒杀!

# 附注

你不仅仅可以修改Player

也可以考虑对其他的一些你想劫持的函数进行劫持

这几篇的核心意义不是在教大家修改videojs

而是在教大家如果通过阅读源码提升自我

以后碰到其他的问题,处理也会更加得心应手

# 结语

啾咪~

kltt1331 发表于 2022-3-10 16:35:55

支持加油

cocang 发表于 2022-3-10 17:27:47

ggnb
下一波和谐还远吗

李恒道 发表于 2022-3-10 17:38:16

cocang 发表于 2022-3-10 17:27
ggnb
下一波和谐还远吗

不知道...
我能感觉超星追着我搞
但是其实他们对videojs理解程度一般
只要想hook
光手里现在就还有三四种方法做注入
只是害怕法律风险了

kltt1331 发表于 2022-3-10 18:37:38

geigei,新人不了解,在哪安排呀

橙风啊 发表于 2022-3-10 18:59:56

李恒道 发表于 2022-3-10 17:38
不知道...
我能感觉超星追着我搞
但是其实他们对videojs理解程度一般


好家伙,要加班喽

橙风啊 发表于 2022-3-10 19:05:25

李恒道 发表于 2022-3-10 17:38
不知道...
我能感觉超星追着我搞
但是其实他们对videojs理解程度一般


对了,像秒过视频的操作还会有吗啊

李恒道 发表于 2022-3-10 19:09:42

kltt1331 发表于 2022-3-10 18:37
geigei,新人不了解,在哪安排呀

https://bbs.tampermonkey.net.cn/thread-15-1-1.html

李恒道 发表于 2022-3-10 19:10:00

橙风啊 发表于 2022-3-10 19:05
对了,像秒过视频的操作还会有吗啊

看情况吧...
继续针对我就不准备维护了

李恒道 发表于 2022-3-10 19:10:08

橙风啊 发表于 2022-3-10 19:05
对了,像秒过视频的操作还会有吗啊

现在秒过理论应该好使
我没测
页: [1] 2
查看完整版本: [油猴脚本开发指南]超底层注入videojs