目标网址:aHR0cHM6Ly93d3cuYmluYW5jZS5jb20vemgtQ04vY2FwdGNoYS9tb2JpbGU/Yml6bGQ9bG9naW4mc2RrVmVyc2lvbj0xLjEuMA==
(要翻墙访问)
一、抓包分析
这个getCaptcha包会返回滑块图片以及后面要用到的ek值
这个data就是加密后的轨迹
二、跟栈分析
从这里开始下断跟逻辑
然后一直跟到这里,然后发现这是最后一次出现发现密文的地方,上一个栈已经没有密文,那么我们在9533这行下断然后重新拖动滑块
然后进去跟栈,这里就是生成参数的位置
g[f(-116, "1Rq!")](lr, c, p, v, S)==>跟进g[f(-116, "1Rq!")]方法观察,其实就是等同于lr(c, p, v, S)
其中 c:为滑动的距离
p:"login"
v:轨迹
S:getCaptcha包里面的数据
然后我们进到 lr 方法,先看他的返回值是哪个再根据这个值去找相应的加密逻辑,因为代码是高度混淆的,一行行看的话比较吃力
可以看到返回的是h对象,p就是我们的轨迹加密值,继续跟进去(er方法)
可以看到我们好像已经快找到了最终的加密位置了,但是还不行,继续跟进去(Xt方法)
然后就会进到一个平坦流,这就是最终的位置了。
像这种平坦流一般的调试手法就是在switch下断,一行一行走
注意看这里(case 2),这是第一个加密算法,这里的话手动还原那些经过混淆的字符且跟进每个方法看看
就会可以简化为下面的代码
然后跟进第二个加密算法(Ut方法)
然后也会进到一个平坦流,同样的手法(switch下断)
这是跟进第二个加密算法平坦流的时候有个变量的值(图中框住的地方),是不是很熟悉…base64呀
我试了一下,确实是base64加密…
那是不是就轻而易举了…
三、加密结果
最后你就会发现,整个轨迹加密算法就10行左右,但是套一层混淆和一些异步就变得复杂了…
到这整个逻辑就分析完了,拜拜,收工!