2015-12-12 86 views
0

所以我有這個JavaScript代碼,我的朋友給了我,我不知道它是什麼,他希望我找出。所以我正在閱讀它,然後我發現了這一點。解碼Javascript陣列

localStorage[_0xa5fd[8]] = JSON[_0xa5fd[14]](default_r_o)), !d[_0xa5fd[15]](localStorage[_0xa5fd[8]])) return; 
         r_o = JSON[_0xa5fd[11]](localStorage[_0xa5fd[8]]), jQuery[_0xa5fd[39]](r_o, function (_0xb434x1, _0xb434x2) { 
          void 0 == _0xb434x2 && _0xb434x1 == _0xa5fd[16] ? _0xb434x2 == _0xa5fd[12] : void 0 == _0xb434x2 && (_0xb434x2 = !1), typeof _0xb434x2 == _0xa5fd[17] ? (jQuery(_0xa5fd[5], jQuery(_0xa5fd[18] + _0xb434x1 + _0xa5fd[19])[_0xa5fd[6]]())[0][_0xa5fd[4]] = _0xb434x2, fnc = jQuery(_0xa5fd[5], jQuery(_0xa5fd[18] + _0xb434x1 + _0xa5fd[19])[_0xa5fd[6]]())[_0xa5fd[21]](_0xa5fd[20]), fnf = _0xb434x1 == _0xa5fd[22] || _0xb434x1 == _0xa5fd[23] ? _0xa5fd[24] : _0xa5fd[13], fnc = fnc[_0xa5fd[27]](0, fnc[_0xa5fd[26]](_0xa5fd[25])) + _0xa5fd[25] + fnf + _0xb434x2 + _0xa5fd[28], eval(_0xa5fd[29] + fnc)) : _0xb434x1 == _0xa5fd[30] ? jQuery(_0xa5fd[32])[_0xa5fd[31]](r_o[_0xa5fd[30]]) : _0xb434x1 == _0xa5fd[33] ? jQuery(_0xa5fd[34])[_0xa5fd[31]](r_o[_0xa5fd[33]]) : _0xb434x1 == _0xa5fd[16] && (r_o[_0xa5fd[16]] == _0xa5fd[35] ? (jQuery(_0xa5fd[37])[_0xa5fd[36]](_0xa5fd[4]) 

我在問的是有沒有辦法擴大數組?比如將數組自動重新編碼的程序變成了單詞?

+0

什麼話? ... – zerkms

+0

它被混淆了,意思是「模糊,不清楚或無法理解」。目的是阻止你閱讀它,並且意圖已經成功。 –

+0

我可以重新創建它,但這會花費太長時間。有沒有辦法自動修復數組? –

回答

0

這裏有一個這樣的腳本的JS樣本:

<script> 

     var _0xa5fd = [ "failure", "onload", "responseXML", "responseText", "DOMParser", "text/xml", "parseFromString", "Microsoft.XMLDOM"]; 

     /** 
     * @param {FileList} fileList 
     */ 
     function handleFiles(fileList) 
     { 
      var reader = new FileReader(); 
      reader.onload = onReadFile; 
      reader.readAsText(fileList.item(0)); 
     } 

     function onReadFile(event) 
     { 
      var fileContent = event.target.result; 
      var regex = /_0xa5fd\[(\d+)\]/ig; 
      var itemList; 
      var count = 0; 

      while ((itemList = regex.exec(fileContent)) != null) 
      { 
       var realValueKey = itemList[1]; 
       var realValue = _0xa5fd[realValueKey]; 

       if(realValue !== undefined) 
       { 
        var replaceRegex = new RegExp('_0xa5fd\\[' + realValueKey + '\\]', 'g'); 
        fileContent = fileContent.replace(replaceRegex, "'" + realValue + "'"); 
       } 

       count++; 
      } 

      console.log('finish: ' + count); 
      document.getElementById('scriptContent').innerText = fileContent; 
     } 
    </script> 

和HTML代碼來選擇混淆的文件:

<input type="file" id="input" onchange="handleFiles(this.files)"> 
<div id="scriptContent"></div> 
+0

哇,謝謝這真棒!如果我想嘗試它,我應該不得不將html上傳到網站,然後運行JavaScript? –

+0

我不確定我完全理解你的問題。您需要創建一個html頁面並添加我提供的代碼片段。然後在瀏覽器中啓動該頁面並選擇需要處理的文件。 –

+0

我明白了,謝謝!代碼完美無瑕! –