首页 > Web开发 > 详细

js hook

时间:2021-01-31 21:16:46      阅读:44      评论:0      收藏:0      [点我收藏+]

Hook定义

Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权

这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递

简单来说,就是把系统的程序拉出来变成我们自己执行代码片段

在 js 中,系统程序可以指浏览器API,也可以指代码中实现的一些方法等


Hook 步骤

1、寻找 hook 点

2、编写 hook 逻辑

3、调试

函数 hook 公式:

old_func = func
func = function(argument){
	my task;
	return old_func .apply(argument)
}
func.prototype..... = .......

func :要hook的函数

对象中属性 hook 公式:

old_attr = obj.attr
Object.defineProperty(obj, ‘attr‘, {
        get: function() {
            console.log(cookie_cache);
            return old_attr 
	},
        set: function(val) {
		 return  ......
}

hook cookie

Object.defineProperty(document, ‘cookie‘, {
        get: function(){
        debugger;
        return;
    },
        set: function(val){
        debugger;
        return;
    }
})

技术分享图片

hook eval

eval_bk = eval
eval = function(val){
    debugger;
    return eval_bk(val)
}
eval.toString = function(){
    return "function eval() { [native code] }"
}

js hook目的是找到函数入口以及一些参数变化,便于分析js逻辑


Hook 插件:油猴脚本

Tampermonkey

// ==UserScript==
// @name         Hook global
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       悦来客栈的老板+妄为写代码+萌木盖
// @include      *
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    ‘use strict‘;
    //全局变量 监控
    var t = window._t;
    var window_flag = ‘_t‘;
    var window_value = window[window_flag];
    Object.defineProperty(window, window_flag, {
        get: function() {
            console.log(‘Getting window._t‘,window_value);
            return t;
        },
        set: function(val) {
            console.log(‘Setting window._t‘, val);
            debugger;
            t = val;
            return t;
        }
    });
})();

hook的关键代码:@run-at document-start 意思为脚本将尽快注入。

还一个主要函数是defineProperty他监控函数值,set该值和get该值都会调用这里面的两个方法。

此脚本是针对一号店的登录页面,其他网站需根据想监控的数据改对象名和变量值

js hook

原文:https://www.cnblogs.com/kai-/p/14353458.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!