• Js逆向教程17-极验滑块 实现加密算法的逻辑


    Js逆向教程17-极验滑块 实现加密算法的逻辑

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kloFtc91-1669559966688)(1.png)]

    还是和上节课一样,针对这个网址

    https://www.geetest.com/demo/slide-float.html

    一、加密算法的结果查看

    计算u运行后的结果:

    在这里插入图片描述

    'a45a0551c344b03be428cab551f9755f073e64061c35988a29d6ba70e7d35c8b9e963b63e630d173843eee06a944b557f7c7348c5954fe8869293f793548216083d5dca650eba1e72395f6c22f80bddb05c44d5cdc49bd6bc4ec6a7138a0bde6bca723601cd01621159a7c6ebaf311d361234d0de12f6e8787f10ced9f19b274'
    
    • 1

    u是16进制的字符串,每次运行都会改变。

    它的实现函数如下:

    			"\u0024\u005f\u0043\u0043\u0044\u0048": function(t) {
                    var $_CBFJo = QBLnx.$_CM
                      , $_CBFId = ['$_CBGCG'].concat($_CBFJo)
                      , $_CBGAZ = $_CBFId[1];
                    $_CBFId.shift();
                    var $_CBGBn = $_CBFId[0];
                    var e = new U()[$_CBGAZ(353)](this[$_CBFJo(756)](t));
                    while (!e || 256 !== e[$_CBFJo(125)])
                        e = new U()[$_CBGAZ(353)](this[$_CBGAZ(756)](!0));
                    return e;
                },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    256这个数字比较特殊, 字节码是0-255,0表示的是一个字符串的结尾 1-255代表某一个字符。

    256用作取模计算。、

    它在while循环里 就是对一个字节值做遍历。

    二、跟值技巧

    从头看

    • 优点 不需要重复下断点
    • 缺点 要记住很多的变量值,不太适合一开始学习

    从尾看

    • 优点 跟值比较轻松
    • 缺点 需要重复下断点

    断点

    • ​ 初始值的位置
    • ​ 循环的位置
    • ​ 返回的位置
    • ​ 函数的开头
    • ​ 函数的结尾

    三、rsa加密分析

    var e = new U()[$_CBGAZ(353)](this[$_CBFJo(756)](t));
    
    • 1

    看到new U()创建出来的对象,有一个setPublic:大概率是rsa加密

    rsa里面叫做设置公钥 。

    在这里插入图片描述

    调用了加密的方法encrypt:

    在这里插入图片描述

    传入的参数是这个:对这个进行rsa加密

    在这里插入图片描述

    四、t()方法重写

    这个参数里面调用了一个函数 这个函数的参数t是undefine

    我们可以进入到这个函数里面:

    在这里插入图片描述

    往里看是调用了t方法:

    在这里插入图片描述

    所以需要找到t方法的定义

    在这里插入图片描述

    这个随机字符串 主要是通过这个生成的

    (65536 * (1 + Math[$_BFBER(46)]()) | 0)[$_BFBER(215)](16)[$_BFBER(430)](1)
    
    • 1

    通过调试可以看到它是字符串

    在这里插入图片描述

    替换字符串后的代码如下

    (65536 * (1 + Math["random"]()) | 0)["toString"](16)["substring"](1)
    
    • 1

    所以可以自己写一个方法

    var random_ = function random_()
    {
    	var data = "";
    	for(var i = 0; i < 4; i++)
    	{
    		data = data + (65536 * (1 + Math["random"]()) | 0)["toString"](16)["substring"](1)
    	}
    	return data;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    能够直接在控制台下运行:

    在这里插入图片描述

    这样就能够将下面的这个函数的这个参数破解掉

    e = new U()[$_CBGAZ(353)](this[$_CBGAZ(756)](!0));
    
    • 1
  • 相关阅读:
    从手动操作到自动化管理,如何实现企业身份业务全面自动化?
    基于 PowerMax 架构的银行双活数据中心实践分享
    一文带你深入理解——锁的可重入性
    服务器怎么远程连接控制
    计算机毕业设计 SSM+Vue美容院管理系统 美容护理管理系统 美容店系统管理Java Vue MySQL数据库 远程调试 代码讲解
    OpenCV之YOLOv3目标检测
    1、配置zabbix邮件报警和微信报警。 2、配置zabbix自动发现和自动注册。
    LTC3307AHV 符合EMI标准,降压转换器 QCA7005-AL33 PHY
    springboot使用freemarker导出word
    CSDN编程竞赛 ——— 第十期
  • 原文地址:https://blog.csdn.net/huangbangqing12/article/details/128071389