破解网站简单 js 加密 (一)

问题描述

准备工作

首先将浏览器设置为禁止 js 加载的模式:
在这里插入图片描述
我们再次去请求相关的网站的时候就看不到 js 动态加载之后内容了。

正向推理

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

在这里插入图片描述
我们将运行的结果复制下来:

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

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

我们对第二段代码做一个 js 的美化,
在这里插入图片描述
查找一下 js 美化的网站:
在这里插入图片描述
随便选择一个,将第二段代码复制进去:

将格式化后的代码保存在一个全新的 js 文件中:
在这里插入图片描述
先看其中的 var _0x56ae … ,定义了一个函数,不难发现,这个函数在整个代码中有极多次被调用的经历。

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

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

在这里插入图片描述
试着调用一下:
在这里插入图片描述
报错说 某个变量没有定义。 全局搜索这个变量,发现是一个定义的全部变量数组:
在这里插入图片描述
我们将这个数组也放在 js 环境中:
在这里插入图片描述
再次执行就拿到了转换之后的字符串:
在这里插入图片描述
在整个 js 代码中搜索并且函数转换为相应的结果字符串。
在这里插入图片描述
过程比较繁琐,我是一一搜索替换的。

替换完成后,整个的结构就清晰很多了。 然后我们从底部开始看最终被调用的一个函数:
在这里插入图片描述
该函数首先定义了一个映射,我们将其复制到控制台。 变量非常地不能见名知意,但是基本意思都很明确。 例如, 第一个键值对是将 传入的某个函数执行; 第二个是将第二个参数传入第一个函数参数中运行…
在这里插入图片描述
那么将 var _0xb14971 = _0x532424’hwQpj’;
翻译过来就是执行: _0x344cd4()

全局搜索找个这个函数定义:
在这里插入图片描述

没有输入参数,将其复制到控制台进行运行:
在这里插入图片描述
报了一个 wzwsquestion is not defined. 全局搜索 wzwsquestion

是我们运行第一段 js 代码得到的一个结果变量:
在这里插入图片描述
将其加入控制台 js 运行环境中再次执行:
在这里插入图片描述
还是少一个变量,继续加入:
在这里插入图片描述
执行成功:
在这里插入图片描述
那么我们就可以对相应的位置进行替换了:
在这里插入图片描述
接下来我们继续, var _0x10ace8 = _0x532424’lYfvS’ 翻译过来就是:
_0x412a72(“WZWS_CONFIRM_PREFIX_LABEL7014930”)

… (剩下的流程省略掉 )
最后,我们得到了:
在这里插入图片描述
然后我们回到最初,拿到初始请求之后的第二个重定向请求:
在这里插入图片描述
对比一下基本上是一致的,我们也可以就此推测 window[‘location’] 就是在做一个重定向。

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

更新时间: 2020-01-18

发布了265 篇原创文章 · 获赞 94 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/Enjolras_fuu/article/details/104027120