常用 JS HOOK 代码段

hook eval

复制代码
// 保存原始方法
window.__cr_eval = window.eval;
// 重写eval方法
var myeval = function(src){
    console.log(src);
    console.log("=============== eval end ===============");
    debugger;
    return window.__cr_eval(src);
}
var _myeval = myeval.bind(null);
// 这里主要是屏蔽js中对原生函数native属性的检测
_myeval.toString = window.__cr_eval.toString;
Object.defineProperty(window, 'eval', {value: _myeval});
复制代码

 

hook Function

复制代码
window.__cr_fun = window.Function;
var 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});
复制代码

 

hook JSON.stringify、JSON.parse

复制代码
var my_stringify = JSON.stringify;
JSON.stringify = function(params){
    console.log("hook", params);
    debugger;
    return my_stringify(params);
};

var my_parse = JSON.parse;
JSON.parse = function(params){
    console.log("hook", params);
    debugger;
    return my_parse(params);
};
复制代码

 

复制代码
(function () {
   Object.defineProperty(document, 'cookie', {
       set: function (cookie) {
           if(cookie.indexOf('RM4hZBv0dDon443M') != -1){
                debugger;
           }
           return cookie;
       }
   })
})();
复制代码

 

 

hook所有cookie

复制代码
var cookie_cache = document.cookie;
Object.defineProperty(document, 'cookie', {
    get: function(){
        console.log('Getting cookie');
        return cookie_cache;
    },
    set: function(val){
        console.log('Stting cookie', val);
        var cookie = val.split(';')[0];
        var ncookie = cookie.split('=');
        var flag = false;
        var cache = cookie_cache.split('; ');
        cache = cache.map(function(a){
            if (a.split('=')[0] === ncookie[0]){
                falg = true;
                return cookie;
            }
            return a;
        })
        cookie_cache = cache.join('; ');
        if(!falg){
            cookie_cache += cookie + '; ';
        }
        this._value = val;
        return cookie_cache;
    },
});
复制代码

 

 

hook window对象

复制代码
var window_flag_1 = 'object1'; // 修改为需要hook的对象
var window_flag_2 = 'object2'; // hook对象的对象

var key_value_map = {};
var window_value = window[window_flag_1];

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);
        debugger;
        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_arrt_value = obj[attr];
    Object.defineProperty(obj, attr, {
        get:function(){
            console.log('Getting', key_value_map[obj], attr, '=', obj_arrt_value);
            debugger;
            return obj_arrt_value
        },
        set: function(val){
            console.log('Setting', key_value_map[obj], attr, '=', val);
            debugger;
            obj_arrt_value = val;
        },
    });
};
复制代码

 

hook WebSocket

WebSocket.prototype.senda = WebSocket.prototype.send;
WebSocket.prototype.send = function(data){
    console.log('Hook WebSocket', data);
    return this.senda(data);
};

 

posted @   黑山老道  阅读(1103)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示