Skip to content

Latest commit

 

History

History
32 lines (22 loc) · 1.07 KB

1.3JS Hook原理与作用.md

File metadata and controls

32 lines (22 loc) · 1.07 KB

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,一些网页的反调试就可以直接步过了。