十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍了javascript的函数可不可以hook的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript的函数可不可以hook文章都会有所收获,下面我们一起来看看吧。
网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站制作,高端网页制作,对木制凉亭等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业成都网站营销优化,H5建站,响应式网站。
javascript的函数可以hook;hook是一种动态修改函数执行流程或返回结果的方法,JavaScript作为一种动态语言也可以进行hook操作,hook通常用来针对某些参数或者变量进行侦听、打印输出、替换等操作。
本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。
可以。
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”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。