<script type="text/javascript">
eval(function(p, r, o, x, y, s) {
y = function(c) {
return (c < r ? '': y(parseInt(c / r))) + ((c = c % r) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
};
if (!''.replace(/^/, String)) {
while (o--) {
s[y(o)] = x[o] || y(o)
}
x = [function(y) {
return s[y]
}];
y = function() {
return '\\w+'
};
o = 1
};
while (o--) {
if (x[o]) {
p = p.replace(new RegExp('\\b' + y(o) + '\\b', 'g'), x[o])
}
}
return p
} ('a=D^C;p=9;l=B^E;i=F^A;s=H^G;r=7;q=J^y;e=5;c=4;j=0;b=3;t=6;h=1;o=u^x;f=z^w;g=v^I;m=O^T;k=2;d=U^V;n=8;K=j^l;P=h^i;R=k^g;X=b^a;N=c^d;L=e^m;M=t^s;Q=r^q;W=n^o;S=p^f;', 60, 60, '^^^^^^^^^^ThreeSevenEight^Eight^One^Four4One^Seven^Five5Nine^NineSevenZero^Three^FiveFiveFour^Five^Six^OneZeroThree^FourOneFive^Two^SevenFiveSeven^Four^TwoOneSix^Zero^ThreeFiveTwo^Nine^3653^7117^8090^8909^9090^640^1337^5333^1080^6411^3129^5198^8085^6586^8118^4024^OneThreeOneTwo^Eight0SevenFour^EightSevenZeroOne^NineTwoFiveSeven^10852^NineOneTwoFive^Three3NineNine^ThreeNineSixThree^EightZeroEightEight^8000^6783^8088^Five0FourZero^Two2ThreeSix'.split('\u005e'), 0, {}))
</script>然后再代码中是这样调用的(Five0FourZero^SevenFiveSeven)小弟初涉js,完全搞晕了
求大神们指点一二 !
原始页面在这里http://spys.ru/en/
在贴贴<script type="text/javascript">
eval(function(p, r, o, x, y, s) {
y = function(c) {
return (c < r ? '': y(parseInt(c / r))) + ((c = c % r) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
};
if (!''.replace(/^/, String)) {
while (o--) {
s[y(o)] = x[o] || y(o)
}
x = [function(y) {
return s[y]
}];
y = function() {
return '\\w+'
};
o = 1
};
while (o--) {
if (x[o]) {
p = p.replace(new RegExp('\\b' + y(o) + '\\b', 'g'), x[o])
}
}
return p
}
//调用function(p, r, o, x, y, s)开始
('a=D^C;p=9;l=B^E;i=F^A;s=H^G;r=7;q=J^y;e=5;c=4;j=0;b=3;t=6;h=1;o=u^x;f=z^w;g=v^I;m=O^T;k=2;d=U^V;n=8;K=j^l;P=h^i;R=k^g;X=b^a;N=c^d;L=e^m;M=t^s;Q=r^q;W=n^o;S=p^f;',
60,
60,
'^^^^^^^^^^ThreeSevenEight^Eight^One^Four4One^Seven^Five5Nine^NineSevenZero^Three^FiveFiveFour^Five^Six^OneZeroThree^FourOneFive^Two^SevenFiveSeven^Four^TwoOneSix^Zero^ThreeFiveTwo^Nine^3653^7117^8090^8909^9090^640^1337^5333^1080^6411^3129^5198^8085^6586^8118^4024^OneThreeOneTwo^Eight0SevenFour^EightSevenZeroOne^NineTwoFiveSeven^10852^NineOneTwoFive^Three3NineNine^ThreeNineSixThree^EightZeroEightEight^8000^6783^8088^Five0FourZero^Two2ThreeSix'.split('\u005e'),
0,
{})
//调用function(p, r, o, x, y, s)结束
) //eval函数结束
</script>
关键是eval的调用问题 eval(function(p) {}('xxx'))这算神马结构?
而且代码最后一个参数是{},这是啥东东??
我确定这调用了函数,而不是普通的优先级括号
默认调用的是eval??
function(p) {}是定义一个函数
function(p) {}('xxx') 是执行这个定义的函数
eval(function(p) {}('xxx')) 这个是把函数的返回值(应该是字符串)当作语句来执行