当前位置:   article > 正文

小红书x-s 最新 JS逆向 jsvmp

小红书x-s

目录

前言

JSVMP是什么

JSVMP一般怎么处理

小红书X-S案例实战

流程分析解决过程

最后整合代码出结果


前言

  • 爬虫越来越内卷,js防护技术日益精进,更多的网站采用vmp的技术反爬,vmp 就是虚拟机 就是混淆控制流 ,但是如果你想像调试普通js一样跟栈, 那么可能你跟个好多天都不一定能搞出来 ,搞的头晕眼花,非常恼火。。。怎么办?还是得硬着头皮干,不能畏惧,需要极强耐心, 本文重点分析分享如何处理jsvmp, 内容为个人见解,不足之处请多指教

JSVMP是什么

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

    .......巴拉巴拉网上搜出很多类似介绍,大概单了解一下就行,不太理解没关系

  • 个人理解,实际上jsvmp就是一种软件实现的计算机硬件系统,比如某些代码在程序运行过程,起到拟寄存器的作用,用来存值。去了解下电脑CUP工作原理,学过汇编会更易于理解

  • 简化的描述流程

  •  在JSVMP逆向分析中,寄存器,循环是重要的特征,还有有一个特性,加密结果是一个一个字符生成的,基本由一个循环就是for循环或者while循环以及switch case控制。这一点至关重要,算法的分析还原就依赖这个特性。

JSVMP一般怎么处理

  • 目前解决jsvmp的主要方案为3种;1、rpc; 2、补环境;3、插桩日志还原算法,第一种不难,第二种补环境遇到小红书x-s这样的检测点太多,对新手来说也不好高,本人喜欢后面这种硬干,一但熟悉了jsvmp流程,硬干挺爽的,思维沉浸在日志分析中 ,一步一步,由浅入深,攻破他的感觉很爽,哈哈哈
  • 总结下,JSVMP,一般在代码中会有一个超长字符串(指令),然后会把这个字符串decode成一个大数组,不断循环从数组中取指令,分配函数执行运算操作,运算过程会在一个数组或者对象中不断放进或取出生成的值,最后生成目标结果,这个过程会有+,/,%,*操作,会有个apply操作,这些都是插桩的关键位置
  • 个人建议对 jsvmp 不太熟的, 了解了如上信息,可以先去实战下携程的testab,kar98k,

小红书X-S案例实战

流程分析解决过程

  • 登录,笔记,评论,点赞等接口目前都需要校验x-s
  • 全局搜索,堆栈跟踪,hook三大法,随便选一个就能轻松定位到关键函数window._webmsxyw
  • 单步进去,就是vmp的代码了,这个时候不能再单步调试了,否则就迷失在里面了,天荒地老也搞不出了,
  • 先把整段代码复制到Notepad++,折叠查看下代码结构
  • 一共五百多行大概看下结构,结合文章开头提到的jsvmp特征,心里有个大概
  • 那咱们就先在关键地方插桩看看(忘记说了,本文暂时以这个接口调试com/api/sns/web/v1/login/qrcode/create),进vmp后这些位置插桩(循环处,apply处)
  • + /  * % 等运算处打上日志
  • 完蛋了,日志太多,浏览器卡死了
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/645865
推荐阅读
相关标签