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

JS hook 3种方法

时间:2022-12-03 16:33:49浏览次数:28  
标签:function console log JS hook cookie 方法

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


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.油猴插件(不推荐,容易被检测)


<table><tr><td bgcolor=orange>本文仅供学习交流使用,如侵立删!</td></tr></table>


标签:function,console,log,JS,hook,cookie,方法
From: https://blog.51cto.com/u_14262285/5908569

相关文章

  • 多态与方法重载
    ......
  • SpringCloud Alibaba(七) - JWT(JSON Web Token)
    原文链接:JWT详解:https://blog.csdn.net/weixin_45070175/article/details/1185592721、什么是JWT通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串......
  • day05--方法
    方法Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法......
  • js-day05-猜数字游戏和随机点名升华
     猜数字游戏<script>    //随机数    functiongetRandom(min,max){      returnMath.floor(Math.random()*(max-min+1))+min......
  • c#中生成图片的另类方法,比gdi方式要简单很多
    我们如果想生成一张图片,就会调用GDI方法,画直线、画文字、画矩形等,整体制作下来很繁琐。现在有另一种方法,就是先生成html文件,再把这个html文件转成图片文件,思路还是把html文......
  • JS hook 3种方法
    本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!JSho......
  • JS案例:回文数的两种简易解法
    方法一解题思路:1.先将数值型转为字符串型,然后取字符串长度的一半向下取整(因为奇数个则最中间的不需要比较)2.从前和后同时进行遍历比较是否相等,不等时返回falsevarisPal......
  • Stemciljs学习2、组件生命周期
    组件有许多生命周期方法,可用于了解组件何时“将”和“执行”加载、更新和呈现。可以将这些方法添加到组件中,以便在正确的时间挂接到操作中。在组件类中实现以下方法之一,St......
  • js 金额转大写
    参考:https://www.yisu.com/zixun/353425.html //金额转为大写exportfunctionfunctiondigitUppercase(price){constfraction=["角","分"];constdigit=......
  • 《易筋经》所载呼吸方法
    初天麟/整理《易筋经》原分上下两卷,为佛家达摩尊者所创造,般刺密谛译师翻译的。据传,达摩尊者自印度东来,住锡少林寺,传授佛家的禅修“大乘法”,为“禅宗”东来的第一代......