浏览器魔改-从根本上通杀所有的无限debugger

😀 今天我们来讲一下如何修改源代码,让无限debugger失效,然后重新定一个别的关键词来实现无线debugger。

📝 主旨内容

定位位置

搜索关键字debugger

我们要知道这个关键词字其实就是V8引擎的功能,他在nodejs中也有这个功能。所以我们需要把目标放在V8引擎上。在这个文件夹目录下去搜索这个关键字。

image.png

我们看到其实有很多结果,但是我们这里js文件肯定不是直接排除掉。我们主要关注的是.h的文件。

最后找到:F:\chromiumPWD\chromium\src\v8\src\parsing\keywords-gen.h

这个路径,这个就是我们今天需要修改的文件。

修改源码

通过修改源代码,实现我们需要的功能。

image.png

可以看到这里其实是我已经初步修改过的,我们需要的是把debugger修改成kFalseLiteral,也就是我们在JavaScript中的false,使其无效,但是要不会出现异常。

然后我们在定义一个debuggel使其复原这个关键字的功能。

image.png

然后再最后的一行在换成debugger

image.png

  • 原本 debugger 关键字应当映射到 Token::kDebugger

  • 但这里将 debugger 的映射 删除 ,并错误地用 "debuggel" 代替,导致 debugger 无法正确解析

  • 后续 又在哈希表 末尾 重新添加 "debugger", Token::kFalseLiteral,这意味着:

    • 解析 "debugger" 关键字时,可能会被识别为 Token::kFalseLiteral,导致 JavaScript 代码解析错误。

然后再进行追加代码

image.png

  • 这个 if 语句强行将 所有长度 >=8 且匹配 "debugger" 的字符串 的哈希索引 key 设为 127,即指向 {"debugger", Token::kFalseLiteral}

  • 这意味着:

    • 所有 "debugger" 关键字 都会被解析为 Token::kFalseLiteral,而不会触发 JavaScript 调试功能。

然后我们在重新编译。

我们在看一下效果

image.png

我们可以看到这里其实他已经无效了。

🤗 总结归纳

从chromium源代码入手可以让其无感的通杀所有的无限debugger。让调试畅通无阻。

更多精彩文章,请移步到这里观看。

相关推荐
I'mxx5 分钟前
【vue(一))路由】
前端·javascript·vue.js
CF14年老兵7 分钟前
构建闪电级i18n替代方案:我为何抛弃i18next选择原生JavaScript
前端·react.js·trae
布兰妮甜8 分钟前
Vite 为什么比 Webpack 快?原理深度分析
前端·webpack·node.js·vite
EndingCoder19 分钟前
Chrome插件开发实战:从零开发高效Chrome插件,提升浏览器生产力
前端·chrome
芝士加20 分钟前
从双端到一次搞定,一个老码农的真香体验
前端·开源
白云~️43 分钟前
html img标签设置默认图片,防止图片路径不存在导致图片不展示影响页面美观
java·前端·html
xixixin_1 小时前
【HTML】在页面中画一条0.5px的线
前端·css·uni-app·html·css3
前端小巷子1 小时前
深入 Vue 的 nextTick
前端·vue.js·面试
JefferyXZF1 小时前
Next.js 15 数据获取指南:掌握服务器组件与客户端数据流(七)
前端·全栈·next.js
王柏龙1 小时前
css 属性@font-face介绍
前端·css