首页 > 其他分享 >JS hook 3种方法

JS hook 3种方法

时间:2022-12-03 15:34:52浏览次数:44  
标签:function console log JS hook cookie 方法

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!

JS hook 3种方法

环境

  • win10
  • node

方法一:覆盖原函数

直接全部重写原函数
function xxx(){
	console.log("1111");
}
xxx = function(){
	console.log("2222");
}

在这里插入图片描述

覆盖修改浏览器环境
window.alert = function(){console.log("重写了alert方法!")};
setInterval = function(){console.log("重写了setInterval方法!")};

在这里插入图片描述

方法二:通过Object.defineProperty替换一个对象的属性

属性里可能存的是方法,也可能存的就是一个值(值有两个方法getter、setter)

//下面是一个示例:这个示例演示了hook全局的cookie设置点
(function() {
    //严谨模式 检查所有错误
    'use strict';
    //document 为要hook的对象   这里是hook的cookie
	var cookieTemp = "";
    Object.defineProperty(document, 'cookie', {
		//hook set方法也就是赋值的方法 
		set: function(val) {
				//这样就可以快速给下面这个代码行下断点
				//从而快速定位设置cookie的代码
				console.log('Hook捕获到cookie设置->', val);
				cookieTemp = val;
				return val;
		},
		//hook get方法也就是取值的方法 
		get: function()
		{
			return cookieTemp;
		}
    });
})();

方法三:new Proxy 不常用

Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。

Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。

JS hook 时机

1.在控制台注入的hook,刷新网页就失效了

解决:在网页加载第一个js的位置,第一行下断点,然后在控制台手动注入hook,适用于快速调试
问题:有可能注入hook的时机还是会晚一点,因为下断点的js位置不一定是第一个加载的

2.利用Fiddler的替换响应,注入hook

这种时机比较靠前

3.油猴插件(不推荐,容易被检测)


本文仅供学习交流使用,如侵立删!

标签:function,console,log,JS,hook,cookie,方法
From: https://www.cnblogs.com/c1033383881/p/16947768.html

相关文章

  • JS案例:回文数的两种简易解法
    方法一解题思路:1.先将数值型转为字符串型,然后取字符串长度的一半向下取整(因为奇数个则最中间的不需要比较)2.从前和后同时进行遍历比较是否相等,不等时返回falsevarisPal......
  • Stemciljs学习2、组件生命周期
    组件有许多生命周期方法,可用于了解组件何时“将”和“执行”加载、更新和呈现。可以将这些方法添加到组件中,以便在正确的时间挂接到操作中。在组件类中实现以下方法之一,St......
  • js 金额转大写
    参考:https://www.yisu.com/zixun/353425.html //金额转为大写exportfunctionfunctiondigitUppercase(price){constfraction=["角","分"];constdigit=......
  • 《易筋经》所载呼吸方法
    初天麟/整理《易筋经》原分上下两卷,为佛家达摩尊者所创造,般刺密谛译师翻译的。据传,达摩尊者自印度东来,住锡少林寺,传授佛家的禅修“大乘法”,为“禅宗”东来的第一代......
  • js-day05-随机数
    随机函数<script>封装成一个函数,可以方便调用    //随机数    functiongetRandom(min,max){      returnMath.floor(Math.random......
  • el-dialog获取其中的dom节点方法
    经常在项目中需要创建弹框,弹框里进行一些dom的操作,插入播放器或者上传文件等等。那么获取dom,经常是null或undefinedthis.dialogVisible=truethis.$nextTick(()=>{ l......
  • hud:Being a Good Boy in Spring Festival(nim博弈方法数计算)
    ProblemDescription一年在外父母时刻牵挂春节回家你能做几天好孩子吗寒假里尝试做做下面的事情吧陪妈妈逛一次菜场悄悄给爸爸买个小礼物主动地强烈地要求洗一次碗......
  • Fastjson漏洞+复现
    1.漏洞介绍​​FastJson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利......
  • qt中父子页面切换隐藏实现方法 (利用信号槽机制实现)
    首先既然你打开了这篇文章,那你一定想到过,将子界面作为父界面的一个属性来实现,但是这样父界面通知子界面会很轻松,但子界面通知父界面怎么搞呢?很显然不能再子界面再实例化父......
  • 一文了解 Go 方法
    耐心和持久胜过激烈和狂热。哈喽大家好,我是陈明勇,今天分享的知识是Go方法。如果本文对你有帮助,不妨点个赞,如果你是Go语言初学者,不妨点个关注,一起成长一起进步,如果本文有......