<script language=JavaScript>eval(unescape('var%20codelock_bas%3D%27ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%2B%2F%27%3B%20function%20codelock_dec%28str%29%20%7B%20str%3Dstr.split%28%27%40%27%29.join%28%27CAg%27%29%3B%20str%3Dstr.split%28%27%21%27%29.join%28%27W5%27%29%3B%20str%3Dstr.split%28%27%2A%27%29.join%28%27CAgI%27%29%3B%20var%20bt%2C%20dt%20%3D%20%27%27%3B%20for%28i%3D0%3B%20i%3Cstr.length%3B%20i%20%2B%3D%204%29%20%7B%20bt%20%3D%20%28codelock_bas.indexOf%28str.charAt%28i%29%29%20%26%200xff%29%20%3C%3C18%20%7C%20%28codelock_bas.indexOf%28str.charAt%28i%20%2B1%29%29%20%26%200xff%29%20%3C%3C12%20%7C%20%28codelock_bas.indexOf%28str.charAt%28i%20%2B2%29%29%20%26%200xff%29%20%3C%3C%206%20%7C%20codelock_bas.indexOf%28str.charAt%28i%20%2B3%29%29%20%26%200xff%3B%20dt%20%2B%3D%20String.fromCharCode%28%28bt%20%26%200xff0000%29%20%3E%3E16%2C%20%28bt%20%26%200xff00%29%20%3E%3E8%2C%20bt%20%26%200xff%29%3B%20%7D%20if%28str.charCodeAt%28i%20-2%29%20%3D%3D%2061%29%20%7B%20return%28dt.substring%280%2C%20dt.length%20-2%29%29%3B%20%7D%20else%20if%28str.charCodeAt%28i%20-1%29%20%3D%3D%2061%29%20%7B%20return%28dt.substring%280%2C%20dt.length%20-1%29%29%3B%20%7D%20else%20%7Breturn%28dt%29%7D%3B%20%7D')); document.write(codelock_dec('PHNjcmlwdCBsY!ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4gDQo8IS0tDQpmd!jdGlvbiBwbGF5KHVybCl7DQp2YXIgcGxheWVyY29kZSA9ICI8SUZSQU1FIHNyYz0nIit1cmwrIicgc2Nyb2xsa!nP!vIGZyYW1lQm9yZGVyP!vIG1hcmdpbldpZHRoPTAgdnNwYWNlPS0wIG1hcmdpbkhlaWdodD0wIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPjwvSUZSQU1FPiI7IGRvY3VtZ!0LmdldEVsZW1lbnRCeUlkKCJwbGF5ZXIiKS5pbm5lckhUTUwgPSBwbGF5ZXJjb2RlOw0KfQ0KLS0+IA0KPC9zY3JpcHQ+')); </script>
这段JavaScript代码在网页中是有效的,但我看不到document.write有任何输出,请高手赐教,请问这段代码到底表达什么?

解决方案 »

  1.   

    第一段,就是document.write之前的那些
    var codelock_bas= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    function codelock_dec(str) {
        str = str.split('@').join('CAg');
        str = str.split('!').join('W5');
        str = str.split('*').join('CAgI');
        var bt,
        dt = '';
        for (i = 0; i < str.length; i += 4) {
            bt = (codelock_bas.indexOf(str.charAt(i)) & 0xff) << 18 | (codelock_bas.indexOf(str.charAt(i + 1)) & 0xff) << 12 | (codelock_bas.indexOf(str.charAt(i + 2)) & 0xff) << 6 | codelock_bas.indexOf(str.charAt(i + 3)) & 0xff;
            dt += String.fromCharCode((bt & 0xff0000) >> 16, (bt & 0xff00) >> 8, bt & 0xff);
        }
        if (str.charCodeAt(i - 2) == 61) {
            return (dt.substring(0, dt.length - 2));
        } else if (str.charCodeAt(i - 1) == 61) {
            return (dt.substring(0, dt.length - 1));
        } else {
            return (dt)
        };
    };第二段:是调用上面的方法将字符串还原
    <script language="javascript" type="text/javascript"> 
    <!--
    function play(url){
    var playercode = "<IFRAME src='"+url+"' scrolling=no frameBorder=no marginWidth=0 vspace=-0 marginHeight=0 width='100%' height='100%'></IFRAME>"; 
    document.getElementById("player").innerHTML = playercode;
    }
    --> 
    </script>
      

  2.   

    eval 函数的意思是动态执行里面的javascript代码,而unescape 函数则可以把你看不懂的那一大段代码,变成有用的js代码。变成的代码是什么,你把eval换成alert就弹出来啦~
      

  3.   

    谢谢各位赐教,终于明白了
    但是第一段代码把eval换成alert和把eval换成document.write得到的输出怎么不大一样?