问题描述

准备工作

首先将浏览器设置为禁止 js 加载的模式:

javascript 登陆加密 js加密了怎么办_全局搜索


我们再次去请求相关的网站的时候就看不到 js 动态加载之后内容了。

javascript 登陆加密 js加密了怎么办_全局搜索_02

正向推理

对于 script 里面的代码,第一段是一个 eval 函数的调用。 第二行是一大段的代码,先将第一段的代码复制出来,在控制台将 eval 替换为 console.log 即可。

javascript 登陆加密 js加密了怎么办_javascript 登陆加密_03

javascript 登陆加密 js加密了怎么办_全局搜索_04


我们将运行的结果复制下来:

var dynamicurl="/WZWSREL2dvdXRvbmdqaWFvbGl1LzExMzQ1Ni8xMTM0NjkvMTEwNDAvaW5kZXgxLmh0bWw=";
var wzwsquestion="{H0Od9evT@es_";
var wzwsfactor="5967";
var wzwsmethod="WZWS_METHOD";
var wzwsparams="WZWS_PARAMS";

看起来是在 js 中定义的几个变量。

我们对第二段代码做一个 js 的美化,

javascript 登陆加密 js加密了怎么办_javascript 登陆加密_05


查找一下 js 美化的网站:

javascript 登陆加密 js加密了怎么办_字符串_06


随便选择一个,将第二段代码复制进去:将格式化后的代码保存在一个全新的 js 文件中:

javascript 登陆加密 js加密了怎么办_全局搜索_07


先看其中的 var _0x56ae … ,定义了一个函数,不难发现,这个函数在整个代码中有极多次被调用的经历。

这其实是一个还原字符串的函数。 具体的实现先不管,我们只要知道可以调用它实现一定的功能即可。

怎样验证呢?就是将这个函数复制到 控制台上,我们就在 js 的环境中定义了这样的一个还原函数。

javascript 登陆加密 js加密了怎么办_全局搜索_08


试着调用一下:

javascript 登陆加密 js加密了怎么办_javascript 登陆加密_09


报错说 某个变量没有定义。 全局搜索这个变量,发现是一个定义的全部变量数组:

javascript 登陆加密 js加密了怎么办_重定向_10


我们将这个数组也放在 js 环境中:

javascript 登陆加密 js加密了怎么办_全局搜索_11


再次执行就拿到了转换之后的字符串:

javascript 登陆加密 js加密了怎么办_重定向_12


在整个 js 代码中搜索并且函数转换为相应的结果字符串。

javascript 登陆加密 js加密了怎么办_字符串_13


过程比较繁琐,我是一一搜索替换的。替换完成后,整个的结构就清晰很多了。 然后我们从底部开始看最终被调用的一个函数:

javascript 登陆加密 js加密了怎么办_重定向_14


该函数首先定义了一个映射,我们将其复制到控制台。 变量非常地不能见名知意,但是基本意思都很明确。 例如, 第一个键值对是将 传入的某个函数执行; 第二个是将第二个参数传入第一个函数参数中运行…

javascript 登陆加密 js加密了怎么办_重定向_15


那么将 var _0xb14971 = _0x532424’hwQpj’;

翻译过来就是执行: _0x344cd4()全局搜索找个这个函数定义:

javascript 登陆加密 js加密了怎么办_重定向_16

没有输入参数,将其复制到控制台进行运行:

javascript 登陆加密 js加密了怎么办_全局搜索_17


报了一个 wzwsquestion is not defined. 全局搜索 wzwsquestion是我们运行第一段 js 代码得到的一个结果变量:

javascript 登陆加密 js加密了怎么办_字符串_18


将其加入控制台 js 运行环境中再次执行:

javascript 登陆加密 js加密了怎么办_javascript 登陆加密_19


还是少一个变量,继续加入:

javascript 登陆加密 js加密了怎么办_全局搜索_20


执行成功:

javascript 登陆加密 js加密了怎么办_全局搜索_21


那么我们就可以对相应的位置进行替换了:

javascript 登陆加密 js加密了怎么办_全局搜索_22


接下来我们继续, var _0x10ace8 = _0x532424’lYfvS’ 翻译过来就是:

_0x412a72(“WZWS_CONFIRM_PREFIX_LABEL7014930”)… (剩下的流程省略掉 )

最后,我们得到了:

javascript 登陆加密 js加密了怎么办_javascript 登陆加密_23


然后我们回到最初,拿到初始请求之后的第二个重定向请求:

javascript 登陆加密 js加密了怎么办_全局搜索_24


对比一下基本上是一致的,我们也可以就此推测 window[‘location’] 就是在做一个重定向。

接下来我们就可以反向去推导 js 了 。

更新时间: 2020-01-18