首页前端开发其他前端知识JS函数hook操作有什么用,应用场景有哪些

JS函数hook操作有什么用,应用场景有哪些

时间2024-03-25 11:06:04发布访客分类其他前端知识浏览1354
导读:这篇文章主要介绍了title,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望大家通过这篇文章可以有所收获。 javascript的函数可以hook;hook是一种动态修改函数执行流程或返回结果的方法,JavaScri...
这篇文章主要介绍了title,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望大家通过这篇文章可以有所收获。

javascript的函数可以hook;hook是一种动态修改函数执行流程或返回结果的方法,JavaScript作为一种动态语言也可以进行hook操作,hook通常用来针对某些参数或者变量进行侦听、打印输出、替换等操作。

本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。

javascript的函数可以hook吗

可以。

Hook是一种动态修改函数执行流程或返回结果的方法,在实际应用中非常广泛。Javascript作为一种动态语言,也可以进行Hook操作。随着Javascript语言的发展,Hook的方法也越来越多,

hook直译的意思为钩子,在逆向领域通常用来针对某些参数,变量进行侦听,打印输出,替换等操作。

示例如下:

示例代码

function add(a,b){

return a + b
}

hook代码

这是一个很简单加法函数,通过Hook能获取到这两个参数的值,相当于在return之前添加了一句代码console.log(a,b),这样便能输出这两个的值便于分析。那么可以使用如下的方式来复写改函数,而这个方式在javascript也就是装饰者模式

let _add = add
add = function () {

  console.log('arguments', arguments)
  let result = _add.apply(this, arguments)
  console.log('result', result)
  return result // 如果不需要result 则可直接return _add()
}

完整代码

function add(a, b) {

  return a + b
}

 
let _add = add
add = function () {

  console.log('arguments', arguments)
  let result = _add.apply(this, arguments)
  console.log('result', result)
  return result 
}
    
 
add(1, 2)

再次调用add(1,2)便会输出arguments参数以及结果3,一个很简单HOOK就实现了。

不过这个例子可能过于简单,我所要表达的意思是,通过Hook,定位到我们想Hook的函数与变量,通过一系列操作(函数复写,元编程),只要触发该函数或使用(取值,修改)该变量,便能将我们想要的结果(前后的结果(如 加密前,加密后))获取到。这才是我们的目的。

书中给的例子想说明的,想为某个原函数(比如这里的add)添加一些功能,但该原函数可能是由其他开发者所编写的,那么直接修改原函数本身将可能导致未知BUG,于是便可以用上面的方式进行复写原函数的同时,还不破坏原函数。


通过以上内容的阐述,相信大家对“JS函数hook操作有什么用,应用场景有哪些”已经有了进一步的了解,更多相关的问题,欢迎关注网络或到官网咨询客服。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: JS函数hook操作有什么用,应用场景有哪些
本文地址: https://pptw.com/jishu/652738.html
HTML5中不能换行的标签有哪些? PHP中使用preg_replace出现报错怎么办呢?

游客 回复需填写必要信息