瀏覽器魔改-從根本上通殺所有的無限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。讓調試暢通無阻。

浙公網安備 33010602011771號