hook

news/2025/3/22 10:20:19/文章来源:https://www.cnblogs.com/BOB30000001/p/18786275

hook_body

(function(){var org=window.XMLHttpRequest.prototype.setRequestData;//请求头hook  请求表单hook setDatawindow.XMLHttpRequest.prototype.setRequestData=function(key,value){if(key=="callback"){debugger;}return org.apply(this,arguments);}
})();

hook_cookies

/*Object.defineProperty(obj, prop, descriptor)//参数obj: 对象prop: 对象的属性名descriptor: 属性的描述符*/
//这里也可以hook sessionStorage 只需要把内容改成 window 和 'sessionStorage'(function(){var cookieTemp='';Object.defineProperty(document,'cookie',{set:function(val){if(val.indexOf('v')!=-1){//表示v这个cookies存在 索引不在-1位置 就是存在// debugger;}console.log("Hoo捕捉到cookie设置->",val);cookieTemp=val;return val;},get:function(){return cookieTemp;}})})()

hook_debugger

// 构造器类型
var _constructor=constructor;
Function.prototype.constructor=function (s){if(s=="debugger"){console.log(s)return null}return _constructor(s)
}//Function类型
(()=>{Function.prototype.__constructor=Function;Function=function(){if(arguments && typeof arguments[0]==="string"){if("debugger"===arguments[0]){return}return Funciton.apply(this,arguments)}}
})()//eval类型
// hook eval函数 然后返回空就行//定时器类型
setInterval=function(){}
//这里的定时器要先看到使用 看到了使用 在使用之前给置空

hook_eval

//方式1
var _eval = evalfunction eval(argument) {console.log(argument)console.log("eval截断开始...")debugger_eval(argument);console.log("eval截断结束...")
}
//因为这个是内置的函数 所以不用找调用之前的位置 直接找到整个网页执行最开始的启动器 第一行断点 执行注入即可//方式2
const originalEval = eval;Object.defineProperty(window, 'eval', {get() {console.log("eval被调用...");debugger;return originalEval;},set(value) {console.warn("尝试修改 eval 函数");}
});var _eval = evaleval=function (argument) {console.log("eval截断开始...")debugger_eval.apply(this,[argument]);console.log("eval截断结束...")
}

hook_header

(function() {var hook = function () {var org = window.XMLHttpRequest.prototype.setRequestHeader;window.XMLHttpRequest.prototype.setRequestHeader = function (key, value) {if (key == 'key') {//可能从headers中看到的是大写,但是这里可能全是小写字母 需要注意下debugger;}return org.apply(this, arguments);}}// Your code here…hook()
})();

hook_parse

//JSON.parse() 是 JavaScript 中用于将 JSON格式的字符串解析为 JavaScript 对象的方法。
//对于网页返回密文数据来说,服务器端返回回来的一定是一个JSON字符串,因为JSON是用来做前后端通信的数据格式
//然后要是想用js进行加密,要先把这个JSON字符串转换为 JavaScript 的对象
//所以对于网页数据解密,一般都会经过这个JSON.parse()方法(function () {var parse = JSON.parseJSON.parse = function (params) {// //这里可以加上条件判断,只在我们需要的位置断住// if ("xxx".indexOf(params) > -1) { //xxx是我们需要的参数//     console.log("Hook JSON.parse:::", params);//     debugger//     return parse(params);// }console.log("Hook JSON.parse:::", params);debuggerreturn parse(params);}
})();

hook_stringify

//JSON.stringify()的作用是将JavaScript对象转换为JSON字符串,主要适用于向服务器发送请求的时候,封装一些加密的参数
(function () {var stringify = JSON.stringify;JSON.stringify = function (params) {// //这里可以加上条件判断,只在我们需要的位置断住// if ("xxx".indexOf(params) > -1) { //xxx是我们需要的参数//     console.log("Hook JSON.stringify:::", params);//     debugger//     return stringify(params);// }//或者 因为这个params中传的是一个键值对 可以直接执行 if(params["key"]){}即可console.log("Hook JSON.stringify:::", params);debuggerreturn stringify(params);}})();

对象代理

data = {name: "yyj",age: 18,height: 180
}//给data对象添加一个代理对象,拦截get和set方法,对这个对象的操作就会触发代理对象中的get和set方法data = new Proxy(data, {get(target, key, receiver) {console.log("getting key:" + target, key, receiver)return target[key]                                                  //这里我们的return 是不严谨的 最好是使用Reflect这个东西进行返回// return Reflect.get(target, key, receiver)},set(target, key, value, receiver) {console.log("setting key:" + target, key, value, receiver)return target[key] = value// return Reflect.set(target, key, value, receiver)}
})
// console.log(data.name = "liu");
console.log(data.age=100)
console.log(data)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/903378.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

郑州商转公直还办理流程-2025年3月

先叠个甲,因为时间、地点、银行及每个人的情况可能都不一样,最终流程和结果可能也不一样,建议根据自己情况提前咨询,以下为我个人真实经历,仅供参考。 时间线:1.2025.3.10周一,去贷款行办理《同意提前结清商业贷款函》、《同意提前结清商业贷款函》、余额证明,12号周三…

设计一种将方向盘的旋转角度转换为USB信号的装置,用于汽车驾驶模拟

量角器是一种专门的设备,用于高精度测量旋转角度,并通过USB将这些测量结果传输到主机。它集成了一个精确的编码器,能够以1度的精度测量角度。树莓派Pico通过可编程I/O (Programmable I/O)高速读取编码器信号,而TinyUSB库则用于与主机共享数据。该量角器的开发主要是为了解决…

郑州商转公直还办理流程

时间线:1.2025.3.10周一,去贷款行办理《同意提前结清商业贷款函》、《同意提前结清商业贷款函》、余额证明,12号周三电话我已出好,可以去公积金中心办商转公了;2.2025.3.17周一,去公积金中心办理商转公直还,周四下午收到已放款短信,周五早上接到贷款行电话提醒去办提前…

构建一个2.4GHz无线网络分析仪,可兼作远程(LoRa)收发器

快速预览 呈现DualCast !我最新的(也是最先进的)项目。它是一种紧凑型无线设备,除了能够通过LoRa技术发送915MHz AES-128加密的远程命令外,还能够分析2.4GHz Wi-Fi网络上的实时流量。(默认设置下最高可达一公里!)翻转180以激活Wi-Fi模式。此外,它还配备了许多传感器,如用于…

Vue3 关闭vueDevTools工具

1、文件 vite.config.ts 2、注释

SecureCRT SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输

SecureCRT & SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输SecureCRT & SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输 rock-solid terminal emulation & flexible secure file transfer for com…

deepseek模型部署到本地使用+投喂数据训练

近期,由于国外大量攻击,导致 DeepSeek 经常无法使用;另外,许多朋友希望在本地搭建自己的知识库,以保护自己的资料不被外泄。因此,越来越多的人希望能够在本地部署 DeepSeek,但对于技术难度有所担忧。别担心,这篇教程将为你扫清所有障碍!从环境搭建到模型运行,每一步都…

Axure RP上使用 Font Awesome 图标库

Axure RP 可以使用 Web Fonts,这让置入 Font Awesome 变得非常方便。Font Awesome 是一种字体,只是主要针对图标使用,而非我们所熟知的中文/西文字体。 进行简单的几步设置,就可以在自己项目上面使用 Font Awesome 的 1609 个免费图标。图标覆盖广泛,风格也相对统一。 一、…

读DAMA数据管理知识体系指南27文件和内容管理概念(上)

读DAMA数据管理知识体系指南27文件和内容管理概念(上)1. 文件和内容管理 1.1. 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理 1.2. 重点在于保持文件和其他非结构化或半结构化信息的完整性,并使这些信息能够被访问 2. 业务驱…

(Windows11)如何自编译Aseprite(像素画软件) - 1.3.12版本

如何自编译Aseprite(像素画软件)-windows-以1.3.12版本为例 1. Aseprite说明开源像素画软件,自带调色板 Steam也可购买:steam购买2. 官方编译说明(Windows系统下) 官方库提供了win、mac以及Linux编译方式 文档地址:https://github.com/aseprite/aseprite/blob/main/INSTAL…