反 devtools-detector 反调试 2

麻麻再也不怕 https://github.com/AEPKILL/devtools-detector 不让我调试啦!

作者
PYUDNG
日安装量
0
总安装量
478
评分
0 0 0
版本
0.2
创建于
2023-09-10
更新于
2023-09-10
许可证
GPL-v3
适用于

For Developers

针对一个应用较为广泛的devtools-detector进行了逆向破解,使其无法自动地检测开发者工具是否已经打开。
这个脚本是我之前写过的旧版的重制;同样的破解,使用了不同的方法,各有利弊,如果旧版无法成功解除开发者工具检测,可以使用此脚本。

使用此脚本,我默认你会javascript并且知道如何使用网页控制台
使用方法(以Chrome为例,其他浏览器同理):

  1. 首先安装好脚本。
  2. 在Tampermonkey用户匹配里添加含有devtools-detector的网址,或者把网址通过@match规则添加到脚本头部。
  3. 首先打开一个新的浏览器标签页,在这个标签页打开开发者工具。
  4. 切换到开发者工具的“网络”/“network”一栏,在顶栏中将“已停用节流模式”改成“高速3G”或者“低速3G”。这一步的目的在于使得脚本的加载早于网页devtools-detector的加载,所以到底使用“高速3G”还是“低速3G”取决于你的浏览器加载速度。
  5. 保持开发者工具打开状态,在这个标签页网址栏输入含有devtools-detector的网页网址,回车访问
  6. 等待网页加载,这时会弹出无限debugger;,在开发者工具的控制台一栏中能够看到绿色的disabling devtools detector...就说明脚本执行成功了
  7. 在开发者工具的源代码一栏中,找到'堆栈'一项,从上到下地,对其中的每一条堆栈都进行如下操作:
    1. 点击该条堆栈,这时应该看到显示的代码发生了变化
    2. 在控制台中输入this回车
    3. 如果回车后控制台输出了一个如下图所示的object那么就保持当前堆栈,跳出当前这第7步,继续执行下面的第8步
  8. 依次在控制台输入下面几行代码并回车:
    • this._listeners = [];
    • this._checkers = [];
    • this._detectLoopDelay = Infinity;
    • this.stop();
  9. 点击“已在调试程序中暂停”旁边的“继续执行”按钮,此时应该就已经没有无限debugger等反调试了。

已知问题:由于脚本hook了部分原型对象,可能会导致部分网页兼容性问题。