一、逆向中,我们通常将原函数修改、覆盖和置空等的过程称为hook;因此,我们需要了解方法的常见定义方法。
1、常见的定义方法。虽然定义方式多种多样,但实际含义都一样
1、function a(name){alert(" first definition ");}
2、var a = function(name){alert(" second definition ");}
3、var a = (name) => {alert(" third definition ");} // ES6引入
4、var a = new function("name", "alert(' fourth definition ');")
2、理解hook
function b(name){
console.log(name+"哈哈哈");
}
(function (){
b = function (jb,cd="chongqing"){
console.log(jb+"----"+cd);
}
})()
b("nana"); // nana----chongqing
使用立即执行函数,在立即函数内部重写外部变量的方法,确保函数内部的变量不受外部全局变量、外部函数以及第三方库或框架的影响。当外部调用 b("nana")
时,实际上调用的是重新定义后的同名函数,而不是原先的外部函数。
3、通过控制台进行hook的话,一刷新网页就会失效,我们可以使用油猴、fiddler等插件或工具进行插入脚本保证其一直存在。