js逆向JSVMP篇某程算法还原(二)
共 1104字,需浏览 3分钟
·
2023-07-03 09:45
提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除!
前言:
前面分析过手机端网页版的sent参数,这一篇是分析的是PC端网页版的testab参数,其实当你看到这两个参数的时候,你会发现它们特征都是一样的,如果你还原过sent参数的算法,大概会想testab参数就是sent参数吧,就会拿sent参数的算法去试一下,然后会发现用不了,用不了就对了嘛,以为某程闹着玩呢,就改个名字就是另外一个参数了?
加密入口定位:
全局搜索testab,首先有两个js文件,加密位置在第一个js文件中,点击即可跳转,如下:
这里其实有个坑,上图中的仅仅是加密参数生成的位置,如果从这个地方进去调试vmp,那么到死都拿不到全部的日志信息,因为这里只是将生成的64位数组转为testab参数的地方。不过可以通过这里找到加密的位置,在这个地方断住之后如下:
上图圈出的位置才是加密参数真正开始生成的位置,所以这里算是一个小坑了,然后直接点击圈出的地方跳转过去即可,如下:
这里的window.eval(n)就是入口了,之后就可以从这里进入vm里面开始分析了。从上图的代码中也能看出,它是做了时间校验的,这里注意下就好了, 加密入口找到了,接下来就是开始进去分析代码了,当然详细的分析过程当然就不写了,主要是不想花这个时间,整个算法其实是和sent参数一样的,最后有改动的只有如下部分:
上面这部分呢是还原出来的算法的部分,这部分也可以说是整个算法中最重要的部分了,tsteab和sent的算法中也就这个地方不一样,还记得在还原sent参数算法那篇文章中,有说到一开始会将b对应的这段字符串通过decode函数转成一个二维数组,可能大家不一定记得,先来看看初始的传参,如下:
说的b就是_bot_e9e6c中的,而这里的这一步可理解为是从d中取值,这也就是为啥sent的算法不能直接用于tsteab的原因,主要就是因为这里取的范围不一样,然后下面是整个算法的顺序(只是我还原的算法顺序):
最后看一下:
成功拿到数据。
代码在下方,需要的自取
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
可以,大家都有一颗白嫖的心,不愧是顶尖程序员,代码肯定不可能直接给的啦。