X-Bogus加密参数分析与jsvmp算法(仅供学习)

文章目录

  • 1. 抓包分析
  • 2. X-Bogus参数分析

【作者主页】:吴秋霖
【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作!
【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建与开发实战》
还有未来会持续更新的验证码突防、APP逆向、Python领域等一系列文章

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纯算学习!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/333799.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法Hot100系列】跳跃游戏

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

【题解 Trie树 字符串】 C - New but Nostalgic Problem

题目描述: 分析: 题目中涉及到了若干字符串的公共前缀,显然可以用trie树去完成 建立trie树的同时,我们为了做题方便,用以下两个数组去记录一下trie树的信息: t o t i tot_i toti​表示以i为根的子树中有几…

ICBE 2024第十二届深圳国际跨境电商交易博览会

ICBE 2024第十二届深圳国际跨境电商交易博览会 暨中国跨境电商综试区发展高峰论坛 展会时间:2024年9月2日-4日 展会地点:深圳会展中心(福田) 指导单位:广东省商务厅 主办单位:广东省电子商务协会/扩展集团 承办单…

基于局部信息提取的人脸标志检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 人脸检测 4.2 局部区域选择 4.3 特征提取 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .........................................…

【LeetCode每日一题】2171. 拿出最少数目的魔法豆

2024-1-18 文章目录 [2171. 拿出最少数目的魔法豆](https://leetcode.cn/problems/removing-minimum-number-of-magic-beans/)思路: 2171. 拿出最少数目的魔法豆 思路: 对输入的数组进行排序,使得数组中的元素按照升序排列。初始化一个变量s…

python如何包含其他路径的模块

python 包含其他路径的模块: 例如目录结构: dir1 |__ init.py |__ module1.py dir2 |__ main.py main.py from dir1 import module1首先需要在 dir1 添加 init.py 文件,该文件可以是空文件。 其次需要将dir1 的父目录添加到python 解释器的&#xf…

小红书投放策略有哪些?品牌运营思路

想要在小红书进行合理的达人投放,离不开一份完备且具备可实施性的达人投放策略。今天我们和大家分享下小红书投放策略有哪些?品牌运营思路! 制定小红书达人投放策略,按照以下四个步骤进行即可。 1、投放目的 这里的确定投放目的包…

跟着pink老师前端入门教程-day06

十一、CSS 的背景 通过CSS背景属性,可以给页面元素添加背景样式 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 11.1 背景颜色 background-color 属性定义了元素的背景颜色 一般情况下元素背景颜色默认值是transparent&…

KubeSphere平台使用

KubeSphere官网地址:https://kubesphere.io/zh/ KubeKey一键部署K8S集群:https://kubesphere.io/zh/docs/v3.4/installing-on-linux/introduction/multioverview/ 一台master node(初始化主节点)、两台 work node( joi…

2024-01-15(SpringMVCMybatis)

1.拦截器:如果我们想在多个handler方法(controller中的方法)执行之前或者之后都进行一些处理,甚至某些情况下需要拦截掉,不让handler方法执行,那么就可以使用SpringMVC为我们提供的拦截器。 拦截器和过滤器的区别:过滤…

浏览器插件:Web Scraper 基本用法和抓取页面内容(无需写代码,即可爬取数据)

Web Scraper 是一个浏览器扩展,用于从页面中提取数据(网页爬虫)。对于简单或偶然的需求非常有用,例如正在写代码缺少一些示例数据,使用此插件可以很快从类似的网站提取内容作为模拟数据。从 Chrome 的插件市场安装后,页面 F12 打开…

Python项目——搞怪小程序

1、介绍 使用python编写一个小程序,回答你是猪吗。 点击“是”提交,弹窗并退出。 点击“不是”提交,等待5秒,重新选择。 并且隐藏了关闭按钮。 2、实现 新建一个项目。 2.1、设计UI 使用Qt designer设计一个UI界面&#xff0c…

[bat]0基础实现自动化办公-新建bat脚本文件

一、引言 本文是自动化办公之路的开篇,主要面向0基础同学介绍如何新建一个bat脚本文件。接下来会逐渐深入讲解如何实现自动化办公,如有什么需求场景,可评论区留言,我后面会逐一实现。 二、方案 通过对text文本文档文件改文件后…

DETR 个人理解

DETR 个人理解 目录 DETR 个人理解 概念说明 transformer网络结构 整体流程 损失计算 整体理解 结果说明 论文 代码 参考链接 个人拙见,仅供参考,欢迎指正交流 这篇论文还是挺重要的,因为是transforms用于目标检测的第一篇论文&am…

一、Linux基础

一、Linux 1.1 Linux 的应用领域 1.1.1 个人桌面领域的应用 此领域是 Linux 比较薄弱的环节但是随着发展,近几年 linux 在个人桌面领域的占有率在逐渐提高 1.1.2 服务器领域 linux 在服务器领域的应用是最高的 linux 免费、稳定、高效等特点在这里得到了很好的…

OpenGL:关于渲染窗口在主屏和扩展屏上纹理贴图不一致的问题

自己写了一个例子,将图像纹理贴图到窗口,并且可以设置窗口的起始位置。 原始图像如下 当设置渲染窗口在主屏时,渲染的结果如下 没什么问题。 但是当设置窗口显示在扩展屏时,效果如下 可以看出纹理没有显示完整 网上找一下&…

Spring Boot整合Druid(druid 和 druid-spring-boot-starter)

引言 在现代的Web应用开发中,高性能的数据库连接池是确保应用稳定性和响应性的关键因素之一。Druid是一个开源的高性能数据库连接池,具有强大的监控和统计功能,能够在Spring Boot应用中提供出色的数据库连接管理。本文将研究在Spring Boot中…

【双端队列】【维护单调队列】Leetcode 239 滑动窗口最大值【难】

【双端队列】Leetcode 239 滑动窗口最大值 双端队列的操作解法1 利用双端队列实现单调队列 ---------------&#x1f388;&#x1f388;题目链接 Leetcode 239 滑动窗口最大值&#x1f388;&#x1f388;------------------- 双端队列的操作 创建双端队列&#xff1a;Deque<…

解决字符串类型转数字类型相加结果异常问题

js字符串类型转换数字类型有七种方法&#xff0c;分别是parseInt()&#xff0c;parseFloat()&#xff0c;Math.floor()&#xff0c;乘以数字&#xff08;*1&#xff09;&#xff0c;Number()&#xff0c;双波浪号 (~~number)&#xff0c;一元运算符&#xff08;number&#xff…

npm run dev 启动vue的时候指定端口

使用的是 Vue CLI 来创建和管理 Vue 项目&#xff0c; 可以通过设置 --port 参数来指定启动的端口号。以下是具体的步骤&#xff1a; 打开命令行终端 进入您的 Vue 项目目录 运行以下命令&#xff0c;通过 --port 参数指定端口号&#xff08;例如&#xff0c;这里设置端口号…