vvv 大佬的 jsvm(猿人学18 及 新版本)

原创
2021/02/21 11:41
阅读数 3.8K

这一天,终于记起了公众号的密码(不是,终于有素材了~)

最近各个爬虫群里出现了一个“叛徒” --- vvv大佬

以下是题目及链接

http://match.yuanrenxue.com/match/18

http://39.101.191.131:8000/


猿人学18是1.0的版本 另一个网址是最新版~ 新更新的题目也会在上面


让我们祝他好运~


下面开始今天的分析

(我还是搞得算法,hook 或者 rpc 可以找志远大佬py一下)


首先看看1.0版本吧

大概了解过的可以找到 下一个 xhr断点  加密是绑定在了open上面 



在open这行下个断点进去 这部分开始就是vm的内容了


首先看两个东东

然后 其实 hook 一下 CryptoJs parse啊 encrypt 就可以知道了


这边分享另一个思路,最后能看到的结果是这样子的

这样子其实蛮明显的了  时间戳生成的 key iv  aes cbc 加密 加密内容是鼠标几个点  那这个怎么来的呢? 你猜~



搜索 return yU_[_v].apply(yU_, __) 这个函数 下一个log 断点

其中最后一个是运行结果 如果加上日志等于运行一次 整体代码运行结果可能会出错。不过在分析的时候还是可以加上的 


下完之后 鼠标移出 就会发现控制台输出很多内容

这就是记录鼠标的位置  点击一下第二页 上面的输出内容就能看到了 

是不是很简单 终于为什么是这个位置 你猜~ 自己跟一下代码总能找到答案的(或者看看下面2.0版本的分析吧)



------------------------------------------------------------------------------

最新的版本 多了一些检测以及防 hook 用rpc还是可以无脑过 不过加密算法变成了自写的算法,对于xml.open也做了一下隐藏  首先还是xhr断点看看



直接在这停下来了 相同的思路  log断点,运行一次

看输出就可以看到大致的算法了

页数+时间戳 charCodeAt

32次 Random算法 按随机数大小排序,32次 charAt 就得到了结果


那么问题来了 随机数 后台怎么检测呢?这个 seed 是啥

然后就可以在相同位置 当调用 Random函数的时候下个断点 

这种时候不得不说 狗哥牛逼!

实测 Random 算法就是这个啦

然后的问题就是 初始化的seed是哪来的 这里就提供个思路

return y__ && (V__ = __V(_, V__)) 这边下一个条件断点


初始化的seed就是这里来的


最后还原完算法就30行左右


分析结束啦~ 代码会发到唠嗑群~欢迎大家进群唠嗑 vvv大佬也在群里 第一时间获取最新题目hhh 不得不说 这个反爬还是很厉害的(坐等更新吧)


群在这~

本文分享自微信公众号 - python爬虫与js逆向(pythonORjs)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中

作者的其它热门文章

打赏
1
0 收藏
分享
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部