某音X-Bogus加密参数分析与jsvmp算法

1. 抓包分析

抛开自动化、RPC这些方案。除了X-Bogus参数的校验,没有其他过多的检测。这里以评论为例,抓包分析:

抓包参数虽然看似很多,webid、msToken这些参数经过测试发现并不会被验证,可以直接注释掉即可:

2. X-Bogus参数分析

接下来分析X-Bogus ,先找关键特征点!Web JS逆向分析中如何找加密入口看我之前的文章中都有总结!这里我先是全局搜索了一下X-Bogus,并不多就两个文件,如下:

先点开webmssdk.js文件,发现JS逻辑都是被混淆过的,下断点基本在这一步是获取不到太多有用的信息,试试XHR的断点方式指定评论访问的接口路径,如下所示:

断点下完后下拉评论加载,断住后,停在了如下位置处:

这里X-Bogus参数已经生成,鼠标停留分析上述代码,我这里在控制台看了一下this,如下:

接下来就需要往前去分析,找到调用的JS

_0xc26b5e请求内可以看到有评论的接口数据

这里也可以用AST解混淆工具来解一下,没法分析的话

通过插桩日志调试,查看**_0x2458f0['apply'](_0xc26b5e, _0x1f1790)** 的调用,如果分析X-Bogus 全过程都用插桩的方式去调试分析,很耗费精力!可以通过AST去还原jsvmp,这个可以看看很多大佬的文章!

定位到加密位置入口处,jsvmp ,直接去扣代码的意义不大。怎么去确定代码是否为jsvmp ?一种方法是检查代码中是否包含长字符串或数组,并且缺乏明确的逻辑结构。此外,代码通常包含一个不断循环执行的部分,其中包含一系列指令!大都基于堆栈的栈式虚拟机实现。通过这些特征,我们可以辨别出是否存在 jsvmp的代码结构:

关于如何去还原VMP的代码:

  • 调试VMP代码: 使用调试工具分析VMP代码,特别是关注循环代码中每个操作数的含义。通过观察操作数的使用方式和上下文,可以推测其对应的功能和作用
  • 分析每个操作数的意义: 仔细分析循环代码中每个操作数的含义,理解其在算法中的作用。这可能涉及到理解堆栈的使用、变量的赋值和操作等方面
  • 修改源代码中的VMP解释器: 根据对代码的分析,修改源代码中的VMP解释器以添加对AST的对应代码。这包括将操作数翻译为具体的语法结构和逻辑。通过添加这些对应代码,可以更好地理解和还原原始代码的逻辑
  • 生成最终代码:运行修改后的 VMP 解释器,对原始代码进行解释和还原。输出的结果可以是生成的抽象语法树、经过修改的代码或其他形式,具体取决于还原的目标和需求

jsvmp纯算加密联动Python脚本请求测试效果如下所示:

爬虫采集数据对比如下(包含视频信息与评论信息):

有需要的朋友可以联系作者获取开箱即用的完整爬虫项目或者是X-Bogus的JS纯算学习!

相关推荐
勤奋菲菲13 小时前
Vue3+Three.js:requestAnimationFrame的详细介绍
开发语言·javascript·three.js·前端可视化
前端开发呀14 小时前
无所不能的uniapp拦截器【三】uni-app 拦截器核心流程解析
前端·javascript·微信小程序
云和数据.ChenGuang14 小时前
vue中构建脚手架
前端·javascript·vue.js
渣哥14 小时前
面试官最爱刁难:Spring 框架里到底用了多少经典设计模式?
javascript·后端·面试
朱昆鹏14 小时前
如何通过sessionKey 登录 Claude
前端·javascript·人工智能
wdfk_prog14 小时前
klist 迭代器初始化:klist_iter_init_node 与 klist_iter_init
java·前端·javascript
code_Bo15 小时前
基于vxe-table进行二次封装
前端·javascript·vue.js
闭着眼睛学算法15 小时前
【双机位A卷】华为OD笔试之【模拟】双机位A-新学校选址【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
晴殇i15 小时前
为什么现代 JavaScript 代码规范开始建议禁止使用 else ?
前端·javascript·前端框架
源力祁老师15 小时前
OWL与VUE3 的高级组件通信全解析
前端·javascript·vue.js