hook原理和篡改猴編寫hook腳本

hook原理:

hook是常用于js反編譯的技術;翻譯就是鉤子,他的原理就是劫持js的函數然后進行篡改

一段簡單的js代碼 :這個代碼是順序執行的

function test01(){console.log('test01')test02()
}
function test02(){console.log('02')test03()}function test03(){console.log("03")test04()
}
function  test04(){console.log("04")
}
test01()var a=test03
function test03 (){console.log("hook successful")
}

這個就是簡單的hook原理? 當然如果是web上? ?我們的函數重構實際上就是? 篡改猴腳本在 控制臺上進行的操作

實驗一? 使用簡單的hook腳本進行鎖定瀏覽器的寬高

我們知道 js的bom樹中有個? 這個是瀏覽器當前的寬高 我們可以使用hook技術讓 這個的輸出是固定的

因為我們只有把窗口縮小 就會出現數值的同步

hook前置知識 :

這里有一堆注釋的東西? 是什么呢

// ==UserScript==
// @name         固定百度頁面窗口尺寸     //腳本的名稱 
// @namespace    http://tampermonkey.net/     //  腳本的作用域
// @version      1.0                             //腳本的版本
// @description  強制讓百度頁面的 innerWidth/innerHeight 返回固定值 520      //腳本的注釋
// @author       YourName         //腳本的作者
// @match        https://www.baidu.com/*                 // 腳本作用的url 這個建議一個每個腳本都 固定特定的url   不要使用    htttp://*
// @grant        none                      //定義腳本所需的權限
// @run-at       document-start

完整腳本? 可以直接讓 ai幫寫

實驗二 :結合ai幫我們解決 js逆向常見的debuger 問題??

最簡單的步驟 :

1、Title? ?先判斷debugger函數定義的位置(一般hook 的方法就是使用 函數重構)

這種 我們點擊快進? 看看有幾個debugfer?

發現就一個

然后使用全局搜索進行 搜索debugger 函數的定義

發現之后就讓ai幫我們寫腳本 (上面這個需要繞過 2個地方? 1、 debuger函數? 2、連續的時間)

// ==UserScript==
// @name         禁用網站反調試(無限debugger)
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  繞過網站通過debugger實現的無限斷點反調試
// @author       YourName
// @match        http://www.xiaodi8.com/test.html
// @grant        none
// @run-at       document-start
// ==/UserScript==(function() {'use strict';// ========== 核心防御邏輯 ==========// 1. 劫持 Function 構造函數 (防止通過 new Function("debugger") 創建調試器)const nativeFunction = window.Function;window.Function = function(...args) {const code = args.slice(-1)[0];if (/debugger|setInterval|setTimeout/i.test(code)) {return function(){}; // 返回空函數}return nativeFunction.apply(this, args);};// 2. 劫持 setInterval/setTimeout (防止定時觸發debugger)const originalSetInterval = window.setInterval;window.setInterval = function(fn, delay, ...args) {if (typeof fn === 'function' && /debugger/.test(fn.toString())) {return -1; // 阻止執行}return originalSetInterval(fn, delay, ...args);};// 3. 直接重寫 debugger 關鍵字行為Object.defineProperty(window, 'debugger', {get: () => {},set: () => {},configurable: true});// 4. 防御動態腳本注入new MutationObserver(() => {// 持續重寫 Function 和 debuggerwindow.Function = function(){};window.eval = function(){};}).observe(document, { subtree: true, childList: true });// ========== 附加防御層 ==========// 禁用控制臺調試 (可選)if (window.console) {window.console.log = function(){};window.console.debug = function(){};}// 劫持 onbeforeunload 事件window.onbeforeunload = null;
})();

之后就能解決了

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

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

相關文章

使用 Vue 展示 Markdown 文本

使用 Vue 展示 Markdown 文本可以通過以下幾種方法&#xff1a; 方法 1&#xff1a;使用 v-html 指令 可以使用 v-html 指令來渲染 Markdown 文本&#xff1a; <template><div v-html"markdownText"></div> </template> <script>e…

深度解析 Java 中介者模式:重構復雜交互場景的優雅方案

一、中介者模式的核心思想與設計哲學 在軟件開發的歷史長河中&#xff0c;對象間的交互管理一直是架構設計的核心難題。當多個對象形成復雜的網狀交互時&#xff0c;系統會陷入 "牽一發而動全身" 的困境。中介者模式&#xff08;Mediator Pattern&#xff09;作為行…

FreeCAD傻瓜教程-外螺紋的繪制,利用兩個實體進行布爾運算來實現

起因&#xff1a;因為要設計一個波珠螺絲固定器&#xff0c;為了不跑偏&#xff0c;需要在螺柱上加工一個直徑6mm&#xff0c;深度1.2mm的圓弧凹槽所以想用泉州制造的6.8車銑加工。 但是該加工目前不支持軸向的鉆孔&#xff0c;所以想著干脆在兩端加上M8的螺栓&#xff0c;也起…

權限控制相關實現

Spring Boot-Shiro-Vue&#xff1a; 這個項目可以滿足基本的權限控制需求&#xff0c;前后端都有&#xff0c;開箱即用

Node.js路徑處理指南:如何安全獲取當前腳本目錄路徑

本文適用于 Node.js 14.x及以上版本&#xff0c;同時覆蓋 CommonJS 和 ES Modules 模塊系統 文章目錄 一、為什么需要關注路徑問題&#xff1f;二、三種核心方法詳解方法1&#xff1a;經典方案 __dirname (CommonJS)方法2&#xff1a;ES Modules 解決方案方法3&#xff1a;動態…

web基礎

域名概述 2-1 域名的概念&#xff1a;IP 地址不易記憶&#xff0c;域名是互聯網絡上識別和定位計算機的層次結構式的字符標識&#xff0c;與該計算機的互聯網協議 (IP) 地址相對應&#xff0c;用于在數據傳輸時標識計算機的電子方位&#xff0c;方便人們記憶和輸入。 早期使用…

醫療行業數據共享新實踐:如何用QuickAPI打通診療全流程數據壁壘

在醫療行業&#xff0c;數據的高效流轉直接影響診療效率和患者體驗。某三甲醫院在數字化轉型中發現&#xff0c;雖然已積累大量核心業務數據&#xff0c;但各科室系統間的數據互通仍存在明顯瓶頸——檢驗科的報告無法實時同步至門診系統&#xff0c;藥房庫存數據與采購系統脫節…

高級認知型Agent

目標: 構建一個具備自主規劃、多步推理、工具使用、自我反思和環境交互能力的智能代理,使其能夠高效、可靠地完成復雜任務。 核心理念: Agent的智能涌現于一個精密的認知循環: 感知 (Perceive) -> 理解與規劃 (Think/Plan - 想) -> 信息獲取 (Search/Act - 查) -&g…

百度地圖的地鐵圖API所有城市的城市名和citycode的對照關系列表

百度地圖的地鐵圖API所有城市的城市名和citycode的對照關系列表 城市keywordcitycode北京beijing131上海shanghai289廣州guangzhou257深圳shenzhen340重慶chongqing132天津tianjin332石家莊shijiazhuang150南京nanjing315成都chengdu75沈陽shenyang58杭州hangzhou179武漢wuhan2…

SymPy | 獲取表達式自由變量方法與因式分解

SymPy 是 Python 中強大的符號計算庫&#xff0c;廣泛應用于數學建模、公式推導和科學計算。本文將從兩個核心功能展開&#xff1a;表達式中自由變量的獲取與因式分解的實現&#xff0c;通過完整代碼示例和深入分析&#xff0c;幫助讀者掌握其使用方法。 第一部分&#xff1a;獲…

掩膜合并代碼

def ensure_dir(path):"""若目錄不存在則創建"""if not os.path.exists(path): #判斷路徑是否存在os.makedirs(path) #創建路徑def read_and_resize(img_path, size):"""讀取并縮放圖像到指定尺寸&#xff0c;返回 numpy 數組&qu…

藍橋杯5130 健身

問題描述 小藍要去健身&#xff0c;他可以在接下來的 1~n 天中選擇一些日子去健身。 他有 m 個健身計劃&#xff0c;對于第 i 個健身計劃&#xff0c;需要連續的 天&#xff0c;如果成功完成&#xff0c;可以獲得健身增益 si? &#xff0c;如果中斷&#xff0c;得不到任何…

auto關鍵字解析

前言 在11標準之前&#xff0c;auto在c中是聲明存儲器類型的關鍵字。而在11標準中它的功能變為了類型推導。 對此&#xff0c; 在這里引入Cprimer中的原句&#xff1a; 編程時常常需要把表達式的值賦給變量&#xff0c;這就要求在聲明變量的時候清楚的知道表達式的類型。然而…

嵌入式STM32學習——串口USART 2.0(printf重定義及串口發送)

printf重定義&#xff1a; C語言里面的printf函數默認輸出設備是顯示器&#xff0c;如果要實現printf函數輸出正在串口或者LCD顯示屏上&#xff0c;必須要重定義標準庫函數里調用的與輸出設備相關的函數&#xff0c;比如printf輸出到串口&#xff0c;需要將fputc里面的輸出指向…

信號量機制:操作系統中的同步與互斥利器

在計算機操作系統中&#xff0c;信號量機制是一種重要的進程同步與互斥工具。它廣泛應用于多進程或多線程環境中&#xff0c;用于解決并發訪問共享資源時可能出現的競態條件問題。本文將從信號量的基本概念出發&#xff0c;逐步深入探討其工作原理、實現方式以及實際應用&#…

LeetCode 1004. 最大連續1的個數 III

LeetCode 1004題 “最大連續1的個數 III” 是一道關于數組和滑動窗口的問題。題目描述如下&#xff1a; 題目描述 給定一個由若干 0 和 1 組成的數組 nums&#xff0c;以及一個整數 k。你可以將最多 k 個 0 翻轉為 1。返回經過翻轉操作后&#xff0c;數組中連續 1 的最大個數…

digitalworld.local: FALL靶場

digitalworld.local: FALL 來自 <digitalworld.local: FALL ~ VulnHub> 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.182&#xff0c;靶場IP192.168.23.4 3&…

經典Java面試題的答案——Java 基礎

大家好&#xff0c;我是九神。這是互聯網技術崗的分享專題&#xff0c;廢話少說&#xff0c;進入正題&#xff1a; 1.JDK 和 JRE 有什么區別&#xff1f; JDK&#xff1a;Java Development Kit 的簡稱&#xff0c;java 開發工具包&#xff0c;提供了 java 的開發環境和運行環境…

LabVIEW風機狀態實時監測

在當今電子設備高度集成化的時代&#xff0c;設備散熱成為關鍵問題。許多大型設備機箱常采用多個風機協同散熱&#xff0c;確保系統穩定運行。一旦風機出現故障&#xff0c;若不能及時察覺&#xff0c;可能導致設備損壞&#xff0c;造成巨大損失。為滿足對機箱內風機狀態實時監…

18 C 語言算術、關系、邏輯運算符及 VS Code 警告配置詳解

1 運算符與表達式核心概念 1.1 什么是運算符 運算符是編程和數學中具有特定功能的符號&#xff0c;用于對數據進行運算、賦值、比較及邏輯處理等操作。它們能夠改變、組合或比較操作數的值&#xff0c;進而生成新值或觸發特定動作。 1.2 什么是表達式 表達式是編程和數學中用…