李恒道 发表于 2022-11-3 21:51:35

[油猴脚本开发指南]实战4399flash反无限debugger反反开发者调试

# 前言
突然无聊想搞个4399的swf下载脚本
然后发现4399已经搞的非常恶心了
大概有无限debugger+ob混淆+反开发者窗口打开+来路校验balabalabala
已经不是我童年的白月光了~
正好还算是比较基础又对新手有一点挑战
所以决定记录一下
# 开始
目标网址
https://www.4399.com/flash/90302_3.htm
首先他禁止打开了开发者工具
一般会对key的键值进行阻断
也就是f12 Ctrl+Shift+I
我们通过右上角的工具-》更多工具-》开发者工具,即可打开
![图片.png](data/attachment/forum/202211/03/214547wk4j0d7n4vbqkj4s.png)
因为他大部分代码还是没花的
所以直接搜f12的键值 123
找到了keydown的监听
![图片.png](data/attachment/forum/202211/03/214652lnf1gg9ry4u0y1p6.png)
jq的代码是使用的addeventlistener
那我们直接对其进行劫持,因为我观察只有两个keydown,也就是截图中的两个
所以直接无脑过滤就行了
```javascript
// @run-at       document-start抢先注入哦
let oldadd = EventTarget.prototype.addEventListener
EventTarget.prototype.addEventListener = function (...args) {
    if (args === 'keydown') {
      return;
    }
    return oldadd.call(this, ...args)
}
```
这样就解除了f12的问题
然后发现存在无限debugger
直接卡在了这里
![图片.png](data/attachment/forum/202211/03/214802cittu715w17mew7c.png)
观察使用了setinterval函数
那直接对setinterval函数做劫持
将传入的函数用toString字符化然后搜索特定的字符串,如果搜到了就不进行调用
```
let inter = unsafeWindow.setInterval
unsafeWindow.setInterval = function (func, time) {
    if (func.toString().indexOf('clearInterval(_windon_handler)') !== -1)   {
      return
    }
    return inter.call(this, func, time)

}
```
这处过了之后发现上方还有一个
使用setinterval定时回调,并在下方也调用一次,那我们思路还是比较简单的
![图片.png](data/attachment/forum/202211/03/214928lmjwycfjwjjymrqz.png)
直接对setinterval劫持,并且检查是否存在check,如果存在,则提前用Object.defineproperty冻结掉属性
完整代码如下
```javascript
let inter = unsafeWindow.setInterval
unsafeWindow.setInterval = function (func, time) {
    if (func.toString().indexOf('check()') !== -1) {
      Object.defineProperty(unsafeWindow, "check", {
            value: () => { },
            writable: false,
            configurable: false
      });
      return
    }
    if (func.toString().indexOf('clearInterval(_windon_handler)') !== -1) {
      return
    }
    return inter.call(this, func, time)

}
```
这样我们就可以正常打开f12并不存在debugger了~
开始愉快的分析吧
![图片.png](data/attachment/forum/202211/03/215113qy9qt6nwrjjva9rn.png)
# 结语
撒花~


王一之 发表于 2022-11-3 22:04:09

就是这篇文章发表失败了么?

朱焱伟 发表于 2022-11-3 22:11:28

(https://ruffle.rs/demo/)

李恒道 发表于 2022-11-3 22:16:07

朱焱伟 发表于 2022-11-3 22:11
(https://ruffle.rs/demo/)

爱了~

wwwwwllllk 发表于 2022-11-3 22:56:26

直接鼠标移动url地址上按F12就可以了

李恒道 发表于 2022-11-3 23:10:07

wwwwwllllk 发表于 2022-11-3 22:56
直接鼠标移动url地址上按F12就可以了

我草
学到了
社会啊
页: [1]
查看完整版本: [油猴脚本开发指南]实战4399flash反无限debugger反反开发者调试