这几天在做某群的一个滑动验证码,里面有一些变量的生成方式。如果不把他的代码都看一遍,一步步debug,是很难找到的。如果你要把他的代码都看一遍,成本就太高了。所以,今天教大家一个技巧,就是HOOK。Hook可以理解为钩子。我这里说的是给自己抓一个地方,给想要的变量取值和设置值。让我们从整体开始。1、相关JS语法hookjs需要用到一个js函数Object.defineProperty(),这个方法会直接在一个对象上定义一个新的属性,或者修改一个对象已有的属性,并返回这个对象。里面有三个参数,分别是:要挂钩的对象和需要重新定义的被挂钩对象的属性。让我们从一个例子开始。2.钩子的常见例子我们之前在一些网站上使用过cookies。我直接搜索cookie的值,找到它的生成位置,但是不是所有的网站都能直接找到,太费时间了。当我们需要使用hooks的时候,我会在这里简单贴一段hookcookie的代码:获取cookie');returndocument.cookie;},set:function(val){console.log('Settingcookie',val);debugger;returnval},});})();这里我们直接捕获cookie的get和set方法。一般我们只需要捕获set方法,把上面的代码放到油猴插件上重新运行,然后刷新网站就可以看到了:这个看到你想要的cookie的时候就可以了检查右侧的调用堆栈。找出它是从哪里产生的很简单,剩下的就是自己分析了。3、获取一个变量的生成方式上面的方法虽然很方便,但也不是万能的。如果我们要获取某个对象的某个变量,而这个对象不是全局对象,比如window或者document,那么这样获取是获取不到的,或者可以看这里:这里是获取_对象的fL的值生成方式,如果直接搜索fL,是找不到结果的,因为这些变量的名字已经混淆很久了。这时候你就会想说,你勾不勾吗?可以,试试看:代码很简单,直接运行+刷新网站,直接报错给你,何况还会给你断点。这个时候我们还需要一个东西,我们需要用到我们的fiddler,它不仅仅是一个抓包软件,我们可以通过这个软件将我们在指定网站的请求重定向到我们指定的文件,然后配合hook技术我们刚刚了解到,这样一来,我们想要的变量的生成方法就直接浮出水面了。这里,先把我们需要重定向的原文件拷贝过来,然后在这个对象的定义中加入我们的钩子代码:Fiddler上的重定向:没有的话自行百度,这不是本文重点。配置完成后刷新网站,这时候你想要的结果就来了:会出来的。这个时候只要查看右边的调用栈信息就可以了。这不是很容易吗?太简单。4.钩子的其他技巧。Hooks不仅可以捕获变量的值,还可以hook指定的函数。我这里暂时不说。我还没有找到任何应??用程序的例子。如果以后遇到了,我会写下来给大家的。最后,以上就是本文的全部内容。如果对您有帮助,请点个赞,谢谢!另外解决了某组滑动问题。由于不可抗力,不会放出源码,不过下周我会写一篇文章,谈谈需要注意的地方。最后,点赞越多,更新越快,你懂的!END点赞越多更新越快
