美文网首页
js hook 学习整理

js hook 学习整理

作者: 行走的佩奇 | 来源:发表于2022-02-28 21:50 被阅读0次

hook代码的目的是为了更方便的调试代码,找出函数入口
遇到好的方法的随时跟新

1.对象中属性hook公式----cookie

  • hook cookie
Object.defineProperty(document, 'cookie', {
    set: function(val){
        console.log('cookie',val)
        debugger;
    },
    get:function(val){
        console.log('cookie',val)   
    }
})

普通对象正常返回值--hook
(function() {
    'use strict';
    var v = 'value';
    var new_value = qq[v]
    Object.defineProperty(qq, v, {
        get: function() {
            // console.log('获取属性值',new_value);
            // debugger;
            return  new_value;
        },
        set: function(value) {
            console.log('设置属性值',value);
            debugger;
            new_value = qq[v]
            return value;
        },
    });

})();
//全局对象的属性都可以照这个例子
  • 严格模式 正常返回cookie的值
(function() {
    'use strict';
    var cookie_cache = document.cookie;
    Object.defineProperty(document, 'cookie', {
        get: function() {
            // console.log(cookie_cache);
            return cookie_cache;
        },
        set: function(val) {
            if (val.indexOf('gdxidpyhxdE') != -1){
                console.log('cookie',val)   
                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 + ";";
            }
        },
    });

})();

2. 关于原型链 hook例子 ---- 字符串, 请求头

  • String自带函数例子 Number Array Object 可用同方法
String.prototype.split_old = String.prototype.split;
String.prototype.split = function (val) {
    str = this.toString()
    console.log(str,val);
    debugger;
    return str.split_old
};
String.prototype.split.toString = function(){return'function split() { [native code] }'}
//最后一步防止检测
  • 请求头hook
var header_old = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function (key, value) {
    if (key=='k'){
        console.log(key, value)
        debugger;
    }
    if (key=='token'){
        console.log(key, value)
        debugger;
    }
    debugger;
    return header_old.apply(this, arguments);
}

3. 函数 hook例子

例子1
function a(x,y){return x+y} // 要hook的函数
//  先赋值
old_func = a;
//  改写a方法
a = function(){
    // todo
    console.log('result', arguments);
    return old_func.apply(this,arguments)
}
console.log(a(1,2))  //  调用

例子2
(function() {
    'use strict';
    let old_func = sessionStorage.setItem;
    sessionStorage.setItem = function () {
        // todo
        console.log('argument-----', arguments);
        return old_func.apply(this, arguments)
    };

    sessionStorage.setItem.toString = function () {
        return 'function split() { [native code] }'
    };

})();

相关文章

  • FridaHook笔记

    前言 个人学习笔记 置顶 hook加密 hook js 笔记 一、解决淘系抓不到包的问题 使用Charles、Fi...

  • Hook钩子

    JS hook钩子

  • WKWebView POST请求body丢失问题处理方案

    HOOK 方案 一 hook initWithFrame:configuration: 方法,进行JS注入,使用...

  • 某瓣app _sig 分析

    frida hook js代码

  • $ is not defined

    vendor.js:896 [Vue warn]: Error in mounted hook: "Referen...

  • vue3 hook

    经典的 hook 例子,窗口尺寸发生改变,与其他功能代码无关,可以抽为单独的 hook 。 js文件 文件使用

  • 安装vue-tools遇到JavaScript“build/ho

    安装vue-tools遇到JavaScript“build/hook.js的错误解决办法manifest.js文件...

  • Hook startActivity

    USB连接使用 frida -UF -l hook_startactivity.js 效果图

  • Objection使用

    本篇介绍 frida利用js脚本就可以进行各种hook,而Objection就是整合了各种hook功能并以命令行形...

  • js hook技术

    简介 hook技术是软件系统设计的常用机制,也称它为钩子,使用好hook能极大的提高开发体验。也是我开发经常使用的...

网友评论

      本文标题:js hook 学习整理

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