jsvmp逆向实战x-s、x-t算法还原

3 篇文章 2 订阅
订阅专栏

什么是jsvmp

jsvmp就是将js源代码首先编译为自定义的字节码,只有对应的解释器才能执行这种字节码,这是一种前端代码虚拟化保护技术。

整体架构流程是服务器端通过对JavaScript代码词法分析 -> 语法分析 -> 语法树->生成AST->生成私有指令->生成对应私有解释器,将私有指令加密与私有解释器发送给浏览器,就开始一边解释,一边执行。

这些都不重要,只要知道有这么个技术就行了。jsvmp有一个特性,加密结果是一个一个字符生成的,要想一个个生成肯定需要循环,那无非就是for循环或者while循环以及switch case。这一点至关重要,算法的分析还原就依赖这个特性。

定位关键点

全局搜索关键字“X-s”,定位到main.***.js,这个js文件中会有多处生成x-s的地方,全部打上断点,最终会定位到 c = (a || void 0 !== window._webmsxyw ? window._webmsxyw : sign)(u, i) || {};,只有这行代码被调用并且生成了x-s,其它的几处都是原来的老版本已经废弃了。
在这里插入图片描述

log插桩

在断点处单步调试就会进入到jsvmp,把这个js文件保存到本地并用v_jstools进行ast混淆解密,选择仅变量压缩,压缩变量后替换原来的代码。
在这里插入图片描述

在这里插入图片描述
还记得我前面说过的jsvmp的特性吗?如果你还记得那将会为你节省大量时间,这个时候如果去盲目的动态调试你就会进入一个迷宫永远走不出来,正确做法就是直接在js文件中寻找循环的位置。
在这里插入图片描述
144行到164行有两个while循环,在这两个循环里面添加日志点,144-150这个while循环会无限执行,32g内存都能撑爆,暂时不管这个循环,在161行位置插入日志"h:",JSON.stringify(h[0]),"C:",C,"H:",H,运行结果如下图。
在这里插入图片描述
分析日志可知,当C==781的时候x-s已经生成,但具体生成步骤日志里并没有,那就在160行插入条件断点C==780&&H[0]==31&&H[1]==3&&H[2]==83&&H[3]==1&&H[4]==0,并且把所有进行过运算的方法里都插入日志点,比如185行"%","左:",r(A, B),"右:",r(E, Q),203行"|","左:",r(A, B),"右:",r(E, Q)等,142行特别重要"h3:",JSON.stringify(h[0]),"A:",A,"B:",B,这个日志点一定要打上。
在这里插入图片描述日志点打好之后先停用断点,只保留160行的条件断点,然后继续执行,再次断在160行。
在这里插入图片描述
清空控制台日志信息,启用所有断点(263行的断点停用,这个方法就是拼接字符串),继续执行代码,执行完毕后将日志保存到本地。
在这里插入图片描述

日志分析

notepad打开日志,拉到最底下,复制X-s前面一小部分,全局搜索,全词匹配,然后全部标记。
在这里插入图片描述
匹配结果
仔细观察下图中标红的位置,会发现明显规律,“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=”是固定的,这个时候就可以大胆猜测了,它可能是调用了字符串的charAt方法,传入参数就是下方的数字,返回一个字符,然后依次将字符拼接。
在这里插入图片描述
控制台验证一下,果然如此。
在这里插入图片描述
接下来就得找出13、19、0、34这四个数字怎么来的,往上翻看日志,找到了可疑之处,这里出现了一些位移计算,也生成了上一步需要的数字。
在这里插入图片描述
控制台验证一下,经过反复验证得知,13 = 53 >> 2,19 =((53&3)<<4)|(48>>4),0 = ((48&15)<<2)|(34>>6),34 = 34&63,而且加粗的数字是固定的,那么下一步就是要确定53,48,34的生成逻辑。
在这里插入图片描述
接着往上翻看日志,又找到可疑之处,一个json字符串"{\"signSvn\":\"50\",\"signType\":\"x1\",\"appId\":\"xhs-pc-web\",\"signVersion\":\"1\",\"payload\":\"5c401130ca247f32ba75cbf05e0e58476fd112ed52f233f67fce4c61c5bc93dfc25b0c6065eda2f639a922d4481a611116e2e3bfb89e2da1dad61c5041d6ac2bdad61c5041d6ac2bba1c4fcc5520a3e3f9f6b953ff819f7c4d3964d610405efa8a7e6e067da7404c0381f161cf3a5952aefd4645c665dc827a83a6069b97009fd07c9b6d6913acbc9074093d7367e83ad4cdc39c2b950152b2ef9cd5fbe10084ffcb49de03a9400d0a36d7b01017de7dfffbe9b83b736a194ddc12db02f7193f\"}"
在这里插入图片描述
数字12、13、14有规律的增长,也生成了上一步需要的数字53,48,34,还有三字符’5’、‘0’,‘"’,这三个字符像是从json字符串里面取出来的,12、13、14分别是索引,然后调用’5’.charCodeAt(),‘0’.charCodeAt(),‘"’.charCodeAt()。控制台验证一下猜想,果然如此。
在这里插入图片描述

代码还原

经过上面几个步骤分析,大致生成逻辑已经捋清楚,除了json字符串里面的payload还没还原外,其它的步骤都已还原,并对比了浏览器和代码生成的结果,是一致的,完整代码如下,下一篇文章将分析payload的还原过程。


var str1 = "{\"signSvn\":\"50\",\"signType\":\"x1\",\"appId\":\"xhs-pc-web\",\"signVersion\":\"1\",\"payload\":\"16e0c0c108d9481f25fa55e5d0b68ca2a3754a5a6fd39af8945de60083f572f85fbf196a7df36325df512bc23f13ef9616e2e3bfb89e2da1dad61c5041d6ac2bdad61c5041d6ac2bba1c4fcc5520a3e3f9f6b953ff819f7c4d3964d610405efa8a7e6e067da7404c0381f161cf3a5952aefd4645c665dc827a83a6069b97009fd07c9b6d6913acbc9074093d7367e83ad4cdc39c2b950152b2ef9cd5fbe10084ffcb49de03a9400d0a36d7b01017de7daaeec9560d5a42f0e8cf56bde5e4d9b8\"}";
var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var data = "XYW_";
var arr1 = []
for (var i = 0; i < str1.length; i++){
    var code = str1[i].charCodeAt();
    arr1.push(code)
}
var arr3 = [];
for(var i = 0; i< arr1.length; i += 3){
    arr3.push(arr1.slice(i, i + 3));
}

for (var i = 0; i < arr3.length; i++){
    var arr = arr3[i];
    var arg1 = move_r(arr[0],2);
    var arg2 = move_l(arr[0]&3,4) | move_r(arr[1],4);
    var arg3 = move_l(arr[1]&15,2) | move_r(arr[2],6)
    get_data([arg1,arg2,arg3,arr[2]&63])

}

function move_r(l,r){
    return l >> r;
}

function move_l(l,r){
    return l << r;
}

function get_data(arr){
    for (var i = 0; i < arr.length; i++){
        var code = arr[i];
        var result = str2.charAt(code);
        data += result;
    }
}
console.log(data)
js逆向jsvmp篇某程算法还原(二)
博客
04-19 1774
提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除
小红书x-s 最新 JS逆向 jsvmp
laoyaogegeg的博客
03-23 2949
js逆向 ,小红书x-s,jsvmp是什么 原理 如何解决
xhs-小红书数据采集python算法还原
05-14
可以实现ms级别数据抓取,用pyton还原x-s,x-common。封装了各大类型和接口、开箱既用。
JSVMP分析
Awesome_py的博客
03-12 588
1.jsvmp**:JS虚拟机**就是将js源代码首先编译为字节码,得到的这种字节码就变成只有操作码(opcode)和操作数(Operands),这是其中一个前端代码的保护技术。跨平台兼容性:jsvmp技术可以在不同的操作系统和硬件平台上运行,因为它是基于软件的虚拟机。性能优化:jsvmp技术可以对JS代码进行优化,提高执行效率。安全性:jsvmp技术提供了一种隔离JS代码的方法,可以防止恶意代码的攻击。提供丰富的API:jsvmp技术可以提供丰富的API,使得JS代码可以访问更多的系统资源。
JS逆向JSVMP纯算法还原
zlc1990628的博客
03-08 590
JSVMP 全称 Virtual Machine based code Protection for JavaScript,即 JS 代码虚拟化保护方案。
如何用AST还原某音的JSVMP
sergiojune
03-01 5105
这个网站要找的是X-Bogus和_signature这两个参数的生成,如何去修复他们生成的这个jsvmp呢
小红书x-s、x-s-common加密算法(补环境版本)
03-14
zip包内是小红书的补环境版本X-s、X-s-Common参数的加密生成算法,独立JS文件,文件末尾有调用测试示例。另外可以直接使用Python脚本进行测试,稳定可用!项目内README.md文件内有详细的项目开发流程描述与介绍、安装部署步骤与详细流程、还有配置文件的详细解释!小白新手同样能够根据温度描述快速上手完成部署!有任何问题可以联系作者
jsvmp逆向实战X-Bogus篇,算法还原
jerry3747的博客
03-22 1249
看过很多大佬关于X-Bogus算法还原的文章,都是通过log插桩,分析日志信息再结合动态调试一步步抽丝剥茧,最终还原算法,但是不同的插桩点带来的工作量是完全不同的。经过我的不断摸索,找到了一个更加简单高效的逆向方法。jsvmp的特性除了压缩、混淆、大循环之外,还有一个重要的特征,就是通过apply的方式调用方法,那么我们只需要在大循环的代码里面找到apply并打上日志断点,就可以直接在日志里面分析算法逻辑了,而不是依赖大量的动态调试。
xhs x-s jsvmp算法还原分析流程记录
qq_38977435的博客
06-02 877
x-s算法还原流程及分析
最新小红书x-s参数x-t参数
06-16
最新小红书x-s参数x-t参数、爬虫、python、小红书、反爬虫
蒲公英x-s,x-t,参数
02-12
蒲公英x-s参数
iOS 底层原理逆向脱壳实战-课件
09-09
iOS 底层原理逆向脱壳实战-课件
算法训练营day41
stmfresher的博客
05-27 477
动态规划理论基础(主要就是确定动态规划的几个步骤)
算法每日一题(python,2024.05.24) day.6
L613Z的博客
05-27 635
数字比较型可以用双指针法寻找数字相同(或构成其他关系)的俩个数值(或其他类型),涉及到与数值有关的列表问题可以思考到sort()排序方法加以辅助。
一千题,No.0037(组个最小数)
2301_76783671的博客
05-29 927
给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。现给定数字,请编写程序输出能够组成的最小的数。在一行中输出能够组成的最小的数。
图形学初识--空间变换
航行的土豆的博客
05-29 911
介绍二维和三维下的变换矩阵以及常见的推导和理解方式。主要就是:平移、旋转、缩放
算法-找出N个数组的共同元素
最新发布
Python领域优质萌新创作者
06-02 431
3.1、使用集合的intersection_update方法,将当前编辑的新闻编号集合与common_news_set取交集,并更新common_news_set。1.1、使用集合的交集操作找出被所有编辑共同编辑过的新闻:遍历每个新闻集合进行交集操作,时间复杂度为O(K),其中K为所有编辑操作的总数。3.2、这样,common_news_set中将保留与当前编辑共同编辑过的新闻编号,即找到所有编辑共同编辑过的新闻编号的交集。news_ids: 一个包含N个列表的列表,每个列表包含一个编辑编辑过的新闻编号。
并查集拓展(扩展域并查集)
Qlarkstar的博客
05-29 1022
事实证明,扩展域并查集应该在带权并查集前面讲的,因为比较好理解,而且回过头看带权并查集可能也会更轻松一些。
jsvmp-某乎_x-zes-96参数算法还原(手把手教学)
08-18
还原jsvmp-某乎_x-zes-96参数算法,首先需要了解该算法的具体逻辑和实现方式。接下来是一份手把手教学,帮助你进行还原。 1. 阅读文档:首先,找到jsvmp-某乎_x-zes-96参数算法的相关文档或说明,并仔细阅读。理解算法的目的、输入、输出和具体实现细节。 2. 分析算法:根据文档中的描述,仔细分析算法的各个步骤和计算逻辑。了解算法使用的数据结构、数学模型和函数等。 3. 实践案例:找到使用该算法的实践案例,或者自己创建一个简单的案例。通过这个案例,可以更好地理解算法的工作方式和参数调整的影响。 4. 调试工具:使用调试工具对代码进行逐行调试。在关键节点上加入断点,观察变量和数据的变化过程,以及函数的执行顺序。通过这种方式,深入了解算法的执行过程。 5. 修改参数:通过调试分析,找到算法中的参数和默认设置。尝试更改这些参数的数值,观察算法的输出结果的变化。通过不断修改参数和分析结果,逐渐掌握算法的运行规律。 6. 反向工程:通过对算法代码的逆向分析,尝试还原参数的计算过程。对研究的代码进行逆向工程,分析其中的数学运算和逻辑判断。通过逆向工程,可以更好地理解参数的计算方式。 7. 文档总结:将还原过程中的关键步骤和分析结果总结起来,形成详细的文档。这份文档可以帮助其他人了解算法还原过程,同时也对自己的学习过程进行总结和回顾。 以上是一个基本的手把手教学,希望能够帮助你还原jsvmp-某乎_x-zes-96参数算法。请注意,由于算法的具体实现和难度因人而异,实际操作过程可能比上述步骤更加复杂和耗时,需要耐心和技术能力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 逍遥模拟器安卓7.1离线安装xposed 6943
  • jsvmp逆向实战x-s、x-t算法还原 6681
  • 快手sig签名,python版,可用于快手关键字搜索结果采集 4693
  • 淘宝app无法抓包问题 3893
  • 淘宝闲鱼淘特抓包以及过root检测 3153

分类专栏

  • app逆向 6篇
  • js逆向 3篇
  • python爬虫 6篇
  • 大数据 1篇
  • 机器学习

最新评论

  • 拼多多商家后台字体加密分析

    ディガ: 后续怎么解密呀铁汁表情包

  • a_bogus逆向分析

    奔跑的J: 大佬那个y和乱码机密的是什么算法啊

  • a_bogus逆向分析

    普通网友: 每当我阅读你的编程博客文章时,我总能感受到你的专业水平和耐心解答的精神。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • a_bogus逆向分析

    逆向三十六计: 结尾有点草率了,中途有事打断了就再也写不下去了

  • a_bogus逆向分析

    忘妎: 感谢佬的分享,做教程巨麻烦。。。第一个把前面的分析写得这么详细的。

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • a_bogus逆向分析
  • jsvmp逆向实战X-Bogus篇,算法还原
  • js逆向实战之某书protobuf反序列化
2024年2篇
2023年6篇
2022年2篇
2021年3篇
2020年2篇
2019年5篇

目录

目录

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆向三十六计

赏个馒头,吃饱了才有力气搬砖哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码潍坊网络推广推荐大丰外贸网站制作哪家好迪庆seo优化价格坪地模板制作报价福永网站制作设计推荐陇南百姓网标王推广鄂州网站建设设计多少钱黄石至尊标王哪家好温州百搜标王多少钱兴安盟百搜标王价格深圳网站制作公司黔南网站推广公司丽水网页设计报价清远百度seo报价江门营销型网站建设价格木棉湾模板制作公司东莞关键词排名价格德州建设网站多少钱临汾百度seo哪家好盘锦关键词按天扣费哪家好汉中至尊标王报价丽水网站设计公司合肥SEO按天计费报价同乐网页设计公司怒江网站搭建公司飞来峡网站建设多少钱锦州网站推广方案价格中山至尊标王价格东莞关键词排名哪家好南山百度爱采购公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化