【逆向案例】某书旋转滑块vmp加解密

admin 2024年6月13日23:49:05评论2 views字数 1892阅读6分18秒阅读模式

免责声明

【逆向案例】某书旋转滑块vmp加解密

文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业和非法用途,否则由此产生的一切后果与作者无关。若有侵权,请在公众号【爬虫逆向小林哥】联系作者

【逆向案例】某书旋转滑块vmp加解密

01

逆向目标

Xs、Xt这里面就不讲了,有想法的可以参考下B站志远的vmp,下面的旋转滑块加密跟xs其实也是大同小异,角度以及轨迹生成下一期再发

暂时无法播放,可回源网站播放

aHR0cHM6Ly93d3cueGlhb2hvbmdzaHUuY29tL3dlYi1sb2dpbi9jYXB0Y2hh

02

抓包分析

注册返回信息加密

【逆向案例】某书旋转滑块vmp加解密

提交验证信息加密

【逆向案例】某书旋转滑块vmp加解密

03

逆向过程

跟栈

在这个地方还是加密好的密文,再往前回溯栈就到vmp文件里面了

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

分析文件

循环和指令集

【逆向案例】某书旋转滑块vmp加解密

指令集大多调用这个l函数

【逆向案例】某书旋转滑块vmp加解密

调用i,最后一个return

【逆向案例】某书旋转滑块vmp加解密

日志断点

输出这里的Q值

JSON.stringify(Q, function(key, value) {if (value == window) {return undefined} return value})

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

先来看返回值解密,直接日志内搜关键词

这里开始解密

【逆向案例】某书旋转滑块vmp加解密

流程跟上面B站视频里面讲的一样,小红书目前一直是DES加解密,因此需要确定加解密的key

基本上都会出现在encrypt以及decrypt后面

【逆向案例】某书旋转滑块vmp加解密

图片解密好了

【逆向案例】某书旋转滑块vmp加解密

接下来看提交信息加密

日志点要多加一些

打印下这里的B[0]索引为了更好的进入指令集里面分析
【逆向案例】某书旋转滑块vmp加解密

"索引B[0]:", B[0]"Q值: ", JSON.stringify(Q, function(key, value) {if (value == window) {return undefined} return value})

输出

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

mouseEnd

【逆向案例】某书旋转滑块vmp加解密

顺着分析比较麻烦,我们直接逆推,拿生成好的值搜第一次出现的位置

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

btoa

【逆向案例】某书旋转滑块vmp加解密

在往上经过一系列流程得到下面的值

【逆向案例】某书旋转滑块vmp加解密

用到了我们上面看到的18,不过后面加了些字符串

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

流程

一个mouseEnd 18加盐18u0006u0006u0006u0006u0006u0006encrypt (某书基本上是des)"Su0014@U‡/(="btoaUxRAVYcvKD0=

【逆向案例】某书旋转滑块vmp加解密

现在还有个问题就是这里的u0006u0006u0006u0006u0006u0006,是从6过来的

这个地方生成了一个2, 然后出来了6,2这里可以猜测是18的长度  但是6还是不知道怎么来的

【逆向案例】某书旋转滑块vmp加解密

需要在指令集这边打上详细的日志查看,我们在索引为31上面打上日志,可以先搜索下这个指令是否频繁调用,调用不频繁的话可以打条件断点

发现整个日志只有五处调用

【逆向案例】某书旋转滑块vmp加解密

直接打条件断点

B[0] === 31

【逆向案例】某书旋转滑块vmp加解密

进入指令集h[31]

【逆向案例】某书旋转滑块vmp加解密

Q == Y(Q, A) % Y(C, g) == 2

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

是个固定值8

所以这里2的由来就是

mounseEnd.lenght % 8

【逆向案例】某书旋转滑块vmp加解密

6 = Y(Q, A) - Y(C, g)

Y(Q,A)还是还是固定值8,Y(C,g)就是上面生成的2

因此这里的"18u0006u0006u0006u0006u0006u0006" 构成就知道了

function encrypt_length(a) {    let b = a.toString().length % 8,        num = 8 - b,        c = a;    for (let i = 0; i < num; i++) {        c += String.fromCharCode(num)    }    return c}
let mouseEnd = btoa(des("WquqhEkd", encrypt_length(18), 1, 0, undefined, 0)) // x移动距离console.log(mouseEnd)

time

【逆向案例】某书旋转滑块vmp加解密

这边的5生成也是跟上面分析的一样

【逆向案例】某书旋转滑块vmp加解密

DES的密钥也在

// time  一共耗时let time = btoa(des("vPMvCY4K", encrypt_length(993), 1, 0, undefined, 0)) // 500 - 1500console.log(time)

tracks

// tracklet track = btoa(des("PYrm8rMk", encrypt_length("[[0,0,270],[18,4,611]]"), 1, 0, undefined, 0))console.log(track)

width

// width 可以固定值let width = btoa(des("WquqhEkd", encrypt_length(246), 1, 0, undefined, 0)) // 286写死console.log(width)

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

04

归纳总结

【逆向案例】某书旋转滑块vmp加解密

【逆向案例】某书旋转滑块vmp加解密

添加好友回复:交流群

原文始发于微信公众号(爬虫逆向小林哥):【逆向案例】某书旋转滑块vmp加解密

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月13日23:49:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【逆向案例】某书旋转滑块vmp加解密https://cn-sec.com/archives/2842038.html

发表评论

匿名网友 填写信息