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

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

Js逆向教程17-极验滑块 实现加密算法的逻辑_第1张图片

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

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

一、加密算法的结果查看

计算u运行后的结果:

Js逆向教程17-极验滑块 实现加密算法的逻辑_第2张图片

'a45a0551c344b03be428cab551f9755f073e64061c35988a29d6ba70e7d35c8b9e963b63e630d173843eee06a944b557f7c7348c5954fe8869293f793548216083d5dca650eba1e72395f6c22f80bddb05c44d5cdc49bd6bc4ec6a7138a0bde6bca723601cd01621159a7c6ebaf311d361234d0de12f6e8787f10ced9f19b274'

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;
            },

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

256用作取模计算。、

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

二、跟值技巧

从头看

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

从尾看

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

下断点

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

三、rsa加密分析

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

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

rsa里面叫做设置公钥 。

Js逆向教程17-极验滑块 实现加密算法的逻辑_第3张图片

调用了加密的方法encrypt:

Js逆向教程17-极验滑块 实现加密算法的逻辑_第4张图片

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

Js逆向教程17-极验滑块 实现加密算法的逻辑_第5张图片

四、t()方法重写

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

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

Js逆向教程17-极验滑块 实现加密算法的逻辑_第6张图片

往里看是调用了t方法:

Js逆向教程17-极验滑块 实现加密算法的逻辑_第7张图片

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

Js逆向教程17-极验滑块 实现加密算法的逻辑_第8张图片

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

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

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

Js逆向教程17-极验滑块 实现加密算法的逻辑_第9张图片

替换字符串后的代码如下

(65536 * (1 + Math["random"]()) | 0)["toString"](16)["substring"](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;
}

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

Js逆向教程17-极验滑块 实现加密算法的逻辑_第10张图片

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

e = new U()[$_CBGAZ(353)](this[$_CBGAZ(756)](!0));

你可能感兴趣的:(js逆向,javascript,服务器,开发语言)