关于javaScript逆向hook里面的cookie以及其他常用hook汇总

Hook+jsdom 解决cookie逆向 前言 记录下如何破cookie逆向 目标 目标网址:https://q.10jqka.com.cn/ 目标接口:http://q.10jqka.com.cn/index/index/board/all/field/zdf/order/desc/page/2/ajax/1/ 对抗:cookie反爬虫处理,关键字v,如图 解决步骤 1、JS中关键字查找 如上,我们找到了关键字 v,那么接下来就用hook搜查 点击F12,打开 开发者工具,选择Console直接输入hook代码 (function () { 阅读详情
AI摘要

本文详细介绍了JavaScript中的hook技术,通过示例展示了如何hook cookie、ajax请求的URL、XMLHttpRequest的setRequestHeader及constructor等关键操作,用于调试、日志记录或安全控制。此外,还提供了hook JSON.stringify和JSON.parse的方法,以及window属性的hook实现。

个人理解:hook某个元素,实际上就是定位某个元素,例如cookie里面有个abc为名字,123为值,我们要查找设置cookie={abc:123}的位置,首先就要知道,cookie的设置是set方法,再例如发送一个ajax请求,就需要明确的知道,发送ajax需要有一个XMLHttpRequest对象,这个对象会用到open方法,在open方法中使用了url,要hook到url,实际上就是对open方法的重写,同理,hook到cookie时,也是对设置cookie的set方法进行重写
总结:hook就是对某个js对象里面方法的重写

var xhr = new XMLHttpRequest();
xhr.open(method, url, async, username, password);
// method:HTTP 请求方法,必须参数,值包括 POST、GET 和 HEAD,大小写不敏感。
// url:请求的 URL 字符串,必须参数,大部分浏览器仅支持同源请求。
// async:指定请求是否为异步方式,默认为 true。如果为 false,当状态改变时会立即调用onreadystatechange 属性指定的回调函数。
// username:可选参数,如果服务器需要验证,该参数指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。
// password:可选参数,验证信息中的密码部分,如果用户名为空,则该值将被忽略。
xhr.send(body);

hooke到cookie写法一,据说__lookupSetter__和__lookupGetter__已经被某些浏览器弃用了

var code = function(){
    var org = document.cookie.__lookupSetter__('cookie');
    document.__defineSetter__("cookie",function(cookie){
        if(cookie.indexOf('cookie的参数名称')>-1){
            debugger;
        }
        org = cookie;
    });
    document.__defineGetter__("cookie",function(){return org;});
}
// 如果使用浏览器插件,实际上下面四行没有必要使用,下面四行是在浏览器刚加载第一个js的首行时下断点用的,刷新浏览器就没用了
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

/hook到cookie写法二,ES6支持的写法,长期可用


(function() {
    "use strict";
    var cookieTemp = "";
    Object.defineProperty(document, "cookie", {
        writable: false, // 表示能否修改属性的值,即值是可写的还是只读
        configurable: false, // 表示能否通过 delete 删除属性、能否修改属性的特性,或者将属性修改为访问器属性
        set: function(val) {
            if (val.indexOf("cookie的参数名称") != -1) {
                debugger ;
            }
            console.log("Hook捕获Cookie设置->", val);
            cookieTemp = val;
            return val;
        },
 
        get: function() {
            return cookieTemp;
        }
    })
}
)();

hook到header中包含Authorization时


var code = function(){
var org = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function(key,value){
    if(key=='Authorization'){
        debugger;
    }
    return org.apply(this,arguments);
}
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

hook请求的url里包含abc时


var code = function(){
var open = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url, async){
    if (url.indexOf("abc")>-1){
        debugger;
    }
    return open.apply(this, arguments);
};
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

hook到 constructor 构造器构造出来的debugger

var _constructor = constructor;
Function.prototype.constructor = function(s) {
    if (s == "debugger") {
        console.log(s);
        return null;
    }
    return _constructor(s);
}

hook到 eval构造器构造出来的debugger

(function() {
    'use strict';
    var eval_ = window.eval;
    window.eval = function(x) {
        eval_(x.replace("debugger;", "  ; "));
    }
    ;
    window.eval.toString = eval_.toString;
}
)();

hook到json的stringify或者parse时

var my_stringify = JSON.stringify;
JSON.stringify = function (params) {
    //这里可以添加其他逻辑比如 debugger
    console.log("json_stringify params:",params);
    return my_stringify(params);
};

var my_parse = JSON.parse;
JSON.parse = function (params) {
    //这里可以添加其他逻辑比如 debugger
    console.log("json_parse params:",params);
    return my_parse(params);
};

window属性的属性hook,例如:window._t.ccc = “XXX”

// 定义hook属性
var window_flag_1 = "_t";
var window_flag_2 = "ccc";
var key_value_map = {};
var window_value = window[window_flag_1];
// hook
Object.defineProperty(window, window_flag_1, {
    get: function(){
        console.log("Getting",window,window_flag_1,"=",window_value);
        //debugger
        return window_value
    },
    set: function(val) {
        console.log("Setting",window, window_flag_1, "=",val);
        window_value = val;
        key_value_map[window[window_flag_1]] = window_flag_1;
        set_obj_attr(window[window_flag_1],window_flag_2);
});
function set_obj_attr(obj,attr){
    var obj_attr_value = obj[attr];
    Object.defineProperty(obj,attr, {
        get: function() {
            console.log("Getting", key_value_map[obj],attr, "=", obj_attr_value);
            //debugger
            return obj_attr_value;
        },
        set: function(val){
            console.log("Setting", key_value_map[obj], attr, "=", val);
            obj_attr_value = val;
    });
}

hook过掉debugger

(()=>{
    Function.prototype.__constructor = Function.prototype.constructor;
    Function.prototype.constructor = function(){
        if(arguments && typeof arguments[0]==='string'){
            if("debugger"===arguments[0]){
                return
            }
            return Function.prototype.__constructor.apply(this,arguments);
        }
    }
})()

这里列出了常用的一些hook方法,复制粘贴即可使用,主要是为了方便平时使用

爬虫hook之cookies (function () { 'use strict'; var cookieTemp = ""; Object.defineProperty(document, 'cookie', { set: function (val) { console.log('Hook捕获到cookie设置->', val); if (val.indexOf('X_HTTP_TOKEN') != -1) { 阅读详情

相关推荐

JS逆向hook详解

文章目录一、什么是hook?1.1、理解Hook1.2、Object.defineProperty()二、常见的hook注入方式2.1、fiddler插件2.2、谷歌浏览器插件(Tampermonkey油猴)三、常见的hook代码总结3.1、Hook Cookie 一、什么是hook? 在 JS 逆向中,我们通常把替换原函数的过程都称为 Hook。一般使用Object.defineProperty()来进行hook。 1.1、理解Hook 以下先用一段简单的代码理解 Hook 的过程: function a

爱吃辣椒的锅包肉 6139

爬虫 ----hook

爬虫中的hook

Dexter的博客 4000

JavaScript逆向时,常用的11个hook

在逆向分析JavaScript代码时,开发者经常使用一些用于hook(钩子)的技术来监视或修改程序的行为。以下是一些常用的hook技术及其示例代码。提示:以下是本篇文章正文内容,下面案例可供参考。

阿超的博客 1626

利用某油进行hook Cookie、Header、URL

在web逆向过程中,JS代码通常比较混乱,且找不到对应的加密参数或者值的时候,就需要hook帮你检索代码并执行断点操作属性名 默认值 含义get undefined 存取描述符,目标属性获取值的方法set undefined 存取描述符,目标属性设置值的方法。

m0_61173140的博客 2842

js逆向-hook专题

摘要:Hook(钩子)技术通过拦截和修改JavaScript函数执行流程,实现代码行为的监控与分析。其核心原理包括利用函数一等公民特性、对象属性可变性、原型链机制和元编程API(如Object.defineProperty和Proxy)。常见应用场景包括网络请求拦截(XMLHttpRequest)、Cookie监控(document.cookie)、函数追踪(eval)及反调试(debugger)。典型实现方式包括重写原生方法、属性劫持和定时器拦截等,为动态分析和逆向工程提供关键技术手段。

xiyun_nkma的博客 1699

JS逆向hook通用脚本合集

JavaScript eval() 函数的作用是计算 JavaScript 字符串,并把它作为脚本代码来执行。如果参数是一个表达式,eval() 函数将执行表达式。如果参数是 Javascript 语句,eval() 将执行 Javascript 语句,经常被用来动态执行 JS。Cookie Hook 用于定位 Cookie 中关键参数生成位置,以下代码演示了当 Cookie 中匹配到了 v 关键字, 则插入断点。

z_ipython的博客 4300

爬虫从入门到精通| JS逆向hook详解

文章目录一、了解什么是hook?二、fiddler插件三、常见的hook代码总结1.Hook Cookie2.Hook Header3.Hook URL4.Hook JSON.stringify5.Hook JSON.parse6.Hook eval7.Hook Function 一、了解什么是hook? 在 JS 逆向中,我们通常把替换原函数的过程都称为 Hook。一般使用Object.defineProperty()来进行hook。那么我们了解一下该方法的使用。 Object.definePrope.

不愿意透露姓名的网友 1万+

同花顺动态Cookie反爬JS逆向分析

某花顺股票行情网站Cookie反爬虫JS逆向分析实战,获取动态Cookie

吴秋霖的博客 1万+

js逆向工具-油猴Tampermonkey脚本hook案例

目录一、油猴下载与安装二、油猴脚本免费使用网站三、油猴脚本编写介绍四、油猴hook之js逆向案例1、定位pre参数加密位置 一、油猴下载与安装 油猴:Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器, 可以通过不同的“脚本”实现数十甚至上百个功能,比如视频去水印,去广告,js逆向定位加密参数生成位置等 下载与安装:下载.crx插件 ,安装:谷歌>右上角>更多工具>扩展程序,直接将crx文件拖入如下图页面 二、油猴脚本免费使用网站 Greasy Fork:提

十一姐的博客 2万+

useCookiesHook:用于使用和更新cookie的简单钩子

useCookiesHook 使用和更新cookie的简单钩子。

KKJSBridge:一站式解决WKWebView支持脱机包,AjaxFetch请求,表单请求和Cookie同步的问题(基于Ajax Hook,Fetch Hook和Cookie Hook)

KKJS桥 一站式解决WKWebView支持离线包,Ajax / Fetch请求和Cookie同步的问题(基于Ajax Hook,Fetch Hook和Cookie Hook) KKJSBridge支持的功能 JSBrdige相关 基于MessageHandler建造通信层 支持初期的管理 支持模块共享上下文信息 支持模块消息转发 支持JSBridge同步调用 兼容WebViewJavascriptBridge 请求相关 支持离线资源 支持ajax / fetch hook避免body丢失 支持ajax / fetch同步请求 本机侧控制ajax / fetch挂钩 支持表单数据,支持图片上传

JS Cookie Monitor/Debugger Hook:终极JavaScript Cookie逆向调试工具完全指南

你是否曾经在逆向JavaScript代码时,为追踪Cookie生成位置而苦恼?面对混淆得亲妈都不认识的JS代码,苦苦寻找Cookie生成逻辑?JS Cookie Monitor/Debugger Hook就是专为解决这一痛点而生的终极JavaScript Cookie逆向调试工具!🎯 这个强大的工具不仅能实时监控Cookie的所有操作变化,还能在特定条件下自动触发断点,让你轻松定位Cookie生

gitblog_00220的博客 949

AD4030-24BBCZ详细资料 Analog Devices 模数转换器 - ADC 24-Bit, 2 MSPS, SAR ADC

AD4030-24BBCZ详细资料  Analog Devices 模数转换器 - ADC 24-Bit, 2 MSPS, SAR ADC

Chen_YYan的博客 794

【js逆向专题】3.hook技术

Hook 是一种钩子技术,在系统没有调用函数之前,钩子程序就先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,也可以强制结束消息的传递。简单来说,修改原有的JS代码就是 Hook。以上就是关于js逆向技术中的hook技术全部内容了,欢迎同学在评论区讨论交流

情不知所起一往而深 5345

PHP服务端 苹果支付(IAP)处理

公司做的app需要做IAP订阅支付,开始觉得和微信的支付流程差不多,做起来还是有点麻烦,主要是网上的文章很少,不能拿来主义。自己做完总结一下,希望对小伙伴们有帮助我就很欣慰了。代码写的不好 不要喷我。。。 首先讲一下我的业务逻辑,也就是php服务端需要做什么事情。 先上图: 下面我详细的讲一下每...

山水的博客 1万+

保姆级教程:用PROGRAM_FTDI搞定Xilinx FPGA的JTAG调试器(基于FT232/FT2232/FT4232)

本文详细介绍了如何使用FT232/FT2232/FT4232系列芯片通过PROGRAM_FTDI工具配置Xilinx FPGA的JTAG调试器。从芯片选型、驱动安装到固件烧写和Vivado验证,提供了完整的实操指南和避坑要点,帮助开发者低成本实现高效调试。

weixin_29271053的博客 2149

JS 逆向之 Hook,吃着火锅唱着歌,突然就被麻匪劫了!

关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶、JS/安卓逆向等技术干货! 什么是 Hook? Hook 中文译为钩子,Hook 实际上是 Windows 中提供的一种用以替换 DOS 下“中断”的系统机制,Hook 的概念在 Windows 桌面软件开发很常见,特别是各种事件触发的机制,在对特定的系统事件进行 Hook 后,一旦发生已 Hook 事件,对该事件进行 Hook 的程序就会收到系统的通知,这时程序就能在第一时间对该事件做出响应。在程序中将其理解为“劫持”可能会更.

K哥爬虫 2万+

【渗透工具】内网多级代理工具Venom详细使用教程

Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点。

TT小子的博客 3756

实战教程:使用JS Cookie Monitor/Debugger Hook逆向分析网站Cookie生成逻辑

JS Cookie Monitor/Debugger Hook是一款强大的JS Cookie逆向利器,它集Cookie变动监控可视化与条件断点调试功能于一体,能帮助开发者快速定位和分析网站Cookie的生成逻辑与变化过程,是Web逆向工程中的必备工具。 ## 为什么需要Cookie监控与调试工具? 在现代Web应用中,Cookie扮演着至关重要的角色,它不仅用于存储用户状态信息,还常常与身份验

gitblog_00306的博客 713

SAP中寄售结算规则及要点分析

在做MRKO寄售结算时,系统会根据选定的期间和供应商等条件,将符合条件的寄售消耗或寄售上线的物料凭证找出。然后以供应商为单位。合并产生一张会计凭证。下图显示了通过MRKO结算后自动生成的会计凭证。 那么,在MRKO做寄售结算的规则是什么样的?做为寄售业务处理者的物流和财务需要掌握和了解哪些关于寄售结算的规则和控制逻辑。下面以笔者的经验分析一下: 1、寄售物料在系统中有两种处理方法,一种是通过MB1B 411 K ,通常该操作达到两个目的:将物料从仓库转移到线边库(表示即将要投入生产了)的同时将寄售库

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 8294

49、Linux内核内存管理:MGLRU、DAMON与OOM杀手详解

本文详细解析了Linux内核内存管理中的三大核心机制:MGLRU(多代LRU)页面追踪与回收机制、DAMON数据访问监控工具及其在内存优化中的应用,以及OOM(内存不足)杀手的工作原理和触发方式。同时,文章还介绍了VM overcommit_memory策略的设置及其对内存分配的影响,帮助开发者和系统管理员更好地理解Linux内存管理机制,从而优化系统性能和稳定性。

dropout6artist的博客 107

js逆向中常用的hook总结

是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。以上是油猴官网给出的介绍。它可以让用户自行在添加脚本,并在开启对应页面时应用。如果你了解"脚本注入",你可以把它认为是一个给自己注入脚本的一个工具。用户油猴脚本大家可以自行娱乐娱乐, 比如说啊VIP电影免费破解用油猴可以帮助我们一直去动态的监听网址,有些参数可能是刷新网站的时候生成的比较快,控制台没有那么快去执行代码选项含义。

Winter_Sun灬的博客 1081

基于未来出行解决方案的场景实例:城市空中交通(UAM)的飞行路径规划与避障

本文介绍了使用Simulink进行城市空中交通(UAM)飞行路径规划与避障的仿真方法。主要内容包括:1)UAM系统架构与核心挑战;2)详细建模步骤,从城市3D环境构建到飞行器动力学模拟;3)全局路径规划(A*/RRT*)和局部避障(DWA/APF)算法实现;4)多机协同与冲突解决;5)关键场景仿真与性能评估;6)高级功能拓展方向。通过Simulink的数字孪生系统,可有效验证UAM在复杂城市环境中的可行性,为未来立体交通发展提供技术支撑。

xiaoheshang_123的博客 257

JavaScript Cookie逆向神器:JS Cookie Monitor/Debugger Hook 5大核心功能详解

JS Cookie Monitor/Debugger Hook 是一款专为开发者打造的 JavaScript Cookie 逆向利器,它集实时监控与精准调试于一体,能够帮助开发者轻松追踪和分析网页中 JavaScript 对 Cookie 的操作,让复杂的 Cookie 逆向过程变得简单高效。无论是前端开发调试还是爬虫逆向分析,这款工具都能为你提供强大的支持。 ## 一、智能 Cookie 操作

gitblog_01164的博客 414

YOLOv11-seg 改进系列 | 引入原创 RSCD 重参数共享卷积分割头,增强 Head 表达力并压低计算量

本文提出一种改进的YOLOv11-seg分割头Segment_RSCD,通过重参数共享卷积增强表达能力。该模块在LSCD共享检测头基础上引入DiverseBranchBlock重参数卷积,保留三尺度预测与Proto掩码原型接口不变。相比原始Segment头,Segment_RSCD参数增加4%但计算量降低1.3%,在共享卷积结构中通过多分支补偿表达能力损失,同时利用Scale层保持尺度差异校准。该方法不改动Backbone/Neck结构,仅重构检测/分割头,实现训练期多路径聚合与部署期等效单分支的平衡。

qq_44224801的博客 181

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

js逆向系列教程-hook技术

hook技术快速定位

chem_d的博客 2858

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: 关于js在pycharm里面补环境window.btoa没有定义的问题
下一篇: 关于python爬虫逆向RPC的基础使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值