ob混淆_加速乐逆向学习

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

案例分析

目标案例:aHR0cHM6Ly93d3cubWFmZW5nd28uY24vaS8yMDAxMzk1OC5odG1s

1.难点和接口
在这里插入图片描述

参数分析

通过观察可以看到他是前两次请求失败然后成功的,请求成功的需要带上cookie才行,那么我们来看下
在这里插入图片描述
第一次请求可以看到他是没有带任何cookie,但是我们可以看到它的返回是有cookie的
在这里插入图片描述
在第二次请求时可以看到这里是带有cookie的,那么看下第一次请求可以发现返回了一个set-cookie那么后面那个怎么来的那

在这里插入图片描述
我们可以看到在第一次请求是有返回的,这点我们先复制到浏览器上执行看下是什么情况
在这里插入图片描述
这里可以看到他就是cookie里面的另一个参数,那么我们用re把这点数据提取出来通过python的execjs中的eval进行执行,然后
在这里插入图片描述
这里可以看到第二次请求的cookie都已经拿到了,那么带上cookie进行请求,在第二次请求可以看到他是返回了一些js
在这里插入图片描述
我这边通过给空白的地方下断点,给cookie进行清理,我发现怎么清理都进不去
在这里插入图片描述

但是我发现可通过清除cookie的时候这里是用变化的通过快速下断点也能进入,或者就是通过fiddler进行替换执行
方案1:
在这里插入图片描述
方案2:
通过给加密保存下来,在开始添加一个debugger进行替换然后断点
在这里插入图片描述
如这样,我们就进来了
在这里插入图片描述
进来并不代表已经完成,因为这里是混淆的,那么我们怎么找到对应的加密参数那,因为我们搜cookie发现没有搜到,那么我们转变思路通过搜它的上一级,document
在这里插入图片描述
看到这就是cookie了,知道了位置那么我们就来看参数就行
在这里插入图片描述
通过分析发现他是_0x1986b1取的第0个,那么直接搜这个_0x1986b1
在这里插入图片描述
这里可以看到它使用的是我们之前go调用里面的字典数据,然后调用的函数
在这里插入图片描述
在这里插入图片描述

那么这里我们可以改为这样
在这里插入图片描述
之前有人问我怎么补代码,那么我们一起来看下,直接执行,然后说我们没有定义,那么我们看浏览器
在这里插入图片描述
我们可以看到这个函数就是对应的值,那么我们把它复制下来
在这里插入图片描述
这时候发现刚刚的报错已经没有了,那么我们继续补充其他报错即可
在这里插入图片描述
我这边是通过先观察后补
在这里插入图片描述
我们观察可以直接_0x4d3817就是我们的入参,那么我们直接把入参名字替换,后续的是对入参进行取值然后获取它的长度
在这里插入图片描述
可以看到这里是对等的,那么我们可以直接修改代码
在这里插入图片描述
可以看到这里是对获取的长度进行循环,这里只是混淆了下,那么我们可以直接还原
在这里插入图片描述
我们继续调试发现他是进入的if里面,那么我们是不是可以把else给处理掉,if同理是满足条件的情况,也可以修改
在这里插入图片描述

我们通过还原发现,他是进行的运算那么我们把这个函数搞下来,改下名字
在这里插入图片描述
那么代码也需要对应修改
在这里插入图片描述
你通过多次抓包可以看到这里获取go里面的ha进行的
在这里插入图片描述
那么剩下的一个就是一个

在这里插入图片描述
进行补充改为函数,那么我们就补完了,本次逆向之旅到这里就结束了,我们下次在见!!!
拜拜!!!
在这里插入图片描述

效果展示

在这里插入图片描述

代码分享

var _0x3a1c07 = new Date();
CryptoJS = require('crypto-js')

var hash = {
    
    
    'md5': function (a) {
    
    
        return CryptoJS.MD5(a).toString()
    },
    'sha256': function (a) {
    
    
        return CryptoJS.SHA256(a).toString()
    }, "sha1": function (a) {
    
    
        return CryptoJS.SHA1(a).toString()
    }
}

function _0x7f1ad(_0x654898, _0x4389de) {
    
    
    return _0x654898 + _0x4389de;
}

function _0x7f1ad_(_0x560b33, _0x39e54b) {
    
    
            return _0x560b33 - _0x39e54b;
        }

function _0x1132d7(_0x5cdeb6, _0x334155) {
    
    
    var _0x38cbe2 = _0x4d3817['char' + 's']['leng' + 'th'];  // 或者修改成我演示的样子也可
    for (var _0x203549 = 0x0; _0x38cbe2 > _0x203549; _0x203549++) {
    
    
        for (var _0x17f4e5 = 0x0; _0x17f4e5 < _0x38cbe2; _0x17f4e5++) {
    
    
            var _0xb3d424 = _0x7f1ad(_0x7f1ad(_0x334155[0x0], _0x4d3817['chars']['substr'](_0x203549, 0x1)), _0x4d3817['chars']['substr'](_0x17f4e5, 0x1)) + _0x334155[0x1];
            if (hash[_0x4d3817['ha']](_0xb3d424) == _0x5cdeb6) {
    
    
                return [_0xb3d424, _0x7f1ad_(new Date(), _0x3a1c07)];
            }
        }
    }
}


_0x4d3817 = {
    
    
    "bts": ["1686707967.988|0|uvF", "ZkQVWUyUj6cqAtCSZSjlXo%3D"],
    "chars": "RmEmknBTVGibwheLEiTnxQ",
    "ct": "feefe5555d86e1c7abe2122add8faab293a415749339b44fac32358e3a0f9106",
    "ha": "sha256",
    "is": true,
    "tn": "__jsl_clearance_s",
    "vt": "3600",
    "wt": "1500"
}

function get_cookies() {
    
    
    var _0x1986b1 = _0x1132d7(_0x4d3817['ct'], _0x4d3817["bts"]);
    return '__jsl_clearance_s=' + _0x1986b1[0]
}

console.log(get_cookies())


猜你喜欢

转载自blog.csdn.net/w62181310/article/details/131200592
今日推荐