标题:js逆向:破解滑块验证码 破解js滑块 破解极验滑块 滑块加密方式 爬虫滑块
前言:
滑块是一个挺常见的验证方式,像极验,网易易盾等。今天就给大家分析一下某手上面的滑块的一些原理。如果有机会,后面我将一一解析市面上所能遇到的各种滑块,努力成为一名“滑块killer”。废话不多说,我们直接开始吧!
原文链接:https://mp.weixin.qq.com/s/8y5CyzwNVFPHPxSlSpPTAw
正文:
地址:aHR0cHM6Ly92aWRlby5rdWFpc2hvdS5jb20vc2hvcnQtdmlkZW8vM3hnaDIydWM4bjhpYTZ1P2F1dGhvcklkPTN4d3A3Y3o2cWhhYXV6OSZzdHJlYW1Tb3VyY2U9YnJpbGxpYW50JmhvdENoYW5uZWxJZD0wMCZhcmVhPWJyaWxsaWFudHh4Y2FyZWZ1bGx5
把本地cookie清掉,重新刷新页面,我们先把滑块弄出来。
打开调试工具,然后准确的划过去,抓到了一个verify请求。payload中可以看到有一长串神秘的字符。我们猜测,这个字符串就是我们滑动滑块的行为信息被某种方式加密后的结果。
下面我们去调用栈里打上几个断点,追踪一下参数
随便打几个,然后清掉cookie,从新刷新页面,调出滑块
这里还没出就断住了,没有意义,放过
等滑块出来,为了不让滑块消失,我们滑动到一个错误的位置。程序进入我们的断点,可以看到参数n里面的内容像极了我们要找的东西
command+shift+p 然后输入console,选择Drawer Show Console,打开小抽屉形式的命令工具。然后输入n,可以看到完整的n。可以断定,这就是我们要找的字符串。
接下来,我们提三个问题:
1.是谁生成的这一串字符
2.用的什么什么逻辑生成的
3.传入的参数是什么
好,我们开始分析,n是v(t,n)的第二个参数,n的内容为什么会是这个字符串呢?那肯定是某个函数,在调用v函数,在传参的时候,给n传的就是这么个数,那么是谁调用的v函数呢?我们来看调用栈
1的位置,表示我们代码运行的位置,也就是我们程序断下的位置,也就是v的位置。那么2处就是调用v的地方。那么我们点击一下,来到2对应的代码处。
Object(a["c"])(this[s("0xa6")], r[s("0x106")](x["a"], f));
这里直接定位到这个Object(a["c"])函数上。注意:我们会多次来到这个位置,我们就叫这个位置叫起始点。
这个Object(a["c"])就是我们刚才说的v,那么r[s("0x106")](x["a"], f)就对应着我们刚才找到的n。
好的,到此我们明白了问题1,是谁生成的这个字符串。就是r[s("0x106")](x["a"], f)生成的。
接下来我们看看他的逻辑,他是如何生成的。我们先看一下这个函数的内容。
这里又调用了另外一个函数,我们继续追踪n.xZoEG。不过这里显示未定义。我们把断点放过,从新从起始点开始。
断点打在这个位置,我们简单分析下r[s("0x106")](x["a"], f),
r[s("0x106")]()是一个函数,然后他有两个参数,
第一参数x["a"],也是一个函数
第二个参数f是一个object,他携带了一些信息,其实这就是我们上面提的第三个问题,输入内容
我们进入r[s("0x106")]()内部,我们来继续追踪n.xZoEG。这次n.xZoEG函数有定义了。我们继续点进去,为了方便描述,我们把这两步叫做:追踪调用关系
可以看到,其实就是调用了第一个参数,第二个参数继续作为参数。这里我们应该明白了,目标字符串就是x["a"]函数,传进去f所生成的。追踪调用关系结束
我们放过所有的断点,再次回到起始点。我们直接跟进去,去看x["a"]的逻辑。
为了方便直接看x["a"]的逻辑,我们可以把刚才追踪调用关系的时候打的两个断点的Disable掉,然后在x["a"]内部打个断点。然后从新开始,直接从起始点跳转到x["a"]内部。
可以看到这个函数其实还执行了挺多的逻辑的。在写下去,篇幅就太大了,所以下篇文章,我们再详细的从第一行代码开始分析,一步一步的分析,看看这个函数到底做了什么。
这里还有个小细节,我用方框表示出来了,我们看到了一个变量的值为“iv”。一些常用的加密方法里,AES是有iv参数的。并且我们还看到了,两个类似被Base64后的东西,正好AES也需要两个参数,偏移量iv,还有key。感觉一切都是那么的巧合。
总结:
首先根据调用栈打上一些断点,去截获携带目标数据的参数,然后再根据调用栈一步一步的追踪,我这里比较巧合,追了一下就找到了起始点的位置。然后就可以配合断点一步一步的跟进去,看各个函数的具体实现逻辑。相对来说,android逆向就没那么顺畅了,android逆向就需要去hook一些可疑的函数,去动态输出一些内容。
欢迎将文章分享到朋友圈、技术群
去和小伙伴们一块讨论吧!
扫码查看更多文章