XHS X-s(XS)纯算逆向
创始人
2024-09-26 06:52:02
0

 已经把所有的侵权地方删除,望批准 

前言

1.本文单纯学习jsvmp和交流,无任何其他意图 

2.学习jsvmp,通过插桩和算法还原。

问:什么是vmp?

JSVMP(JavaScript Virtual Machine Protocol)是一种协议,用于在不同的JavaScript虚拟机(如V8、SpiderMonkey等)和调试器之间进行通信。它定义了一套标准的消息格式和通信规则,使得调试器可以与不同的JavaScript虚拟机进行交互,实现调试、监控和性能分析等功能。

JSVMP的作用包括但不限于:

  1. 调试: JSVMP允许调试器与JavaScript虚拟机进行通信,以便在代码执行过程中进行断点设置、变量查看、调用堆栈跟踪等调试操作。

  2. 性能分析: 通过JSVMP,性能分析工具可以与JavaScript虚拟机交互,收集代码执行时的性能数据,如函数执行时间、内存占用情况等,以便进行性能优化。

  3. 监控: JSVMP还可以用于监控JavaScript应用程序的运行状态,例如监控内存使用情况、异常抛出情况等,以便及时发现和处理问题。

总的来说,JSVMP为开发人员和工具提供了一种标准的交互方式,使得他们可以更方便地对JavaScript应用程序进行调试、性能分析和监控。

1.抓包分析

通过抓包分析得到数据包为这个node

 观察载荷发现 search_id有点像逆向参数 但是请求几次发现 这是个随机值 直接写死就好

 观察请求头发现 三个参数需要加密,但是很明显x-t是个时间戳,再次经过测试发现,需要逆向的只有X-s一个值,观察X-s发现,他是由XYW_拼接上一个字符串成分的(根据逆向经验来说ey是{的base64编码),我们对其进行base64解码

发现payload就是我们要求的参数

 全局搜索x-b,发现生成的地方就是在中间的那个函数,至此,抓包分析已经结束

2.代码分析

(1)进入函数

发现这是一段完全看不懂的代码(所以现在放弃还来得及),这个便是vmp代码了(vmp上文已经介绍)。我们新添一个代码段,测试一下是不是加密值

 执行完结果就是xs 判断没错

3.插桩分析

问:什么是插桩?

在软件开发中,插桩(instrumentation)是指在程序的源代码或者目标代码中插入额外的代码,以便在程序执行时收集信息、监视程序行为或修改程序行为的过程。插桩通常是通过在程序的关键位置插入代码来实现的,这些位置可以是函数调用、循环开始或结束、变量赋值等。

插桩的主要目的包括但不限于:

  1. 性能分析: 插桩可以用于在程序执行时收集性能数据,例如函数执行时间、内存使用情况等,以便进行性能分析和优化。

  2. 调试: 插桩可以在程序执行时插入调试代码,以便在程序运行时进行调试操作,如打印调试信息、监视变量值等。

  3. 安全检查: 插桩可以用于在程序执行时插入安全检查代码,以检测潜在的安全漏洞或恶意行为。

  4. 动态分析: 插桩可以用于在程序执行时收集动态信息,如代码覆盖率、函数调用图等,以便进行动态分析和测试。

插桩通常是通过静态分析或动态分析技术实现的。静态插桩是在程序编译或加载时修改程序的源代码或目标代码,而动态插桩是在程序运行时通过代码注入等方式插入额外的代码。

那我们接下来要在哪个地方插桩呢 ?

那当然vmp的最小指令集进行,那我们先分析代码来找到他最小指令集的位置

 我们再进入_ace_1ae3c函数里面

 发现实际上最小指令是这个函数,那我们便在这个位置进行插装

插装代码如下

console.log(_ace_d656a)                 if(_ace_7e97a && _ace_7e97a[1]!='W' &&_ace_7e97a[1]!="implementation"){                     window.data+=_ace_7e97a.toString()+"\n";                     window.a=_ace_7e97a                 console.log(_ace_7e97a)                 }

打印插装结果

天纳!九十多万条数据(很有可能电脑卡死,我也是一把一把泪卡过来的),如果经常卡死的话可以把打印内容保存到文档里,现在我们就是要对这堆数据进行分析

4.算法分析

首先我們得明白我們在做什麽 我们得对参数进行分析

1.我们先搜索/api/sns/web/v1/search/notes,找到其最后一个位置

发现是url+载荷进行拼接 这个大数组要么是加密结果要么是加密方法里的数字 我们搜索发现搜索不到加密方式 那接着往下走

Tips:将其转成16进制更容易搜到

我们接着往下找发现

x1为32位的字符串(盲猜是md5加密)

x2这种格式的数据一般都是环境检测值 直接写死

x3发现来自cookie里的a1

x4时间戳

对刚才的url加上载荷进行md5加密

发现刚好匹配 所以以上猜测成立

再往下找数据

发现了这个数据,观察很像base64,我们对他进行解码发现

 就是对x1 x2 x3 x4进行base64

然后我们再往下找找到生成数据的地方,发现

在这里payload已经生成了,所以我们往前找

 发现这里有大数组,这里极有可能是加密方法里的参数,我们把他转成16进制再搜索

发现这大概率是一个des加密,那么我们此时此刻还差一个key key通常是16,32位的

 发现这个恰好是32位,那我们此时只要带入加密便可得知是不是正确的了

 至此,所有加密都已经找到

5.算法总结

x1=对url和载荷拼接后进行md5摘要

x2=环境 (可以写死x2=0|0|0|1|0|0|1|0|0|0|1|0|0|0|0)

x3=cookie里的a1

x4=时间戳

再获取payload=对x1到x4用;拼接起来进行base64编码 最后通过des生成

最后 payload带入{ "signSvn": "51", "signType": "x1", "appId": "xhs-pc-web", "signVersion": "1", "payload": payload }进行base64编码,再在开头加上XYW_

至此,逆向完成

6.效果演示

测试完成,逆向成功

补充

如果是在浏览器控制台进行算法分析会更容易看出各种加密方式,直接通过tostring保存到文档会有很多干扰,这里给出新的优化插装代码(前面也是忘了)

if (_ace_7e97a && _ace_7e97a[1] != 'W' && _ace_7e97a[1] != "implementation") {                     try {                         window.data += JSON.stringify(_ace_7e97a) + "\n";                         window.a = _ace_7e97a                         console.log(JSON.stringify(_ace_7e97a))                     } catch (e) {}                 }

这样子保存到文档会更加紧凑,还可以分段插桩也更容易看出,这里我就不再过多赘述,有不足的地方欢迎指针

需要源码+我VX

微信公众号

期待你的关注

相关内容

热门资讯

笔记本xp系统安装安卓系统,轻... 你有没有想过,在你的老式笔记本上安装一个全新的操作系统呢?想象那台陪伴你多年的老笔记本,突然焕发出青...
安卓操作系统吃内存,安卓操作系... 手机里的安卓操作系统是不是让你感觉内存越来越不够用了?别急,今天就来给你好好分析分析这个让人头疼的问...
王者号ios系统怎么转安卓系统... 你是不是也和我一样,对王者荣耀这款游戏爱得深沉呢?尤其是当你发现某个英雄在安卓系统上玩起来更加得心应...
战神遗迹安卓苹果系统,探索神秘... 亲爱的玩家们,你是否曾在游戏中追寻那些传说中的神秘遗迹?今天,我要带你走进一个充满传奇色彩的领域——...
几何a安卓系统升级,畅享智能出... 你有没有发现,你的几何A最近变得聪明多了?没错,就是那个陪伴你上下班的几何A,它悄悄地升级了安卓系统...
系统最清爽的安卓手机,探索系统... 你有没有想过,拥有一部系统最清爽的安卓手机,就像是拥有了夏日里的一阵清风,让人心情舒畅,操作顺畅?今...
安卓10系统严重有问题,揭秘严... 最近你的安卓手机是不是也遇到了一些让人头疼的问题呢?别急,让我来给你一探究竟,看看安卓10系统到底有...
安卓系统闽政通打不开,“闽政通... 最近是不是有不少小伙伴在使用安卓手机时遇到了一个让人头疼的问题——闽政通打不开?别急,今天就来给你详...
安卓系统有指纹忘了图案,解锁攻... 手机解锁方式千千万,指纹解锁和图案解锁可谓是其中的佼佼者。但有时候,指纹解锁用得太多,导致忘记了图案...
QQ飞车安卓系统怎么换苹果系统... 你是不是也和我一样,对QQ飞车这款游戏爱得深沉呢?不过,最近我发现了一个超级有趣的问题:怎么把QQ飞...
安卓可冻结的系统文件,那些不可... 你知道吗?在安卓的世界里,有一些神秘的文件,它们就像隐藏在深宫中的宝贝,让人既好奇又敬畏。这些文件,...
安卓系统安装需要备份吗,关键指... 你最近是不是在准备给安卓手机升级系统或者安装新应用呢?别急,别急,在这之前,有个小细节你得注意一下—...
高仿ios的安卓系统,带你领略... 你有没有想过,为什么安卓手机那么受欢迎,却还是有人对iOS系统念念不忘呢?其实,现在市面上就有一种神...
安卓系统全能播放器,尽享视听盛... 你有没有发现,手机里总是装满了各种音乐、电影、电视剧,但是找到一个能让你一次性搞定所有播放需求的软件...
在哪里安装安卓系统好,安卓系统... 你有没有想过,为什么安卓系统这么受欢迎呢?它那强大的兼容性和丰富的应用生态,简直让人爱不释手。但是,...
如何自己提升安卓系统,自我提升... 你有没有发现,随着智能手机的普及,安卓系统已经成为了我们生活中不可或缺的一部分呢?但是,你是否想过,...
安卓子系统内存不足,应对策略与... 手机突然卡顿,是不是安卓子系统内存不足在作怪?别急,让我带你一探究竟,揭开这个问题的神秘面纱!一、安...
一鸣安卓系统如何安装,轻松上手... 你有没有想过,给你的安卓手机换换口味?别看它现在运行得风生水起,偶尔来点新鲜玩意儿,岂不是更带劲?今...
安卓操作系统的归属,源自谷歌的... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、处理工作的安卓操作系统,它究竟是谁的孩子呢?今天,就让我...
安卓启动系统设置界面,揭秘安卓... 你有没有发现,每次打开安卓手机,那启动系统设置界面就像是个神秘的宝箱,里面藏着无数的小秘密?今天,就...