X-Bogus流程分析

 声明:本文仅限学习交流使用,禁止用于非法用途、商业活动等。否则后果自负。如有侵权,请告知删除,谢谢!本教程也没有专门针对某个网站而编写,单纯的技术研究

目录

一、混淆还原

二、插桩还原

三、还原X-Bogus 


一、混淆还原

1.先跟栈,看看X-Bogus怎么生成的

12d8e09c851a4643aff9c0cf112ffb6e.png

6818f75f284441029a86e62ff30ba422.png

 2.使用v_jstools插件还原混淆,git地址: https://github.com/cilame/v_jstools

292ae4705fd54bcf8c0ae4b0fac74c1b.png

 3.替换JS,文件路径可以在桌面上创建一个,替换完成基本JS就能看了

3ddb1060cd974360a6156e738b1fecd8.png

29ea939c55fd476c840d2c194fd42cd2.png

 二、插桩还原

1.覆盖本地JS之后呢,栈变量名也变了,下断点

f01e9501900a4f8d9405dd384229f483.png

 2.刚开始没有生成X-Bogus,单步跟

db033341947e4542839893a82bb58579.png

 3.多跟几次发现A是跳转索引,O是加密结果,插桩两个for循环处,182与409

console.log(`索引: ${A}, 值:${JSON.stringify(O, function(key, value) {if (value == window) {return undefined} return value})}`);

ddcf833635bc44a08f33654ccacca6bc.png

 4.打印的日志也挺多的大概几万行,搜一下结果加密值

6a3d3423c39c4c8fa5a6853d0f53c5eb.png

 5.往上找日志,发现一处可疑的地方,通过两个值(具体多少个不知道先断点)生成的 "D"

b3c5457d24954cb495f364f941bc4130.png

 6.下断点,A索引如果是460就停住

aa10d78d0dd24350a21ee0c4a3c967b1.png

7.然后"X-Bogus"出现了,放开再看,之后就出现了一串类似md5,往上找日志是在索引134的时候生成的,下断点132(为什么132因为134已经生成了,看上一步怎么生成的)单步跟看看是什么东西

5ae763e5a8774001b396356498d374ed.png

a62b124f729b48169c3c4f38115ed20c.png

dbf71300fa6d4662b6922a90059db885.png

 8.断上之后,单走就能发现是md5加密了请求URL的路由,你以为这样就完了?还没有单步跟,之后就发现了重点将md5字符串转成了数组,都断点上

0c6d2aec24874894b97dcaece0c72599.png

bdd2296d736048dca5217f2ca412eb80.png

 9.最后本来想还原一下算法发现又断上132了进来一看好家伙又md5一次,套娃*1,现在数组也拿到了继续跟,头疼,最后还有一串字符串”d41d8cd98f00b204e9800998ecf8427e“不知道什么东西刷新发现不变,先凉着反正跟这套流程一样不打紧

let md5 = require("md5");
let Array = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, null, null, null, null,
    null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 10, 11, 12, 13, 14, 15];

function md5_str_to_array(a) {
    let array = [];
    for (let idx = 0; idx < a.length;) {
        array.push(Array[a.charCodeAt(idx++)] << 4 | Array[a.charCodeAt(idx++)])
    }
    return array;
}

function encrypt(url_path) {
    return md5_str_to_array(md5(md5_str_to_array(md5(url_path))));
}

console.log(encrypt("device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=MS4wLjABAAAA6hGmDnaFyeR9iKX1hVsWK8JRimRzwi9ilHV824AmOHk&max_cursor=1670591754000&locate_query=false&show_live_replay_strategy=1&count=10&publish_video_strategy_type=2&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=105.0.0.0&browser_online=true&engine_name=Blink&engine_version=105.0.0.0&os_name=Windows&os_version=10&cpu_core_num=6&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7182114934540060200&msToken=ZwASt-8IFiF8HQ2Ku-2ZgzZq1IsLRHncgNG5k8Qosw-1N6GFPnQLR3KAh0p3eJCXIpPPGat4GaZ5l3nROYhExs7CWf6Jc1jkqXp0fTV_T6neCWqq-hBAAiZwsFvapg=="))

d52d90c3dcaa40c3a43b28b332349ebd.png

73848c3b15de41b48437126b9df31719.png

 10.继续断460这里数值出现了但是有一串乱码

55e14cae42734ca0a609f6e560db1dbf.png

 11. 乱码的生成也是用刚刚的数组计算而来断断点886

5a5a7ae34d8940c6b1132fe26c73f0d7.png

 12.之后就在这里生成了乱码,不知道什么鬼东西,怪丑的,ok了,接下来还断460030de7f08d7043768f93ea299bc298ff.png

 13.这一步主要是取值生成 X-Bogus了,问题来了之前的操作没用?白搞了?白搞就白搞吧.

cdf1fdc7db8b484d85ffddb23f5e4480.png

三、还原X-Bogus 

1.经过上面的分析得出由一串乱码、下标、字符串取值得到的X-Bogus,至于乱码先等会搞,先看看字符串计算且还原一下算法,找可疑的数值196397,一直往上找

d23b2a918a024ebea5b05bd1ccd3b491.png

ab36162750fc4ca7a49269a4704fbf62.png

 2.最终发现这里很可疑断点308,看看是什么东西演变的

f328ceb956a34e708701da3f96ce462a.png

 3.这里发现取乱码的字符串下标0

6f791531fd9b4566ba34ffed6ccaffd8.png

 4.这里进行了&运算也就是:(2 & 255) << 16 = 131072

35c9bff8efe447b38a200aecc9e40dce.png

 bfa659aaddb2428f9a5cfa859d3db1ae.png

 5.然后开始下一个取值计算: 131072 & 255 << 8

7d08cdfe4e1d4a289d8d723bc7cd79e0.png

6510139720234b16a59922f5a57b3e77.png

 333b52570d374a9dba2b1a4df99b25e1.png

6.基本上流程就是这样一个字符一个字符跟下去还原,最终就能得到纯算法了,当然你可以把计算流程打印出来这样就不用单步跟了 

6185c5ea1b9040738453ce1c7babd43e.png

7.好了看一下乱码,之前也有说过这里就提一下,这里拿了一个时间戳生成最后除1000,得到1672333537240/1000=1672333537.24

24822e8bfd1c408091866d314e3c7b73.png

8.最后调用了这个函数,返回的536919696值可以固定,之后慢慢跟吧不说了900b7c1357bc45ffad08d0e56ff6a541.png

b15e8ecaabf54232b483930eb12355e3.png

最后发现每460断为一组数据,也就是四个字符串可以分成

DFSz  swVu  06tA  NxXh  Skb-  Ul9W  X7nt

慢慢还原吧,还原一个就够了不像知乎有多个

。。。。。。

。。。。

。。

结束语

最后测试可用没问题,还原之后的纯算法大概也就80行吧,虽然不多但是费眼累人~JayCool6 (Jay) · GitHubJayCool6 has one repository available. Follow their code on GitHub.https://github.com/JayCool6

b3f7b5f88bb6440ca07bdcf2d01f1df0.png

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
X-Bogus是一个用于测试和模拟环境的虚拟服务器。本地部署X-Bogus意味着将X-Bogus服务器安装在本地环境中的计算机或服务器上。 首先,为了进行本地部署X-Bogus,我们需要获取X-Bogus的安装包或源代码。可以从官方网站或开源社区获取最新的X-Bogus版本。 接下来,我们需要在本地计算机或服务器上安装运行X-Bogus所需的软件和依赖项。具体的安装步骤可能因操作系统而异,但通常涉及以下几个步骤: 1. 安装并配置所需的运行环境,例如Node.js或其他运行X-Bogus的基础环境。 2. 解压或克隆X-Bogus的安装包或源代码到本地目录。 3. 打开终端或命令提示符,并导航至X-Bogus所在的目录。 4. 执行必要的命令或脚本以安装和配置X-Bogus。 一旦X-Bogus成功安装和配置在本地机器上,您可以根据需要进行自定义设置和调整。例如,您可以修改X-Bogus的配置文件以定义虚拟服务器的行为和响应。您还可以配置路由规则、设置特定的响应头和状态码等等。 在本地部署X-Bogus后,您可以使用它来模拟网络请求和响应,测试应用程序的各种场景和边界情况。您可以发送各种类型的请求,并模拟各种响应,以测试应用程序的鲁棒性和可靠性。 总结起来,本地部署X-Bogus需要获取安装包或源代码,安装运行X-Bogus所需的软件和依赖项,然后按照需要进行自定义设置和调整。这样,您便可以在本地环境中方便地使用X-Bogus来进行应用程序的测试和模拟。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值