JS hook大全

作者: 八月欢喜 | 来源:发表于2021-11-11 15:39 被阅读0次

    前言

    个人收集的hook代码,取自己需要的,后期我会逐步完善

    1. Hook Cookie

    (function () {
        'use strict';
        var cookie_cache = document.cookie;
        Object.defineProperty(document, 'cookie', {
            get: function () {
                return cookie_cache;
            },
            set: function (val) {
                console.log('设置 cookie', val);
                // 填写cookie名
                if (val.indexOf('gdxidpyhxdE') != -1) {
                    debugger;
                }
                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]) {
                        flag = true;
                        return cookie;
                    }
                    return a;
                })
                cookie_cache = cache.join("; ");
                if (!flag) {
                    cookie_cache += cookie + "; ";
                }
                return cookie_cache;
            }
        });
    })();
    

    2. Hook Header

    (function () {
        var org = window.XMLHttpRequest.prototype.setRequestHeader;
        window.XMLHttpRequest.prototype.setRequestHeader = function (key, value) {
            if (key == '这是header关键字') {
                debugger;
            }
            return org.apply(this, arguments);
        };
    })();
    

    3. Hook URL参数

    (function () {
        var open = window.XMLHttpRequest.prototype.open;
        window.XMLHttpRequest.prototype.open = function (method, url, async) {
            if (url.indexOf("这是参数关键字") != -1) {
                debugger;
            }
            return open.apply(this, arguments);
        };
    })();
    

    4. Hook JSON.stringify

    将 JavaScript 值转换为 JSON 字符串

    (function() {
        var stringify = JSON.stringify;
        JSON.stringify = function(params) {
            console.log("Hook JSON.stringify ——> ", params);
            debugger;
            return stringify(params);
        }
    })();
    

    5. JSON.parse

    将字符串解析成对象,多用于返回加密数据

    (function() {
        var parse = JSON.parse;
        JSON.parse = function(params) {
            console.log("Hook JSON.parse ——> ", params);
            debugger;
            return parse(params);
        }
    })();
    

    6. Hook eval

    有些加密代码就在eval中运行

    (function() {
        // 保存原始方法
        window.__cr_eval = window.eval;
        // 重写 eval
        var 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
        });
    })();
    

    7. Hook Function

    这个基本不咋用

    (function() {
        // 保存原始方法
        window.__cr_fun = window.Function;
        // 重写 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
        });
    })();
    

    相关文章

      网友评论

        本文标题:JS hook大全

        本文链接:https://www.haomeiwen.com/subject/awqgzltx.html