chromium魔改——繞過無限debugger反調試

在進行以下操作之前,請確保已完成之前文章中提到的 源碼拉取及編譯 部分。

如果已順利完成相關配置,即可繼續執行后續操作。


在瀏覽器中實現“無限 debugger”的反調試技術是一種常見的手段,用于防止他人通過開發者工具對網頁進行調試或逆向分析。這種技術的核心是利用 JavaScript 的 debugger 語句,當開發者工具打開時,debugger 會觸發斷點,從而阻止代碼繼續執行。

以下是如何實現“無限 debugger”的幾種方式

使用 setInterval

setInterval(() => {debugger;
}, 100);

遞歸調用

function infiniteDebugger() {debugger;infiniteDebugger();
}
infiniteDebugger();

事件監聽

document.addEventListener('keydown', (event) => {if (event.key === 'F12' || (event.ctrlKey && event.shiftKey && event.key === 'I')) {debugger;}
});document.addEventListener('contextmenu', (event) => {debugger;
});

檢測開發者工具狀態

setInterval(() => {const start = performance.now();debugger;const end = performance.now();// 如果執行時間過長,說明開發者工具可能已打開if (end - start > 100) {console.clear(); // 清空控制臺debugger; // 再次觸發斷點}
}, 500);

使用console.debug

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

在了解實現原理后,我們現在的思路是讓 debugger 關鍵字像 JavaScript 中的其他獨立關鍵字一樣,無需特定上下文即可單獨執行。以下是一些可以在 JavaScript 中獨立執行且不需要特定上下文的關鍵字示例:

true;
false;
this;
null;
undefined;
NaN;
Infinity;
-Infinity;

這些關鍵字在 JavaScript 中具有獨立的意義和用途,我們的目標是使 debugger 關鍵字也能以類似的方式運行。

以下為修改路徑

\src\v8\src\parsing\keywords-gen.h

我們將 debugger 關鍵字替換為與 null 等效的值。當然,也可以選擇其他關鍵字,但需確保其能夠獨立運行,且不依賴任何參數或上下文環境。

在這里插入圖片描述
修改保存之后,執行以下命編譯

autoninja -C out/Default chrome

經過驗證可以發現,運行 debugger 語句的效果與返回 null 是等價的。這種情況下,程序既不會拋出錯誤,也不會因斷點而中斷執行。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74556.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74556.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74556.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在win11 環境下 新安裝 WSL ubuntu + 換國內鏡像源 + ssh + 桌面環境 + Pyhton 環境 + vim 設置插件安裝

在win11 環境下 新安裝 WSL ubuntu ssh gnome 桌面環境 Pyhton 環境 vim 設置插件安裝 簡單介紹詳細流程換國內鏡像源安裝 ssh 桌面環境python 環境vim 設置插件安裝 簡單介紹 內容有點長,這里就先簡單描述內容了。主要是快速在 Win11 搭建一個 wsl 的 linux 環…

python 命名空間與作用域 可變與不可變對象 閉包

python 命名空間與作用域 可變與不可變對象 閉包 作用域規則順序為: L->E->G->B 如果變量在局部內找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再找不到就去內置中找。 若要在函…

安裝 TabbyAPI+Exllamav2 和 vLLM 的詳細步驟

在 5090 顯卡上成功安裝 TabbyAPIExllamav2 和 vLLM 并非易事,經過一番摸索,我總結了以下詳細步驟,希望能幫助大家少走彎路。 重要提示: 用戶提供的 PyTorch 安裝使用了 cu128,這并非標準 CUDA 版本。請根據你的系統實…

使用url-loader處理圖片等資源文件

🤍 前端開發工程師、技術日更博主、已過CET6 🍨 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 🕠 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 🍚 藍橋云課簽約作者、…

EIP-712:類型化結構化數據的哈希與簽名

1. 引言 以太坊 EIP-712: 類型化結構化數據的哈希與簽名,是一種用于對類型化結構化數據(而不僅僅是字節串)進行哈希和簽名 的標準。 其包括: 編碼函數正確性的理論框架,類似于 Solidity 結構體并兼容的結構化數據規…

contourformer:實時的輪廓分割transformer

論文地址:https://arxiv.org/abs/2501.17688 github:https://github.com/talebolano/Contourformer 模型結構 框架建立在 D-FINE 對象檢測模型之上,并將邊界框的回歸擴展到輪廓的回歸。為了實現高效的訓練,Contourformer 采用迭代方法進行輪廓變形,并引入降噪機制來加速…

【JavaScript】原型鏈 prototype 和 this 關鍵字的練習(老虎機)

這個老虎機練習主要考察JavaScript中的原型鏈(prototype)和this關鍵字的使用。 主要思路 創建三個輪盤(reels)實例:我們需要創建3個獨立的輪盤對象,它們都委托(delegate)到基礎的ree…

vue項目data functions should return an object

在vue項目中提示錯誤,data functions should return an object Message.error(err)錯了,Message.error()是element-ui的組件,只能接受字符串,不能接受對象。 改為Message.error(err.message)就好了 我的錯誤是 Message.error(er…

leetcode刷題 - 數組理論基礎

數組是內存空間連續存儲、相同類型數據的集合。遍歷方式:下標索引 下標:從 0 開始 數組的元素不能刪除,只能覆蓋 定義一維數組: int arr0[10]; int arr1[10] { 100, 90,80,70,60,50,40,30,20,10 }; int arr2[ ] { 100,90,80,7…

狀態機思想編程練習

狀態機實現LED流水燈 本次實驗,我們將利用狀態機的思想來進行Verilog編程實現一個LED流水燈,并通過Modelsim來進行模擬仿真,再到DE2-115開發板上進行驗證。 ? 首先進行主要代碼的編寫。 module led (input sys_clk,input sys_…

數據結構|排序算法(一)快速排序

一、排序概念 排序是數據結構中的一個重要概念,它是指將一組數據元素按照特定的順序進行排列的過程,默認是從小到大排序。 常見的八大排序算法: 插入排序、希爾排序、冒泡排序、快速排序、選擇排序、堆排序、歸并排序、基數排序 二、快速…

如何確保MQ消息隊列不丟失:Java實現與流程分析

前言 在分布式系統中,消息隊列(Message Queue, MQ)是核心組件之一,用于解耦系統、異步處理和削峰填谷。然而,消息的可靠性傳遞是使用MQ時需要重點考慮的問題。如果消息在傳輸過程中丟失,可能會導致數據不一…

關于termux運行pc交叉編譯的aarch64 elf的問題

在Linux系統上交叉編譯Nim程序到Android Termux環境需要特殊處理,以下是詳細的解決方案: 問題根源分析 ??ABI不兼容?? Android使用bionic libc而非標準glibc,直接編譯的Linux ARM二進制無法直接運行 ??動態鏈接錯誤?? 默認編譯會鏈…

為PXIe控制器配置NI Linux實時操作系統安裝軟件

一、升級BIOS 使用NI Linux Real-Time操作系統的PXI硬件支持頁面來確定NI Linux Real-Time是否支持您的PXIe控制器,以及是否需要更新控制器BIOS。 按照BIOS下載頁面上的“安裝說明”部分安裝BIOS更新。 注意:NI在NI 2020軟件版本中刪除對cRIO的Phar Lap和…

《汽車噪聲控制》課程作業

作業內容 在MATLAB繪制給出單個正弦波或余弦波的時域圖和頻域圖 繪制實測數據的時域圖和頻域圖 圖1 單個正弦波的時頻圖 圖1 單個正弦波的時頻圖 % 正弦波參數設置 f0 1000; % 信號頻率 1kHz Fs 16384; % 采樣頻率 16kHz T 0.05; % 信號持續時間 0.05秒 A 0.8; % 信號幅度…

Baklib內容中臺AI技術協同應用

內容中臺與AI協同創新 在數字化轉型進程中,內容中臺通過人工智能技術的深度整合,正重塑企業信息管理范式。以Baklib內容中臺為例,其通過智能語義分析引擎解析用戶意圖,結合知識圖譜構建技術動態關聯碎片化信息,實現從…

壓測工具開發實戰篇(二)——構建側邊欄以及設置圖標字體

你好,我是安然無虞。 文章目錄 構建側邊欄QtAwesome使用調整側邊欄寬度了解: sizePolicy屬性偽狀態 在閱讀本文之前, 有需要的老鐵可以先回顧一下上篇文章: 壓測工具開發(一)——使用Qt Designer構建簡單界面 構建側邊欄 我們要實現類似于下面這樣的側邊欄功能: …

Axure RP9.0教程: 查詢條件隱藏與顯示(綜合了動態面板狀態切換及展開收縮效果實現)

文章目錄 引言I 原型顯示/隱藏搜索框思路步驟詳細操作II 若依 ruoyi 顯示/隱藏搜索框 & 顯示隱藏列自定義設置顯示隱藏列顯示/隱藏搜索框引言 數據篩選有大量的查詢條件時,可以選擇查詢隱藏效果。 I 原型顯示/隱藏搜索框 綜合了動態面板狀態切換及展開收縮效果實現 思…

解鎖工業通信:Profibus DP到ModbusTCP網關指南!

解鎖工業通信:Profibus DP到ModbusTCP網關指南! 在工業自動化領域,隨著技術的不斷進步和應用場景的日益復雜,不同設備和系統之間的通訊協議兼容性問題成為了工程師們面臨的一大挑戰。尤其是在Profibus DP和Modbus/TCP這兩種廣泛應…

3維格式轉換(二)

基于python的三維模型演化可視化 本項目的主要內容為總結了3種不同的可視化方案( trimesh + matplotlib 庫、 pyvista 庫、 vedo 庫),并通過案例對可視化效果進行展示,最終通過模型動態演化案例給出最佳效果的可視化方案 本期結構圖為 本期博客結構圖 0 環境搭建 項目開…