首页 > 其他分享 >常用hook记录

常用hook记录

时间:2023-10-27 13:55:20浏览次数:43  
标签:function 常用 return debugger 记录 hook cookie var

1 headers 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);

2 请求hook 当请求url里包含anlysis时,插入断点

(function () {
    var open = window.XMLHttpRequest.prototype.open;
    window.XMLHttpRequest.prototype.open = function (method, url, async) {
        if (url.indexOf("analysis") != -1) {
            debugger;
        }
        return open.apply(this, arguments);
    };
})();

3 过debugger—1 constructor 基于构造器实现的

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

4 过debugger—2 eval的

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

5 JSON HOOK

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);
};

6 对象属性hook 属性自定义,hook cookie操作

这种操作只是针对通过js生成的cookie,若cookie是服务器后台返回的则不起效果

(function(){
    // 严格模式,检查所有错误
    'use strict'
    // document 为要hook的对象 ,属性是cookie
    Object.defineProperty(document,'cookie',{
        // hook set方法也就是赋值的方法,get就是获取的方法
        set: function(val){
            // 这样就可以快速给下面这个代码行下断点,从而快速定位设置cookie的代码
            debugger;  // 在此处自动断下
            console.log('Hook捕获到set-cookie ->',val);
            return val;
        }
    })
})();

// 只针对Cookie的某个值进行hook----------------------------------
(function(){
    'use strict'
    Object.defineProperty(document,'cookie',{
        set: function(val){
            if (val == "xxxx"){
                debugger;
            }            
            console.log('Hook捕获到set-cookie ->',val);
            return val;
        }
    })
})();

7 hook canvas(定位定位图片生成的地方)

(function() {
    'use strict';
    let create_element = document.createElement.bind(doument);

    document.createElement = function (_element) {
        console.log("create_element:",_element);
        if (_element === "canvas") {
            debugger;
        }
        return create_element(_element);
    }
})();

8 setInterval 定时器

(function() {
    setInterval_ = setInterval;
    console.log("原函数已被重命名为setInterval_")
    setInterval = function() {}
    ;
    setInterval.toString = function() {
        console.log("有函数正在检测setInterval是否被hook");
        return setInterval_.toString();
    }
    ;
}
)();

9 setInterval 循环清除定时器

for(var i = 0; i < 9999999; i++) window.clearInterval(i)

标签:function,常用,return,debugger,记录,hook,cookie,var
From: https://www.cnblogs.com/yangxsby/p/17791954.html

相关文章

  • 小端模式和大端模式——踩坑记录
    大端小端1前言在做项目时,需要将报文发送给硬件端,报文打包我都是用的大端写入Bytebuf(使用的netty),老大审查代码时,说我写错了,说硬件那边要求是小端传输。不过改成小端写入也容易,重要的是牢记这个知识点。于是趁这个机会复习一下大端和小端。2概念大端(Big-Endian)和小端(Litt......
  • DSPLearning_dayONE___________matlab实现DTFT里面的一些常用函数以及基本运算
    DSPmatlab实现\(\delta(n)\)的实现%matlab中坐标轴的横坐标和纵坐标是分开表示的n=-10:20;%横坐标的显示范围这个是确定了x轴的坐标范围delta=[zeros(1,10)1zeros(1,20)];%zeros(m,n)产生一个mxn的全零矩阵这个是每个x轴对应的y轴的值stem(n,delta);gridon......
  • 记录mybatis的一点小坑(Invalid bound statement (not found))
    今天学习SSM的时候出的一个小错,写测试程序的时候mybatis一直报bindingexception Invalidboundstatement(notfound): xxx语句。我以为是xxx语句出问题了。一直找。检查了namespace、statementid、mapperScanner啥的,都没发现异常。回去翻笔记,原来是xml的路径错了。 ......
  • 简单实现.NET Hook与事件模拟
    最近玩《星露谷物语》上瘾,本来是看着个休闲游戏,现在玩成修仙游戏了,上百个小时浑身是肝,中午午休习惯都强行给改了。虽然挺有意思,但是太肝了,入坑前请谨慎。补充一下,这个游戏应该是基于XNA/MonoGame写的。这个游戏在丧失焦点的时候会自动暂停,无法自动推进,我觉得效率太低了,为了......
  • SQL Server常用命令
     --重建索引dbccdbreindex('表名','',90) --清除数据库日志use[数据库]selectFILE_ID,name,size,*fromsys.database_files--查询数据库及日志名称alterdatabase[数据库名称]setrecoverysimplewithno_waitalterdatabase[数据库名称]setrecoverysimple--简......
  • 最近学习到的一些linux的常用命令
    1、ls命令可以列出当前目录下的内容清单。它与windows下的dir命令很像 2、cd命令这个命令可以改变目录cd~  //更改到本用户的主目录cddesktop //更改目录到desktop cd.. //更改目录到上一级 3、管道输出可以把shell命令输出到文件里面ls>somefile.tx......
  • spark使用记录
    单词统计的示例1:客户端登录 2:使用链式编程输出结果文件sc.textFile("hdfs://bda1node01.sqtxj.com:8020/txj/resources/chedai/chedai.csv").flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).saveAsTextFile("/spark/out")spark安装后示例(求pai)1:......
  • 常用函数一览
    一、abs()<cstdlib>(或<stdlib.h>)中的abs函数原型:intabs(intx)返回类型int,参数类型int。用于计算整数的绝对值在<cmath>中的abs函数abs函数是一个重载函数,可以处理多种数值类型的绝对值原型doubleabs(doublenum);floatabs(floatnum);longdoubleabs(longd......
  • 初学者Linux的学习记录
    Linux是什么呢?让我们来看一下它的定义:定义:Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统;其实它的本质就是一个操作系统。Linux的四大特点:一切皆文件:Linux系统中的一切都归结为文件。对于操作系统内核......
  • conda常用指令
    安装condaconda分为anaconda和miniconda,anaconda是一个包含了许多常用库的集合版本,miniconda是精简版本(只包含conda、pip、zlib、python以及它们所需的包)miniconda官网:https://conda.io/miniconda.htmlanaconda官网:https://www.anaconda.com/download检查conda......