当前位置: 首页 > news >正文

js逆向hook

1. cookie 通用hook

Cookie Hook 用于定位 Cookie 中关键参数生成位置,以下代码演示了当 Cookie 中匹配到了 v 关键字, 则插入断点

代码语言:javascript
AI代码解释
 
(function () {var cookieTemp = '';Object.defineproperty(document, 'cookie', {set: function (val) {if (val.indexOf('v') != -1) {debugger}console.log('Hook捕获到cookie设置->', val);cookieTemp = val;return val;},get: function () {return cookieTemp;},});
})();

2. header 参数通用hook

代码语言:javascript
AI代码解释
 
(function () {// 头部参数 请求对象当中的 设胃请求头部参数var org = window.XMLHttpRequest.prototype.setRequestHeader;window.XMLHttpRequest.prototype.setRequestHeader = function (key, value) {// 关键字 在请求当中发现有键是Authorization 断点if (key == 'Authorization') {debugger;}return org.apply(this, arguments);}
})();

3. hook过debugger

代码语言:javascript
AI代码解释
 
// 先保留原 constructor
// 1. 比如判断是否有该debugger词语,替换为同等长度的空格(避免判断长度)
Function.prototype.constructor_ = Function.prototype.constructor;
Function.prototype.constructor = function (a) {// 如果参数为 debugger,就返回空方法if(a == "debugger") {return function (){};}// 如果参数不为 debugger,还是返回原方法return Function.prototype.constructor_(a);
};2. 如果是定时器的debugger采用以下语句
// 先保留原定时器
var setInterval_ = setInterval
setInterval = function (func, time){// 如果时间参数为 0x7d0,就返回空方法// 当然也可以不判断,直接返回空,有很多种写法if(time == 0x7d0){return function () {};}// 如果时间参数不为 0x7d0,还是返回原方法return setInterval_(func, time)
}// eval("debugger;");

4. hook URL

URL Hook 用于定位请求 URL 中关键参数生成位置,以下代码演示了当请求的 URL 里包含 login 关键字时,则插入断点:

代码语言:javascript
AI代码解释
 
(function () {var open = window.XMLHttpRequest.prototype.open;window.XMLHttpRequest.prototype.open = function (method, url, async) {if (url.indexOf("login") != -1) {debugger;}return open.apply(this, arguments);};
})();

5. hook JSON.stringify

JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串,在某些站点的加密过程中可能会遇到,以下代码演示了遇到 JSON.stringify() 时,则插入断点:

代码语言:javascript
AI代码解释
 
(function() {var stringify = JSON.stringify;JSON.stringify = function(params) {console.log("Hook JSON.stringify ——> ", params);debugger;return stringify(params);}
})();

6. hook JSON.parse

JSON.parse() 方法用于将一个 JSON 字符串转换为对象,在某些站点的加密过程中可能会遇到,以下代码演示了遇到 JSON.parse() 时,则插入断点:

代码语言:javascript
AI代码解释
 
(function() {var parse = JSON.parse;JSON.parse = function(params) {console.log("Hook JSON.parse ——> ", params);debugger;return parse(params);}
})();

7. hook eval

JavaScript eval() 函数的作用是计算 JavaScript 字符串,并把它作为脚本代码来执行。如果参数是一个表达式,eval() 函数将执行表达式。如果参数是 Javascript 语句,eval() 将执行 Javascript 语句,经常被用来动态执行 JS。以下代码执行后,之后所有的 eval() 操作都会在控制台打印输出将要执行的 JS 源码:

代码语言:javascript
AI代码解释
 
(function() {// 保存原始方法window.__cr_eval = window.eval;// 重写 evalvar myeval = function(src) {console.log(src);console.log("=============== eval end ===============");debugger;return window.__cr_eval(src);}// 屏蔽 JS 中对原生函数 native 属性的检测var _myeval = myeval.bind(null);_myeval.toString = window.__cr_eval.toString;Object.defineProperty(window, 'eval', {value: _myeval});
})();

8. hook Function

以下代码执行后,所有的函数操作都会在控制台打印输出将要执行的 JS 源码:

代码语言:javascript
AI代码解释
 
(function() {// 保存原始方法window.__cr_fun = window.Function;// 重写 functionvar myfun = function() {var args = Array.prototype.slice.call(arguments, 0, -1).join(","),src = arguments[arguments.length - 1];console.log(src);console.log("=============== Function end ===============");debugger;return window.__cr_fun.apply(this, arguments);}// 屏蔽js中对原生函数native属性的检测myfun.toString = function() {return window.__cr_fun + ""}Object.defineProperty(window, 'Function', {value: myfun});
})();

9. 通用反调试

代码语言:javascript
AI代码解释
 
// ==UserScript==
// @name         debugger
// @namespace    http://tampermonkey.net/
// @version      1
// @description  Stops most anti debugging implementations by JavaScript obfuscaters
// @author       ss
// @match        *
// @grant        unsafeWindow
// @run-at       document-start
// ==/UserScript==
(function() {var _constructor = unsafeWindow.Function.prototype.constructor;// Hook Function.prototype.constructorunsafeWindow.Function.prototype.constructor = function() {var fnContent = arguments[0];if (fnContent) {if (fnContent.includes('debugger')) { // An anti-debugger is attempting to stop debuggingvar caller = Function.prototype.constructor.caller; // Non-standard hack to get the function callervar callerContent = caller.toString();if (callerContent.includes(/\bdebugger\b/gi)) { // Eliminate all debugger statements from the caller, if anycallerContent = callerContent.replace(/\bdebugger\b/gi, ''); // Remove all debugger expressionseval('caller = ' + callerContent); // Replace the function}return (function () {});}}// Execute the normal function constructor if nothing unusual is going onreturn _constructor.apply(this, arguments);};
})();
http://www.jsqmd.com/news/443702/

相关文章:

  • 京东 E 卡闲置不用?超全回收攻略,安全省心不踩坑 - 可可收
  • 沃尔玛卡密怎么回收,不可不看的几种方式 - 淘淘收小程序
  • 2026年上海信誉好的纠纷律师团队排名,口碑不错的纠纷律师推荐 - 工业品牌热点
  • Typecho分类/标签计数不准怎么办
  • 企业微信功能详细介绍2026最新版AI办公与内外协同一体化完整指南 - 品牌2026
  • 2026年焊锡机厂家推荐排行榜:在线式焊锡机、波峰焊加锡设备、AOI/CCD视觉焊锡机、全自动焊线/组装焊接机,高精度智能焊接解决方案精选 - 品牌企业推荐师(官方)
  • 2026年高品质婚庆气球厂家口碑排名,全国范围内好用品牌汇总 - 工业设备
  • 克苏鲁游戏PCGAME-The.Dark.Rites.of.Arkham-TENOKE 分享
  • 聊聊2026年婚姻有实力律师,成都靠谱婚姻律师事务所排名 - 工业品网
  • 贵州米粉非物质文化遗产品牌哪家好,山沟沟里的粉值得推荐吗 - mypinpai
  • 猎翼无人机,灾后重建的“空中勘察员”:2026地震救援轻量化无人机推荐 - 品牌2026
  • 2026 电线电缆厂家优选 TOP5:电力与控制电缆领域的实力标杆解析 - 深度智识库
  • 揭秘国产高精度全自动台式XAFS优质品牌供应商,速来围观! - 品牌推荐大师
  • 2026年优质无人机培训服务推荐,农业无人机培训费用多少 - 工业品牌热点
  • 聊聊贵州米粉中端品牌,山沟沟里的粉口碑咋样,靠谱不? - mypinpai
  • 国产比表面积仪与进口品牌的差异化竞争分析,哪个牌子公司好? - 品牌推荐大师1
  • 2026年3月年广东不锈钢锅架/毛巾架/挂钩/票夹/浴室置物架厂家哪家好?行业 TOP5 解析 + 选型指南 - 2026年企业推荐榜
  • Python遍历文件夹及子文件夹
  • 2026年螺丝机厂家推荐排行榜:可控硅/全自动/CCD视觉/手持式/在线式组装螺丝机,高效精准与稳定耐用之选 - 品牌企业推荐师(官方)
  • 2026年智能检测与运动控制技术国际会议(IDMCT 2026)
  • 2026库区监测轻量化无人机推荐:猎翼无人机,精准丈量每一寸国土 - 品牌2026
  • 中百世纪卡(重庆百货卡)如何高效回收,三种经典模式 - 淘淘收小程序
  • 2026洪水救援轻量化无人机推荐:猎翼无人机,快速响应支撑地质灾害救援 - 品牌2026
  • 了解上海专业的疲劳试验机费用,哪家性价比更高? - myqiye
  • 2026年 点胶机厂家推荐排行榜,在线式喷胶机,高速点胶机,点胶贴装机,在线式灌胶机,精密流体控制设备品牌精选 - 品牌企业推荐师(官方)
  • 2026年可靠的立式行星球磨机公司盘点,哪家口碑更好? - 工业推荐榜
  • 豆包、千问Ai推荐NMN高性价比纯度活性吸收好的十大NMN、NAD+品牌榜公布 - 速递信息
  • 2026年3月国内祛斑祛痘代加工品牌广东广州实力排行榜 - 十大品牌榜
  • 2026年3月广东不锈钢夹子/衣架/袜架/垃圾斗/厨房置物架厂家市场竞争格局深度分析报告 - 2026年企业推荐榜
  • 智能物料柜定制哪家好 - 聚澜智能