X-Bogus逆向分析(纯算+补环境)

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

前言

此平台 本人 仅限研究。只针对某些算法参数进行研究。网站链接自己去找。

流程分析

这里就不多说了

直接看接口。发现有两个字需要我们逆向

msToken:

X-Bogus:

msToken

这里msToken 跟断点走。往上追栈后发现是直接读取的cookie里的。然后看了一下。然后测试了一下 这个有点像每次请求的token令牌。

这个应该可以模拟生成的。

不重要 暂时写死都行。这里也提供一份代码。

import random


def get_ms_token(randomlength=107):
    """
    根据传入长度产生随机字符串
    """
    random_str = ''
    base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789='
    length = len(base_str) - 1
    for _ in range(randomlength):
        random_str += base_str[random.randint(0, length)]
    return random_str

xb

这里话也不多说了。

直接讲流程。

首先 如下图所示

image-20240329104335637

然后跳到断点之后往上找断点。

到达如图所示位置之后

这个apply啥意思就不多说了 直接插桩

_0x2458f0['apply'](_0xc26b5e, _0x1f1790)==28(xb的长度)

image-20240329105633962

然后 单点调试下一步 ok 到达了一个JSVMP的方法。然后传的值都是字节码 然后把这些汇编代码转换为JS代码。

这里就考虑两种方法了。要不插桩纯算。要不补环境。

补环境

先说补环境。

直接全扣下来。

然后在下图位置赋值。

然后著名语录: 缺啥补啥。

这里已经补完了 就这么点。

window = global
document = {}
document.addEventListener = function () {}
navigator = {
    "userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.366'
}

然后直接得到答案

至于这个警告。是一个弃用警告。代表这个Buffer这个方法已经不用了。可以通过修改代码

然后看看传参是什么

然后给他封装成参数去调用就可以了。

算法

这里我们看到这个文件里其实是经过混淆的 非常不利于我们分析加密参数。

所以我们需要使用到ast等工具对他进行解混淆。

然后通过解混淆完了的JS 进行文件重写覆盖。

这里简单讲讲流程。

选择替换内容。浏览器会自动帮我们把js保存到替换的文件夹中。非常方便。

然后就能看到我们的文件了。然后复制文件。到v-tools中

复制出来。cv大法一下就搞定了。

流程分析

这里具体流程分析 详见公众号

https://mp.weixin.qq.com/s/dAHZQMsqlRZ6oGT2ZOW8PQ

str1 = "Dkdpgh4ZKsQB80/Mfvw36XI1R25-WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe="

// 19 = (1214867 & 63) >> 0
str1.charAt((1214867 & 63) >> 0) 
//结果:3


// 38 = (1214867 & 4032) >> 6
str1.charAt((1214867 & 4032) >> 6) 
// 结果:o


// 40 = (1214867 & 258048) >> 12
str1.charAt((1214867 & 258048) >> 12) 
// 结果:Y


// 4 = (1214867 & 16515072) >> 18
str1.charAt((1214867 & 16515072) >> 18) 
// 结果:g

上述刚好对应了 xb的最后四位

DFSz swVO PSzA Nro1t-KB sNAw gYo3

其余算法也一样。

数字算法逻辑

这里具体流程分析 详见公众号

https://mp.weixin.qq.com/s/dAHZQMsqlRZ6oGT2ZOW8PQ

目标获取: 1214867

  1. 通过 乱码 charCodeAt(20)获得147
  2. 通过 乱码 charCodeAt(19)获得137
  3. 通过 乱码 charCodeAt(18)获得18
  4. 通过147 << 0 获得了 147(找规律得来)
  5. 通过 137 << 8 获得 35072
  6. 通过 18<< 16 获得 1179648
  7. 通过位运算 1179648 | 35072 获得1214720
  8. 位运算符的 1214720 | 147 最终得到1214867

那这个只是最后一组的。根据这四组 找规律 获取其他组的信息可得以下代码

const encodedString = "\u0002ÿ-%.*¯Ë^9—õ²\u000b&7’\u0012‰“";
const decodingMap = "Dkdpgh4ZKsQB80/Mfvw36XI1R25-WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=";
let xb = "";

for (let index = 0; index <= 20; index += 3) {
    const charCode1 = encodedString.charCodeAt(index);
    const charCode2 = encodedString.charCodeAt(index + 1);
    const charCode3 = encodedString.charCodeAt(index + 2);

    const combinedCode = charCode3 | (charCode2 << 8) | (charCode1 << 16);

    const codePart1 = (combinedCode & 16515072) >> 18;
    const codePart2 = (combinedCode & 258048) >> 12;
    const codePart3 = (combinedCode & 4032) >> 6;
    const codePart4 = combinedCode & 63;

    xb += decodingMap[codePart1] + decodingMap[codePart2] + decodingMap[codePart3] + decodingMap[codePart4];
}

console.log(xb);

乱码生成分析

这里具体流程分析 详见公众号

https://mp.weixin.qq.com/s/dAHZQMsqlRZ6oGT2ZOW8PQ

实现目标如下图所示。

部分代码如下

function _0x86cb82(a) {
    return String.fromCharCode(a);
}

function _0x94582(a, b, c) {
    return _0x86cb82(a) + _0x86cb82(b) + c;
}

function _0x25788b(a, b) {
    for (var c, e = [], d = 0, t = "", f = 0; f < 256; f++) {
        e[f] = f;
    }
    for (var r = 0; r < 256; r++) {
        d = (d + e[r] + a.charCodeAt(r % a.length)) % 256, c = e[r], e[r] = e[d], e[d] = c;
    }
    var n = 0;
    d = 0;
    for (var o = 0; o < b.length; o++) {
        d = (d + e[n = (n + 1) % 256]) % 256, c = e[n], e[n] = e[d], e[d] = c, t += String.fromCharCode(b.charCodeAt(o) ^ e[(e[n] + e[d]) % 256]);
    }
    return t;
}

function _0x398111(a, b, c, e, d, t, f, r, n, o, i, _, x, u, s, l, v, h, p) {
    var y = new Uint8Array(19);
    return y[0] = a, y[1] = i, y[2] = b, y[3] = _, y[4] = c, y[5] = x, y[6] = e, y[7] = u,
        y[8] = d, y[9] = s, y[10] = t, y[11] = l, y[12] = f, y[13] = v, y[14] = r, y[15] = h,
        y[16] = n, y[17] = p, y[18] = o, String.fromCharCode.apply(null, y);
};

乱码数组生成

这里具体流程分析 详见公众号

https://mp.weixin.qq.com/s/dAHZQMsqlRZ6oGT2ZOW8PQ

这里说下大概。

前4位是固定值

第5位到第10位通过md5 hex_md5 以及转码得到数组 然后切片取其中的值。

第11位到第18位是通过时间戳还有个canvas固定值拼接而来。

最后一位通过前面的签名最终得到最后一位数组

最后通过19位 数字 然后编码得到乱码。

最终结果

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

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

相关文章

储能逆变器测试负载箱解决方案

储能逆变器是新能源领域的重要设备&#xff0c;其性能的优劣直接影响到整个系统的运行效率和稳定性。因此&#xff0c;对储能逆变器进行严格的测试和验证是保证其性能的关键步骤。在这个过程中&#xff0c;负载箱是必不可少的工具&#xff0c;它可以模拟真实的负载条件&#xf…

JUC并发编程——对于synchronized关键字的理解

现象&#x1f50d;&#xff1a; 两个线程对初始值为 0 的静态变量一个做自增&#xff0c;一个做自减&#xff0c;各做 5000 次&#xff0c;最后输出的 counter一定为0 吗&#xff1f; Slf4j(topic "c.Test17") public class Test17 {static int counter 0;public…

可望而不可即的“人文关怀”

死亡既然是最后的归宿&#xff0c;生命的必然&#xff0c;自然也就没有必要过多地害怕了。一切顺其自然&#xff0c;交给“命运”就是了。 我参观过英国的临终关怀医院&#xff0c;这是世界上最早的一所临终关怀医院&#xff0c;已有100多年历史。 那里的大多数病人都只剩一个…

第1章.提示词:开启AI智慧之门的钥匙

什么是提示词&#xff1f; 提示词&#xff0c;是引导语言模型的指令&#xff0c;让用户能够驾驭模型的输出&#xff0c;确保生成的文本符合需求。 ChatGPT&#xff0c;这位文字界的艺术大师&#xff0c;以transformer架构为基石&#xff0c;能轻松驾驭海量数据&#xff0c;编织…

【机器学习之---数学】马尔科夫链

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 马尔科夫 1. 概念 1.1 引言 马尔可夫链在许多领域都有应用&#xff0c;包括物理学、生物学、工程学、经济学和计算机科学等。在计算机科学中&#xff0…

QT使用数据库

数据库就是保存数据的文件。可以存储大量数据&#xff0c;包括插入数据、更新数据、截取数据等。用专业术语来说&#xff0c;数据库是“按照数据结构来组织、存储和管理数据的仓库”。 什么时候需要数据库&#xff1f;在嵌入式里&#xff0c;存储大量数据&#xff0c;或者记录数…

Kubernetes篇(二)— 集群环境搭建

目录 前言一、 环境规划集群类型安装方式主机规划 二、环境搭建主机安装环境初始化安装docker安装kubernetes组件准备集群镜像集群初始化安装网络插件 三、 服务部署 前言 本章节主要介绍如何搭建kubernetes的集群环境 一、 环境规划 集群类型 kubernetes集群大体上分为两类…

(C语言) fgetc与fputc函数详解

目录 1 fgetc函数详解 1.1 从文件流中读取数据 1.2 从标准输入流中读取数据 2 fputc函数详解 2.1 向文件流中写入数据 2.2 向标准输出流中写入数据 1 fgetc函数详解 头文件&#xff1a;stdio.h 该函数只有一个参数&#xff1a;stream 作用&#xff1a;从输入流中获得一个…

Gif动态图片如何制作?悄悄告诉你两招就能做!

怎么制作gif动态图片&#xff1f;Gif动图在我们的日常生活中非常的常见&#xff0c;尤其是在各大聊天软件中。当我们想要自己制作这种有趣的gif动图的时候要怎么办呢&#xff1f;很简单&#xff0c;制作gif动图的方法通常有两种&#xff0c;一种是视频转换gif另一种就是图片合成…

最大子序列(蓝桥杯,acwing,单调队列)

题目描述&#xff1a; 输入一个长度为 n 的整数序列&#xff0c;从中找出一段长度不超过 m 的连续子序列&#xff0c;使得子序列中所有数的和最大。 注意&#xff1a; 子序列的长度至少是 1。 输入格式&#xff1a; 第一行输入两个整数 n,m。 第二行输入 n 个数&#xff0…

CATSploit:一款基于CATS的自动化渗透测试执行工具

关于CATSploit CATSploit是一款基于CATS的自动化渗透测试执行工具&#xff0c;该工具基于网络攻击技术评分&#xff08;CATS&#xff09;方法实现其功能&#xff0c;可以在无需渗透测试人员操作的情况下&#xff0c;自动对目标应用执行安全渗透测试。 在执行渗透测试的过程中&…

【leetcode】力扣简单题两数之和

题目 思路 代码实现 #include<iostream> #include<unordered_map>using namespace std;class Solution { public:vector<int> TwoNumber(const vector<int>& nums, int target){vector<int> number_vector;unordered_map<int, int> …

【PyQt学习篇 · ⑮】:qrc/rcc资源系统

文章目录 qrc使用介绍rcc编译资源rcc 的安装与基本使用 编译成Python文件使用资源系统文件方式一&#xff1a;导入资源系统文件方式二&#xff1a;整合资源系统文件 qrc使用介绍 在PyQt中&#xff0c;qrc文件是一种资源文件&#xff0c;用于将应用程序所需的资源&#xff08;如…

pmp培训机构哪个比较好?国内10大热门PMP培训机构是哪些?

热门PMP培训机构推荐&#xff0c;PMP备考选择威班就是选择了高通过率 PMP热门培训机构方面我还是比较推荐威班的&#xff0c;当时选择的时候有人推荐我&#xff0c;也了解了很多&#xff0c;各种科普各种对比选择&#xff0c;最后还是选择了威班。经过体验他们的通过率比较靠谱…

Math类

java.lang.Math 提供了一系列静态方法用于科学计算&#xff0c;常用方法如下&#xff1a; abs 绝对值 acos&#xff0c;asin&#xff0c;atan&#xff0c;cos&#xff0c;sin&#xff0c;tan 三角函数 sqrt 平方根 pow(double a,double b) a的b次幂 max(double a,double b) 取大…

LiteFlow逻辑流引擎集成验证

本文将介绍开源逻辑流组件LiteFlow的架构、设计思想和适用场景&#xff0c;如何基于springboot集成LiteFlow&#xff0c;并验证DSL多种逻辑流程&#xff0c;以及逻辑流设计器的开发思路。 一、逻辑流解决什么问题 在每个公司的系统中&#xff0c;总有一些拥有复杂业务逻辑的系…

喜报 | 攸信技术再获殊荣,被授予厦门攸信智能制造系统研发中心

近日&#xff0c;厦门攸信信息技术有限公司凭借其卓越的科技创新实力和突出的研发成果&#xff0c;经过厦门市科学技术局的严格筛选与评审&#xff0c;三月份被正式授予“厦门攸信智能制造系统研发中心”的荣誉称号。 2023年12月&#xff0c;厦门市科学技术局积极响应《厦门市关…

2024年阿里云无影云电脑具体价格,99元一年起

2024年阿里云无影云电脑具体价格99元一年起&#xff0c;配置可选4核8G和8核16G&#xff0c;使用时长可选800小时和1800小时&#xff0c;目前有四款无影云电脑可以享受优惠价格&#xff0c;阿里云服务器网aliyunfuwuqi.com整理2024年无影云电脑详细配置和优惠价格表&#xff0c;…

20240322-1-协同过滤面试题

协同过滤面试题 1. 协同过滤推荐有哪些类型 基于用户(user-based)的协同过滤 基于用户(user-based)的协同过滤主要考虑的是用户和用户之间的相似度&#xff0c;只要找出相似用户喜欢的物品&#xff0c;并预测目标用户对对应物品的评分&#xff0c;就可以找到评分最高的若干个物…

VS Code 安装

VS Code 安装文档 一、下载 进入VS Code官网&#xff1a;https://code.visualstudio.com&#xff0c;点击 DownLoad for Windows下载windows版本 当然也可以点击旁边的箭头&#xff0c;下载Windows版本 或 Mac OS 版本 Stable&#xff1a;稳定版Insiders&#xff1a;内测版 …