搜索:
首页 >> JavaScript >> Js高级编程 >> 腾讯注册页面的 JS 解密

腾讯注册页面的 JS 解密

2009-11-18 作者:lifesinger 来源:岁月如歌 投递文章

先下载:http://signup.qq.com/js/a.js

用 IntelliJ IDEA 格式化代码:

var naa = true;
O00O = new Array();
O00O[0] = ' f u n c t i o n   p ( ) { v a r...';
OOO0 = 'fu';
OO0O = 'TVOBtOOIPdmbLGGEKsBJ';
OOO0 += 'nction __' + '__(_' + 'O0){';
O0O0 = 'v%61%72%20l%32%3Dw%69\156d\157w%2E...';
//...
OOO0 += 'eva';
OOOO = 'xxQFIxOBcaNyWMCROKJuuZcq';
OOO0 += 'l(unes' + 'cape(_O0))}';
eval(OOO0);
//...
____(O0O0);
OO00 += '0O.e 2   -&O5NORmP...';


注意变量名,很囧很混淆。使用 IDEA 强大的重构工具,换个名和调整下顺序:

var naa = true;

var a = new Array();
a[0] = 'f u n c t i o n   p ( ) { v a r...';

var b = 'fu';
b += 'nction __' + '__(_' + 'O0){';
b += 'eva';
b += 'l(unes' + 'cape(_O0))}';
eval(b);
b = '';

var c = 'OROIOYrQlrnBFVmo';

var d = 'v\141r%20%6C%32%3Dw\151ndo...';
var e = 'KFevRhEwkUOOOcSLStJIOObYtLDkWZpWOkvT';
//...

b 太猥琐啦。处理下,加密方法浮出水面:

var naa = true;

var a = new Array();
a[0] = 'f u n c t i o n   p ( ) { v a r...';

var l2 = window.opera ? 1 : 0;
function unencode(l4) {
  //...
}

var lO = '';
for (var ii = 0; ii < a.length; ii++) {
    lO += unencode(a[ii]);
}

var Zz = 'i7f=zis&&!zOF?true:false;';
var Zy = lO.indexOf(Zz);
if (Zy >= 0) {
    lO = lO.substr(Zy + (Zz.length));
    if (naa) {
        document.write('

根据上面代码的逻辑,可以立刻得到真实代码其实就在该脚本的下面。用 Firebug 一看,果真如此:

这个页面的其它 js 也类似,用 Firebug 立刻就能找到已经解密好的代码。

发这篇文章,一是觉得 jerryhuang@tencent.com 的做法不可取(何苦自己折腾自己),二是推荐 Web 前端开发 IDE 中的王者:IntelliJ IDEA(目前已有社区开源免费版,强烈推荐)。

Tags:js解密  加密  腾讯  混淆 
相关文章