chromium魔改——绕过无限debugger反调试

在操作以下内容之前,请先完成这个文章中的内容 源码拉取及编译

如果你已经完成了文章中的配置,就可以进行下面的操作了。


在浏览器中实现"无限 debugger"的反调试技术是一种常见的手段,用于防止他人通过开发者工具对网页进行调试或逆向分析。这种技术的核心是利用 JavaScript 的 debugger 语句,当开发者工具打开时,debugger 会触发断点,从而阻止代码继续执行。

以下是如何实现"无限 debugger"的几种方式

使用 setInterval

javascript 复制代码
setInterval(() => {
    debugger;
}, 100);

递归调用

javascript 复制代码
function infiniteDebugger() {
    debugger;
    infiniteDebugger();
}
infiniteDebugger();

事件监听

javascript 复制代码
document.addEventListener('keydown', (event) => {
    if (event.key === 'F12' || (event.ctrlKey && event.shiftKey && event.key === 'I')) {
        debugger;
    }
});

document.addEventListener('contextmenu', (event) => {
    debugger;
});

检测开发者工具状态

javascript 复制代码
setInterval(() => {
    const start = performance.now();
    debugger;
    const end = performance.now();

    // 如果执行时间过长,说明开发者工具可能已打开
    if (end - start > 100) {
        console.clear(); // 清空控制台
        debugger; // 再次触发断点
    }
}, 500);

使用console.debug

javascript 复制代码
const hook = new Error()
let num = -1
Object.defineProperty(hook, "stack", {
    get: function () {
        num += 1
        num ? debugger : ''
        return num;
    }
});
function isOpenDevTool() {
    num = -1
    console.debug(hook);
    hook.stack
    requestAnimationFrame(isOpenDevTool);
}
requestAnimationFrame(isOpenDevTool);

在了解实现原理后,我们现在的思路是让 debugger 关键字像 JavaScript 中的其他独立关键字一样,无需特定上下文即可单独执行。以下是一些可以在 JavaScript 中独立执行且不需要特定上下文的关键字示例:

javascript 复制代码
true;
false;
this;
null;
undefined;
NaN;
Infinity;
-Infinity;

这些关键字在 JavaScript 中具有独立的意义和用途,我们的目标是使 debugger 关键字也能以类似的方式运行。

以下为修改路径

sh 复制代码
\src\v8\src\parsing\keywords-gen.h

我们将debugger关键字改成和null一样,当然,你也可以改成其他的,前提是这个关键字可以单独运行,不依赖其他参数和上下文。 修改保存之后,执行以下命编译

sh 复制代码
autoninja -C out/Default chrome

验证一下结果,可以看到,运行debugger和null是等价的,这样,他几不会报错,也不会断点卡住。

相关推荐
林深现海11 分钟前
Jetson Orin nano/nx刷机后无法打开chrome/firefox浏览器
前端·chrome·firefox
喵手3 小时前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储
摘星|3 小时前
正则匹配与爬虫爬取图片路径综合练习
爬虫
喵手3 小时前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出
子兮曰4 小时前
深入浏览器指纹:Canvas、WebGL、Audio是如何暴露你的身份的?
前端·浏览器·canvas
0思必得04 小时前
[Web自动化] Selenium获取元素的子元素
前端·爬虫·selenium·自动化·web自动化
John_ToDebug5 小时前
引擎深处的漫游者:构建浏览器JavaScript引擎的哲学与技艺
javascript·chrome·js
senijusene6 小时前
Linux软件编程: Linux 操作系统基础与shell脚本
linux·运维·chrome
搂着猫睡的小鱼鱼17 小时前
Ozon 商品页数据解析与提取 API
爬虫·php
深蓝电商API18 小时前
住宅代理与数据中心代理在爬虫中的选择
爬虫·python