js hook 入门
js hook 基础
js hook方法检测与过检测
proxy与浏览器
js一键快速hook框架
js hook 入门
js hook 基础
js hook非常的简单,具体步骤就是记录之前的函数,然后再重写当前函数即可原理如下图,而因为客户端拥有js的最高解释权所以任何代码都无法阻止hook,只能通过混淆来影响逆向人员分析
测试demo如下
var _eval=eval
eval=function(arg){
console.log(arg)
return _eval(arg)
}
结果如下图
hook 参数稍微不一样,需要用到defineProperty方法,例如下面这样的测试demo
var cookie = document.cookie;
document = Object.defineProperty(document, 'cookie', {
get: function () {
console.log('getter: ' + cookie);
return cookie;
},
set: function (value) {
console.log('setter: ' + value);
cookie = value
}
});
打开浏览器随便找一个网站测试一下
js hook方法检测与过检测
这里检测就要用到hook的特性,或者说hook使用者根本注意不到的一些点(当然如果hooker使用代理器就不好使了),第一个点就是hook之后toString会更改,如下
console.log(eval+"");
var _eval=eval
eval=function(arg){
console.log(arg)
return _eval(arg)
}
console.log(eval+"");
eval.toString()
可以看到从原来的native code 变成了我们自己写的代码,这样防守方就能轻而易举的检测到我们使用了hook这种技巧。但是这种绕过也是很简单的,就是重写我们hook函数的toString方法就好了
var a=eval+""
var _eval=eval
eval=function(arg){
console.log(arg)
return _eval(arg)
}
eval.toString=funct