你的位置:首页 > Java教程

[Java教程]一个下载后无法访问的网站解密


今天用仿站工具下载了一个比较不错的html5网站,但在本地就无法打开,打开的网页是个白板。检查元素发现没有body元素,本地代码明明有boby,浏览器中却没有,估计是js在捣鬼。

挨个注销引用的js,发现<script src="style/index.min.js"></script>被注销后,能显示一点网页内容。

分析这个js,先是整理格式,发现有一个注释// index.js以下的内容都是加密乱码,如下图:

<script type="text/javascript">  eval(function(p, a, c, k, e, d) {    e = function(c) {      return (c < a ? "": e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))    };    if (!''.replace(/^/, String)) {      while (c--) d[e(c)] = k[c] || e(c);      k = [function(e) {        return d[e]      }];      e = function() {        return '\\w+'      };      c = 1;    };    while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);    // return p;    // 原来加密代码内容是这行    document.getElementById('textareaID').innerText=p;//    新添加这行代码把解密后的内容提取到上面新建的文本框中//    参考文章地址http://blog.csdn.net/cainiaoxiaozhou/article/details/8960561  } ('c y=0,1J=0;c 2h=1p,11=N;c Z,1e,1c,16;$(9(){c m=2P.34.1M.4L().39(/#p(\\d+)$/)

我搜索这个函数发现是一种js加密的方法,其实本身已经有解密了,只是源代码为return p; 将这个p的内容打印到 文本框中,解码了js代码加密

第二步分析js,我怀疑是某段js操作隐藏了body元素,本地和原网站的唯一区别就是网址,但是在js中查找原网站网址没有找到。挨个搜索查找控制body元素的js,终于发现了玄机,他把网址用函数重新写了一下,如果网址不为他这个就删除了body,代码如下:

function authentication() {  //绑定域名地址的小花招,不是他这个域名删除body  // var suffix = "com",  //   count = 1,  //   dot = ".";  // var d = (count + 999).toString() + "zhu" + dot + suffix;  // if (window.location.host.indexOf(d) < 0) {  //   $("body").remove();  //   return false  // }  return true}

将网址判断注销掉,直接返回真即可本地访问了