Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码

这篇具有很好参考价值的文章主要介绍了Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近周末闲着无事,看了一下Nike的登录,发现连环境都不用补acw_sc__v2这个参数,分享出来给大家趣味性娱乐一下
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码

一、分析

打开F12抓包看看登录
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
老样子复制curl给抓到Postman里面去分析一下
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
具体的参数查找就不演示了(就是简单的删参数看看啥需要啥不需要)。
最后可以发现,cookie只需要这个acw_sc__v2就可以完成登录了。
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
这是没有acw_sc__v2参数得到的结果
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码

此刻回到登录页面的控制台把之前登录获得的acw_sc__v2给干掉
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
使用祖传hook代码来hook出cookie(因为鼠标移动也会对cookie造成影响,所以做了一个小小的过滤筛选)

cookie_cache = document.cookie;
Object.defineProperty(document, "cookie", {
        get: function () {
            console.log(cookie_cache);
        // 在获取document.cookie时,执行你想要的操作
        return cookie_cache; // 返回原始的cookie值
    },
    set: function(value) {
        // 在设置document.cookie时,执行你想要的操作
        if(value.includes('acw_sc__v2')){
           debugger;
        }

    }
});

断点断上后,往上一找,简单明了的发现了acw_sc__v2参数(arg3)
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
接着往上瞅瞅,可以发现arg3是和arg2有关的,那就再往上找找arg2的相关逻辑
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
到这里可以发现arg2又是由arg1得来的,那就再往上看看arg1是从哪里来的。
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
一直翻到函数的开头,可以发现arg1是作为参数被传进来的Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
那就调用栈继续往上翻,可以发现arg1是从一段<html><script>...的代码里面提取出来的,这个代码很熟悉啊,不就是我们之前没有带acw_sc__v2参数去请求登录的代码吗,那这个arg1我们就可以暂时固定住,去解决arg2生成的问题了。
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
回到调用栈_0x4818,给他重启一下
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
再arg2处打上断点
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
把arg1加密生成arg2这段逻辑给copy下来

arg1="1029C3D5A2B9A15E217ED61D1C74843F834237A1"
var posList = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36];
var mask = _0x1e8e("0x0");
var outPutList = [];
var arg2 = "";
var arg3 = "";
for (var i = 0; i < arg1[_0x1e8e("0x1")]; i++) {
    var this_i = arg1[i];
    for (var j = 0; j < posList[_0x1e8e("0x1")]; j++) {
        if (posList[j] == i + 1) {
            outPutList[j] = this_i
        }
    }
}
arg2 = outPutList[_0x1e8e("0x2")]("");
console.log(arg2)

然后没有的函数给他补齐一下。
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
秉承着缺啥补啥的思想,补了两个参数进去。但是运行起来居然溢出了,在这里,我们就需要跟进去看看什么操作导致了这个代码溢出。
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
根据去对照着浏览器的参数值可以发现,这两边明显的不同,_0x3e9e这个数组明显是不一样的,回到浏览器可以发现,在这两个参数之间,还有一个自执行函数,对_0x3e9e这个数组进行了一个操作,应该就是移位操作了
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
直接弄下来
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
可是一运行,之前的断点都到不了了,可以发现,这个自执行函数里面还是出了问题,经验而谈,应该就是格式化检测这种问题了,老样子跟进去看看,跟了没几步就可以发现,是这里导致了无法正常运行,为什么不往下跟了,因为我看到了RegExp,这不就是正常的正则化检测么
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
把对应的参数打印一下,就能看到了,这里是对removeCookie这个进行了正则化检测,这还不简单,直接把_0x981158["test"](_0x3e4c21["removeCookie"]["toString"]())变成true,就可以正常运行到我们之前的断点了,并且_0x3e9e数组也变成和浏览器一样了。

Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
那我们举一反三想一下,会不会之前这里溢出,也是因为正则化检测呢,直接开搜
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
经过排除其余两个RegExp(因为是在补的那个自执行函数里面,不会对下面的结果造成影响了),可以发现上图这里还存在一个RegExp,但是和上面写法又不大一样,那我们这里还是先下一个断点看看是什么情况
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
结果怎么说呢,还是大同小异,直接给他改成true,看看还会不会溢出
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
可以看到arg2是成功被打印出来了
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
和浏览器对比也是一样的效果
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
那么就可以着手arg3的事情了,也没什么要分析的了,直接放在arg2后面,一运行就出结果了。

for (var i = 0; i < arg2[_0x1e8e("0x1")] && i < mask[_0x1e8e("0x1")]; i += 2) {
    var GxjQsM = _0x1e8e("0x3")[_0x1e8e("0x4")]("|")
      , QoWazb = 0;
    while (!![]) {
        switch (GxjQsM[QoWazb++]) {
        case "0":
            if (xorChar[_0x1e8e("0x1")] == 1) {
                xorChar = "0" + xorChar
            }
            continue;
        case "1":
            var strChar = parseInt(arg2[_0x1e8e("0x5")](i, i + 2), 16);
            continue;
        case "2":
            arg3 += xorChar;
            continue;
        case "3":
            var xorChar = (strChar ^ maskChar)[_0x1e8e("0x6")](16);
            continue;
        case "4":
            var maskChar = parseInt(mask[_0x1e8e("0x5")](i, i + 2), 16);
            continue
        }
        break
    }
}
console.log(arg3)

Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码

三、总结

其实没啥难度,主要是一个对正则化的检测,甚至环境都不需要补。主要是给一个思路。

四、番外

当然不仅仅是上面这种方法,还记得不带cookie去访问得到的js代码吗
Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码

1.AST解混淆

如果不想自己手写的,可以直接使用猿人学自带的一键解混淆,不过效果肯定没有自己想要的随心所欲,但是速度快呀。
不过我这里给出我手写的AST解混淆代码,bianhhua.js就是不带cookie去访问得到的js代码,具体每行什么作用,使用gpt自己理解噢~

const {parse} = require("@babel/parser");
const generator = require("@babel/generator").default;
const traverse = require("@babel/traverse").default;
const types = require("@babel/types");
const fs = require("fs");
var AST_code = fs.readFileSync('bianhhua.js', {encoding: 'utf-8'});

let AST_parse = parse(AST_code);
traverse(AST_parse, {
        //  字符串美化,便于观察
        "StringLiteral|NumericLiteral"(path){
            path.node.extra && delete path.node.extra;
    
        },
})
const js_code = generator(AST_parse, {compact:true}).code;
let AST_parse_1 = parse(js_code);

// 获取解密函数,并写入内存
let memory_decode_js = '';
for(let i=0;i<=3;i++){
    memory_decode_js += generator(AST_parse_1.program.body[i], {compact:true}).code
}
AST_parse_1.program.body[3] = ""
eval(memory_decode_js);
traverse(AST_parse_1, {
    //  替换加密字符参数
    "CallExpression"(path){
        if(path.node.callee.name === '_0x55f3'){
            path.replaceInline(types.valueToNode(eval(path.toString())));
        }
    },
})

const js_code_1 = generator(AST_parse_1, {compact:true}).code;
console.log(js_code_1)

Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码文章来源地址https://www.toymoban.com/news/detail-488107.html

到了这里,关于Nike登录的acw_sc__v2参数逆向详细思路分析(非常简单,建议入手)含AST解混淆代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django学习笔记-AcApp端授权AcWing一键登录

    笔记内容转载自 AcWing 的 Django 框架课讲义,课程链接:AcWing Django 框架课。 AcApp 端使用 AcWing 一键授权登录的流程与之前网页端的流程一样,只有申请授权码这一步有一点细微的差别: 我们在打开 AcApp 应用之后会自动向 AcWing 请求账号登录,客户端会向后端服务器请求一些参

    2024年02月11日
    浏览(33)
  • Django学习笔记-Web端授权AcWing一键登录

    笔记内容转载自 AcWing 的 Django 框架课讲义,课程链接:AcWing Django 框架课。 Redis 为内存数据库,目前我们使用的是 Django 自带的数据库 SQLite,且能够很容易地迁移到 MySQL,这些数据库的效率不如 Redis,其特点为: Redis 存的内容为 key, value 对,而其它数据库存的是若干张表,

    2024年02月11日
    浏览(47)
  • 逆向破解思路和获取app的代码,脱壳操作(四)

    加壳 什么是加壳? 我们的ipa文件上传appstore,苹果会给我们做一个加密,其实我们运行在内存中的过程是一个加密的壳程序,当然在手机中我们会对他进行解密壳程序,来直接运行可执行的文件,当然苹果这样做的目的是为了保护我们的程序。 脱壳 脱壳的方式 1.硬脱壳:

    2024年02月15日
    浏览(37)
  • dx滑块逆向及ac参数逆向

    网址:aHR0cHM6Ly93d3cuZGluZ3hpYW5nLWluYy5jb20vYnVzaW5lc3MvY2FwdGNoYQ== 目录 声明  本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本

    2024年02月06日
    浏览(44)
  • 逆向案例十八——webpack逆向红人点集登录密码

    网址链接:红人点集 密码登录,获取数据包: 发现pwd和sig两个加密参数,开始跟栈调试   点击第一个,在send处打上断点,再点击登录。   进入异步栈,r.requests 释放之前的断点,打上断点 ,点击登录 往前跟栈,看什么时候密码是明文,结果,打上断点,同样操作,分析代

    2024年04月18日
    浏览(78)
  • AcWing 4576. 素数独立集(详细解释)

    就是给你一个长度为n的集合(保证没有重复的数出现),需要你去构成一个最大长度的子集,且这个子集里面的数都没有一种题目给定的关系,关系就是在这个子集中 没有任何一个 元素是另一个元素的素数倍数。比如a%b = 0, k = a b k = frac{a}{b} k = b a ​ k不能是素数。{2,8,17} 是素

    2024年02月14日
    浏览(39)
  • JS逆向案例:破解登录密码

    本人不是专业IT人员,但是对python爬虫这块非常感兴趣,在抖音上看了zhen老师的python全栈直播课程,果断选择加入zhen老师的VIP大家庭,给zhen老师投稿发文章还能挣钱, 50元 。 废话不多说,进入主题。最近在学习 JS逆向 方面的知识,由于之前做过12306的自动抢票软件,因此对

    2024年02月05日
    浏览(41)
  • Unity单机手游逆向破解思路(仅供学习参考,禁止用于非法行为)

    一、安卓逆向常用工具 针对安卓单机游戏逆向,尤其是逆向使用Unity引擎开发的安卓游戏,只需了解下面的工具即可。 (1)Android Killer        Android Killer是安卓通用逆向工具,其可以对apk进行反向编译,得到smail代码,用户可以更改smail代码后,对apk重新打包,以实现破解

    2024年01月19日
    浏览(37)
  • 爬虫逆向实战(二十六)--某某学堂登录

    主页地址:某某学堂 1、抓包 通过抓包可以发现数据接口是Account/LoginPost 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现 pass 是加密参数 请求头是否加密? 无 响应是否加密? 无 cookie是否加密? 无 1、看启动器 查看启动器发现里面有一个 Login

    2024年02月11日
    浏览(43)
  • 爬虫逆向实战(十九)--某号站登录

    主页地址:某号站 1、抓包 通过抓包可以发现登录接口 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个 jsondata_rsa 的加密参数 请求头是否加密? 无 响应是否加密? 无 cookie是否加密? 无 1、看启动器 查看启动器发现里面有一个 LoginNow 的调

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包