JS Hook原理与作用

本文探讨JS Hook的原理,通过示例展示如何在函数调用前后注入代码。Hook可用于修改系统函数,如与反调试相关的行为,以及处理JSON数据。选择合适的注入时机至关重要,如使用Chrome扩展插件在网页运行前Hook,能有效应对反调试策略。

JS Hook原理与作用

JS Hook原理与作用

假设我们现在有这样一个JS代码

function test(aa,bb){
	cc = aa + bb;
        return  cc;
}
test(100,200);

我们在console中可以修改这个函数,比如让它打印各个参数的输出结果,这就是一个JS Hook,和Frida的Hook很相似。

var _test=test;
test=function(aa,bb){
	console.log(aa);
	console.log(bb);
	var result=_test(aa,bb);
	console(result);

我们现在函数的注入时机是在函数调用之后,页面加载完毕才注入。但实际上我们可以在调用地方下断点,在它运行的时候注入JS Hook,在函数被调用之前就进行修改,这也是可以的。

JS Hook看起来是很简单的,不过我们能够用它来实现很强大的功能,比如修改一些系统函数,如debuggerFunctioneval等,这些都是和反调试相关的。

我们日常拿到的许多数据都是JSON,所以也可以HookJSON.stringfy进行一些操作,这样一来我们就可以在Hook后直接从堆栈中找到调用函数了。

读者应该已经发现,无论如何Hook,我们总是要把自己的代码注入到网页的环境里边,这个注入的时机选择很重要。我们当然可以选择下断点的方式注入,但是有一种更为优雅的方法,那就是编写Chrome拓展插件,插件可以在网页运行之前就对系统函数进行Hook,一些网页的反调试就可以直接步过了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值