js_调试hook定位参数

7 篇文章 3 订阅
7 篇文章 0 订阅

hook:就是替换原方法。

在汇编中类似的情况:
push 5个字节 <----替换---- jump 5个字节
就可以跳换到代码的某一个方法执行。

在App中:
XP框架—>反射手段替换。

js中(3种)
1、覆盖源函数

function xxx(){
	console.log("111");
}
xxx = function(){
	console.log("222");
}

在这里插入图片描述
但是这样就有个缺陷,不能调用原来的xxx()函数【打印“111”的那个】。
所以,我们就需要用一个变量把之前的方法存起来。

function xxx(){
	console.log("111");
}
var xxxx_ = xxx;
xxx = function(){
	console.log("222");
}

问题:可不可以覆盖浏览器环境的方法???
在这里插入图片描述
Preserve log 调试的时候不让他清空列表。
在这里插入图片描述
或者
在这里插入图片描述
说明是可以覆盖浏览器环境的方法的。

2、Object.defineProperty() 替换一个对象的属性,属性里面可能是一个方法也可能是一个值(gettersetter)。
官方介绍:Object.defineProperty() 方法会直接在一个对象上定义一个新的属性,或者修改一个对象的现有属性,并返回此对象。

										 |
										 |	重点
										 |	    		hook框架。。。
										 V
(function() {
    //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;
		}
    });
})();

快速定位到是怎么设置值的。然后我们就可以判断是怎么加密的。
在这里插入图片描述
点击VM,就会走进来了。

所以就快速走进来了。
快速定位到是怎么设置值的。然后我们就可以判断是怎么加密的。

3、new一个替换参数

//构造一个代理,第一个参数是原始对象,第二个参数是代理处理器。
dataStore = new Proxy(dataStore, handler);

二、hook是有时机的。本地的Cookies才需要hook。
1、在控制台注入的hook,刷新网页就失效了。
问:怎么让它不失效。
1)
在这里插入图片描述
在这里插入图片描述
找到第一个加载的js的资源文件,并在第一行打上断点。
但是后面我们会发现,这样做的话,可能是由于动态加载(也就是说JavaScript可能写在html里面)异步的原因,也是会错过很多的Cookies。

所以我们需要在控制台手动注入hook。(但在针对某些站hook的时机还是会晚一点的)。

2、利用FD的替换响应 ,然后注入hook(更好的方式)
这种时机比较靠前的。

拦截+加工+放过。

3、油猴插件(不推荐)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值