腾讯注册页面的 JS 解密
先访问:http://signup.qq.com/
然后下载: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('' + lO + '');
}
}
根据上面代码的逻辑,可以立刻得到真实代码其实就在该脚本的下面。用 Firebug 一看,果真如此:

这个页面的其它 js 也类似,用 Firebug 立刻就能找到已经解密好的代码。
发这篇文章,一是觉得 jerryhuang@tencent.com 的做法不可取(何苦自己折腾自己),二是推荐 Web 前端开发 IDE 中的王者:IntelliJ IDEA(目前已有社区开源免费版,强烈推荐)。

November 5th, 2009 on 10:38
IntelliJ IDEA 的社区版好像没有 js debugger 功能吧, 另外, 这软件对 cpu 及内存的要求相当高啊, 我虽然装了, 但操作相当不流畅, 但功能确实非常强大….
November 5th, 2009 on 10:42
此人已死,有事烧纸。
jerryhuang已经不在tencent了。
November 5th, 2009 on 10:47
这是自己手动混淆的吧.. 果然很BT..
November 5th, 2009 on 11:24
一直在用IntelliJ IDEA,不过,我觉得老版本比新版本好用,特别是7比8好用
November 5th, 2009 on 11:29
流畅的用IDEA写CSS……
November 5th, 2009 on 11:30
哦
这个蓝色有人问
一向不喜欢混淆,支持开源
November 5th, 2009 on 12:04
我支持开源,是因为我一直在学习别人,还没到让别人学习的程度
November 5th, 2009 on 12:29
写个IntelliJ IDEA教程吧~
November 6th, 2009 on 8:01
IntelliJ IDEA 是啥? 囧…
November 6th, 2009 on 13:41
idea 有点慢,经常假死,至少得2G以上才可以用用
November 6th, 2009 on 17:22
老大很强 !!
November 10th, 2009 on 20:21
IntelliJ IDEA 很好用, 如果觉得速度很慢,你配置下内存,设置为1024(如果内存足够大) 这样速度就很会了.
November 13th, 2009 on 20:10
想问下,解密后的
cD: function() {}
这函数里的
cH = ((((Zd[1][v] ^ da) – L[3]) / L[2] – L[1]) / L[0]) % L[4];
cE = (Zd[1].length – v – 1) % bV;
$B(cH).name = Zd[0][cE];
这个cH 的值 有什么办法直接得到?
L[1] L[2] L[3] 好像是每次都 不同。
November 18th, 2009 on 12:57
开源好
November 19th, 2009 on 0:40
飘过 留言
December 5th, 2009 on 21:35
用 IntelliJ IDEA 格式化代码,太重量级了。ff下把js源码包在一函数func里,再调用func.toSource(3);就ok啦!
December 7th, 2009 on 11:34
好棒下来学习
leave a reply