javascript的函数可不可以hook

这篇文章主要介绍了javascript的函数可不可以hook的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript的函数可不可以hook文章都会有所收获,下面我们一起来看看吧。

网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站制作,高端网页制作,对木制凉亭等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业成都网站营销优化,H5建站,响应式网站。

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,于是便可以用上面的方式进行复写原函数的同时,还不破坏原函数。

关于“javascript的函数可不可以hook”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“javascript的函数可不可以hook”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。


文章名称:javascript的函数可不可以hook
文章地址:http://scyanting.com/article/pjjpdo.html