浏览器魔改-从根本上通杀所有的无限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。让调试畅通无阻。

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

相关推荐
m0_敲代码的彭于晏1683 分钟前
Vercel 前端部署与全栈开发实战指南
前端·状态模式
徐小夕7 分钟前
花了3个月,我们做了一款 AI 版的“飞书文档”
前端·算法·github
贾伟康18 分钟前
【化学实验室|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
前端·移动开发·harmonyos·arkts·arkui
Csvn1 小时前
SSR/SSG/ISR(上):峡谷与渲染策略的时间预算
前端
Csvn1 小时前
SSR/SSG/ISR(下):可交互性、新鲜度与回源账
前端
酷炫码神2 小时前
Day 10|Pinia 状态管理:把散落在各组件的数据,收进一个全局仓库
android·开发语言·javascript
Elcker4 小时前
YnuoAgent(依诺):一个 npm 包,跑起属于自己的 AI 研发平台
前端·人工智能·npm
酷炫码神4 小时前
Day 8|Vue3 响应式:告别手动操作 DOM,让数据驱动界面
javascript·vue.js·ecmascript
计算机魔术师4 小时前
发现2天,修复2个月:AI挖穿PHP后,卡兹克讲透攻防时间差
前端
风骏时光牛马4 小时前
测试标题001
前端