lelinhtinh / de4js

JavaScript Deobfuscator and Unpacker
https://lelinhtinh.github.io/de4js/
MIT License
1.33k stars 329 forks source link

Unable to deobfuscate this JS #40

Closed liamengland1 closed 4 years ago

liamengland1 commented 4 years ago

From https://streamtape.com/e/e41RG8mKrGhY37R?c1_file=https://rustream.xyz/asub/the-platform-el-hoyo-2020-en.vtt&c1_label=English

Original:

(function(){var c4043d5992cb36a18f3a88f3c0f9a3c7="ER9fEL5hYE5okxj7te231RtETeYnsR4fobKkmmVuJ8vUpXYs8jSLNOHZg0HTu5conKw6bbMtKq9X";var a=['w58oeF1Fdg==','EX7CksOYw7rDjMKUwovDvzU/bsOfwr5yw57Dr1LDk8OpBG/CqGkaBw==','w5PDjgbDjsKQEg==','S8OIwr7CpcOwEcK1woM=','w53DtcKnOg==','wopOOcOU','dsKRE8OMXcO2w7fCik4Kw7PCu8O0','ecObG8KRw4fCiMKTworCrMOyw5XCtQ==','YGpqw5AKTsKKw5gIwoJ8','w4kww5RpaMKpagcew6rDlsOdfMOOHjTDm8OfQEnDksKaw6I=','LjheCcKowpvCvw==','w6czMVnDhTnDq8KwScOaJsOFdsK+wrkaSHUPSiTDiTUJBzkSw5bCt8KPw7/Cm8KkIU1eC8K6wonCicK9wpgAwp3Di8O7wrLCqcKQbRpow4TDnMOdw5IUw59fw4vDlMOfwrtyw4B+cmxUwqBb','wpITwrFbw4QnM1s5ecOOPQ==','woLDjmjCpcOsK24kw4zDsW3DsA==','MgLDq343KQ==','wrPDhMOMwo93w7XDkCvCkcOiYMKYw7DClw==','AsOFbsOwWVdZdg==','w6ApIFvDhGzCtg==','w5HCrDXDisO9eg==','dMOaC8KBw5jCmcK/wps=','EmzCncKCwqbDjsKEwp/DrSI2fcOCwrto','Ky5BBsK+','AWTChcK8w4rCmVjClG3ChApEw43Co8ORHcO5wrtAEF5tEsKTQ0gYEAEawp/DrsKWw60=','Z8Ocw5VQwplCQsKmwrnCk8OHFSI=','wrPDisOOwp93w6XDuzbChsOX','EsOew60HCMOwCX9l','TcKpw7TCmQsTdcKqwqkqwqjDrVzCphwzwpfDpMKoCA==','PsKBwrM=','w67CtiPCvcKcw57DoMOmwr3CvznDt8KVP1soKx5+wqbDpCMfTC/DhAsGEcKSwrjClcOuHwbCnicaVz/DogPDvsOYwqkUUCV3w6vCqcO7Ug=='];(function(b,e){var f=function(g){while(--g){b['push'](b['shift']());}};f(++e);}(a,0xfd));var b=function(c,d){c=c-0x0;var e=a[c];if(b['ddsUVE']===undefined){(function(){var h;try{var j=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');h=j();}catch(k){h=window;}var i='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';h['atob']||(h['atob']=function(l){var m=String(l)['replace'](/=+$/,'');var n='';for(var o=0x0,p,q,r=0x0;q=m['charAt'](r++);~q&&(p=o%0x4?p*0x40+q:q,o++%0x4)?n+=String['fromCharCode'](0xff&p>>(-0x2*o&0x6)):0x0){q=i['indexOf'](q);}return n;});}());var g=function(h,l){var m=[],n=0x0,o,p='',q='';h=atob(h);for(var t=0x0,u=h['length'];t<u;t++){q+='%'+('00'+h['charCodeAt'](t)['toString'](0x10))['slice'](-0x2);}h=decodeURIComponent(q);var r;for(r=0x0;r<0x100;r++){m[r]=r;}for(r=0x0;r<0x100;r++){n=(n+m[r]+l['charCodeAt'](r%l['length']))%0x100;o=m[r];m[r]=m[n];m[n]=o;}r=0x0;n=0x0;for(var v=0x0;v<h['length'];v++){r=(r+0x1)%0x100;n=(n+m[r])%0x100;o=m[r];m[r]=m[n];m[n]=o;p+=String['fromCharCode'](h['charCodeAt'](v)^m[(m[r]+m[n])%0x100]);}return p;};b['abAVHE']=g;b['zdqxuy']={};b['ddsUVE']=!![];}var f=b['zdqxuy'][c];if(f===undefined){if(b['VsKoyE']===undefined){b['VsKoyE']=!![];}e=b['abAVHE'](e,d);b['zdqxuy'][c]=e;}else{e=f;}return e;};var v=window;v[b('0xd','yPFP')]=[[b('0x8','nV(N'),0x3c6443],[b('0x1a','lADt'),0x0],[b('0x17','J^*!'),0x0],[b('0x15',')LBm'),0x0],[b('0x12','4&%B'),b('0x13','cMSc')],[b('0x2','6WOn'),0x0],[b('0x14','mEH*'),!0x1]];var q=[b('0x1','sbkL'),b('0x7','AG@&'),b('0x11','(AeM'),b('0x9','5Ff&')],g=0x0,e,t=function(){if(!q[g])return;e=v[b('0x1b','jsKy')][b('0xe','lEnJ')](b('0x16','5MVN'));e[b('0xc','goBa')]=b('0x1c','5Ff&');e[b('0x0','4&%B')]=!0x0;var c=v[b('0xb',')Hr!')][b('0x5','ZFF*')](b('0xa','CPxr'))[0x0];e[b('0x6','leoN')]=b('0x18','MI(0')+q[g];e[b('0x10','HXsF')]=b('0x4','iBj]');e[b('0x19','cMSc')]=function(){g++;t();};c[b('0x3','J^*!')][b('0xf','jsKy')](e,c);};t();})();

Beautified:

(function() {
  var c4043d5992cb36a18f3a88f3c0f9a3c7 = "ER9fEL5hYE5okxj7te231RtETeYnsR4fobKkmmVuJ8vUpXYs8jSLNOHZg0HTu5conKw6bbMtKq9X";
  var a = ['w58oeF1Fdg==', 'EX7CksOYw7rDjMKUwovDvzU/bsOfwr5yw57Dr1LDk8OpBG/CqGkaBw==', 'w5PDjgbDjsKQEg==', 'S8OIwr7CpcOwEcK1woM=', 'w53DtcKnOg==', 'wopOOcOU', 'dsKRE8OMXcO2w7fCik4Kw7PCu8O0', 'ecObG8KRw4fCiMKTworCrMOyw5XCtQ==', 'YGpqw5AKTsKKw5gIwoJ8', 'w4kww5RpaMKpagcew6rDlsOdfMOOHjTDm8OfQEnDksKaw6I=', 'LjheCcKowpvCvw==', 'w6czMVnDhTnDq8KwScOaJsOFdsK+wrkaSHUPSiTDiTUJBzkSw5bCt8KPw7/Cm8KkIU1eC8K6wonCicK9wpgAwp3Di8O7wrLCqcKQbRpow4TDnMOdw5IUw59fw4vDlMOfwrtyw4B+cmxUwqBb', 'wpITwrFbw4QnM1s5ecOOPQ==', 'woLDjmjCpcOsK24kw4zDsW3DsA==', 'MgLDq343KQ==', 'wrPDhMOMwo93w7XDkCvCkcOiYMKYw7DClw==', 'AsOFbsOwWVdZdg==', 'w6ApIFvDhGzCtg==', 'w5HCrDXDisO9eg==', 'dMOaC8KBw5jCmcK/wps=', 'EmzCncKCwqbDjsKEwp/DrSI2fcOCwrto', 'Ky5BBsK+', 'AWTChcK8w4rCmVjClG3ChApEw43Co8ORHcO5wrtAEF5tEsKTQ0gYEAEawp/DrsKWw60=', 'Z8Ocw5VQwplCQsKmwrnCk8OHFSI=', 'wrPDisOOwp93w6XDuzbChsOX', 'EsOew60HCMOwCX9l', 'TcKpw7TCmQsTdcKqwqkqwqjDrVzCphwzwpfDpMKoCA==', 'PsKBwrM=', 'w67CtiPCvcKcw57DoMOmwr3CvznDt8KVP1soKx5+wqbDpCMfTC/DhAsGEcKSwrjClcOuHwbCnicaVz/DogPDvsOYwqkUUCV3w6vCqcO7Ug=='];
  (function(b, e) {
    var f = function(g) {
      while (--g) {
        b['push'](b['shift']());
      }
    };
    f(++e);
  }(a, 0xfd));
  var b = function(c, d) {
    c = c - 0x0;
    var e = a[c];
    if (b['ddsUVE'] === undefined) {
      (function() {
        var h;
        try {
          var j = Function('return\x20(function()\x20' + '{}.constructor(\x22return\x20this\x22)(\x20)' + ');');
          h = j();
        } catch (k) {
          h = window;
        }
        var i = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
        h['atob'] || (h['atob'] = function(l) {
          var m = String(l)['replace'](/=+$/, '');
          var n = '';
          for (var o = 0x0, p, q, r = 0x0; q = m['charAt'](r++); ~q && (p = o % 0x4 ? p * 0x40 + q : q, o++ % 0x4) ? n += String['fromCharCode'](0xff & p >> (-0x2 * o & 0x6)) : 0x0) {
            q = i['indexOf'](q);
          }
          return n;
        });
      }());
      var g = function(h, l) {
        var m = [],
          n = 0x0,
          o, p = '',
          q = '';
        h = atob(h);
        for (var t = 0x0, u = h['length']; t < u; t++) {
          q += '%' + ('00' + h['charCodeAt'](t)['toString'](0x10))['slice'](-0x2);
        }
        h = decodeURIComponent(q);
        var r;
        for (r = 0x0; r < 0x100; r++) {
          m[r] = r;
        }
        for (r = 0x0; r < 0x100; r++) {
          n = (n + m[r] + l['charCodeAt'](r % l['length'])) % 0x100;
          o = m[r];
          m[r] = m[n];
          m[n] = o;
        }
        r = 0x0;
        n = 0x0;
        for (var v = 0x0; v < h['length']; v++) {
          r = (r + 0x1) % 0x100;
          n = (n + m[r]) % 0x100;
          o = m[r];
          m[r] = m[n];
          m[n] = o;
          p += String['fromCharCode'](h['charCodeAt'](v) ^ m[(m[r] + m[n]) % 0x100]);
        }
        return p;
      };
      b['abAVHE'] = g;
      b['zdqxuy'] = {};
      b['ddsUVE'] = !![];
    }
    var f = b['zdqxuy'][c];
    if (f === undefined) {
      if (b['VsKoyE'] === undefined) {
        b['VsKoyE'] = !![];
      }
      e = b['abAVHE'](e, d);
      b['zdqxuy'][c] = e;
    } else {
      e = f;
    }
    return e;
  };
  var v = window;
  v[b('0xd', 'yPFP')] = [
    [b('0x8', 'nV(N'), 0x3c6443],
    [b('0x1a', 'lADt'), 0x0],
    [b('0x17', 'J^*!'), 0x0],
    [b('0x15', ')LBm'), 0x0],
    [b('0x12', '4&%B'), b('0x13', 'cMSc')],
    [b('0x2', '6WOn'), 0x0],
    [b('0x14', 'mEH*'), !0x1]
  ];
  var q = [b('0x1', 'sbkL'), b('0x7', 'AG@&'), b('0x11', '(AeM'), b('0x9', '5Ff&')],
    g = 0x0,
    e, t = function() {
      if (!q[g]) return;
      e = v[b('0x1b', 'jsKy')][b('0xe', 'lEnJ')](b('0x16', '5MVN'));
      e[b('0xc', 'goBa')] = b('0x1c', '5Ff&');
      e[b('0x0', '4&%B')] = !0x0;
      var c = v[b('0xb', ')Hr!')][b('0x5', 'ZFF*')](b('0xa', 'CPxr'))[0x0];
      e[b('0x6', 'leoN')] = b('0x18', 'MI(0') + q[g];
      e[b('0x10', 'HXsF')] = b('0x4', 'iBj]');
      e[b('0x19', 'cMSc')] = function() {
        g++;
        t();
      };
      c[b('0x3', 'J^*!')][b('0xf', 'jsKy')](e, c);
    };
  t();
})();
PatSpiegel commented 4 years ago

again obfuscation from https://obfuscator.io/ maybe need create template for new issue? so as not to create posts asking for deobfuscation

lelinhtinh commented 4 years ago

Perhaps it should be ignored, because this obfuscator is quite difficult to find all the rules. However, this is a short code, does not contain dead code, so it is easy to solve.

var c4043d5992cb36a18f3a88f3c0f9a3c7 = "ER9fEL5hYE5okxj7te231RtETeYnsR4fobKkmmVuJ8vUpXYs8jSLNOHZg0HTu5conKw6bbMtKq9X";
var v = window;
v._pop = [
    ['siteId', 3957827],
    ['minBid', 0],
    ['popundersPerIP', 0],
    ['delayBetween', 0],
    ['default', 'https://thogrypufe.pro/bm3.VH0qPb3spOvQb/mjVCJfZ/D/0a0-MUTkQ/2fNNT/YE2e'],
    ['defaultPerDay', 0],
    ['topmostLayer', !1]
];
var q = ['www.cdn4ads.com/tsparticles.min.js', 'd3g5ovfngjw9bw.cloudfront.net/jquery.dynatable.min.js', 'www.ueuodgnrhb.com/l.js', 'www.shqbsdjatunl.com/pz.js'],
    g = 0,
    e, t = function () {
        if (!q[g]) return;
        e = v.document.createElement('script');
        e.type = 'text/javascript';
        e.async = !0;
        var c = v.document.getElementsByTagName('script')[0];
        e.src = 'https://' + q[g];
        e.crossOrigin = 'anonymous';
        e.onerror = function () {
            g++;
            t();
        };
        c.parentNode.insertBefore(e, c);
    };
t();
How? ```js eval(`var a = ['w58oeF1Fdg==', 'EX7CksOYw7rDjMKUwovDvzU/bsOfwr5yw57Dr1LDk8OpBG/CqGkaBw==', 'w5PDjgbDjsKQEg==', 'S8OIwr7CpcOwEcK1woM=', 'w53DtcKnOg==', 'wopOOcOU', 'dsKRE8OMXcO2w7fCik4Kw7PCu8O0', 'ecObG8KRw4fCiMKTworCrMOyw5XCtQ==', 'YGpqw5AKTsKKw5gIwoJ8', 'w4kww5RpaMKpagcew6rDlsOdfMOOHjTDm8OfQEnDksKaw6I=', 'LjheCcKowpvCvw==', 'w6czMVnDhTnDq8KwScOaJsOFdsK+wrkaSHUPSiTDiTUJBzkSw5bCt8KPw7/Cm8KkIU1eC8K6wonCicK9wpgAwp3Di8O7wrLCqcKQbRpow4TDnMOdw5IUw59fw4vDlMOfwrtyw4B+cmxUwqBb', 'wpITwrFbw4QnM1s5ecOOPQ==', 'woLDjmjCpcOsK24kw4zDsW3DsA==', 'MgLDq343KQ==', 'wrPDhMOMwo93w7XDkCvCkcOiYMKYw7DClw==', 'AsOFbsOwWVdZdg==', 'w6ApIFvDhGzCtg==', 'w5HCrDXDisO9eg==', 'dMOaC8KBw5jCmcK/wps=', 'EmzCncKCwqbDjsKEwp/DrSI2fcOCwrto', 'Ky5BBsK+', 'AWTChcK8w4rCmVjClG3ChApEw43Co8ORHcO5wrtAEF5tEsKTQ0gYEAEawp/DrsKWw60=', 'Z8Ocw5VQwplCQsKmwrnCk8OHFSI=', 'wrPDisOOwp93w6XDuzbChsOX', 'EsOew60HCMOwCX9l', 'TcKpw7TCmQsTdcKqwqkqwqjDrVzCphwzwpfDpMKoCA==', 'PsKBwrM=', 'w67CtiPCvcKcw57DoMOmwr3CvznDt8KVP1soKx5+wqbDpCMfTC/DhAsGEcKSwrjClcOuHwbCnicaVz/DogPDvsOYwqkUUCV3w6vCqcO7Ug==']; (function(b, e) { var f = function(g) { while (--g) { b['push'](b['shift']()); } }; f(++e); }(a, 0xfd)); var b = function(c, d) { c = c - 0x0; var e = a[c]; if (b['ddsUVE'] === undefined) { (function() { var h; try { var j = Function('return\x20(function()\x20' + '{}.constructor(\x22return\x20this\x22)(\x20)' + ');'); h = j(); } catch (k) { h = window; } var i = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; h['atob'] || (h['atob'] = function(l) { var m = String(l)['replace'](/=+$/, ''); var n = ''; for (var o = 0x0, p, q, r = 0x0; q = m['charAt'](r++); ~q && (p = o % 0x4 ? p * 0x40 + q : q, o++ % 0x4) ? n += String['fromCharCode'](0xff & p >> (-0x2 * o & 0x6)) : 0x0) { q = i['indexOf'](q); } return n; }); }()); var g = function(h, l) { var m = [], n = 0x0, o, p = '', q = ''; h = atob(h); for (var t = 0x0, u = h['length']; t < u; t++) { q += '%' + ('00' + h['charCodeAt'](t)['toString'](0x10))['slice'](-0x2); } h = decodeURIComponent(q); var r; for (r = 0x0; r < 0x100; r++) { m[r] = r; } for (r = 0x0; r < 0x100; r++) { n = (n + m[r] + l['charCodeAt'](r % l['length'])) % 0x100; o = m[r]; m[r] = m[n]; m[n] = o; } r = 0x0; n = 0x0; for (var v = 0x0; v < h['length']; v++) { r = (r + 0x1) % 0x100; n = (n + m[r]) % 0x100; o = m[r]; m[r] = m[n]; m[n] = o; p += String['fromCharCode'](h['charCodeAt'](v) ^ m[(m[r] + m[n]) % 0x100]); } return p; }; b['abAVHE'] = g; b['zdqxuy'] = {}; b['ddsUVE'] = !![]; } var f = b['zdqxuy'][c]; if (f === undefined) { if (b['VsKoyE'] === undefined) { b['VsKoyE'] = !![]; } e = b['abAVHE'](e, d); b['zdqxuy'][c] = e; } else { e = f; } return e; };`); let str = `var c4043d5992cb36a18f3a88f3c0f9a3c7 = "ER9fEL5hYE5okxj7te231RtETeYnsR4fobKkmmVuJ8vUpXYs8jSLNOHZg0HTu5conKw6bbMtKq9X"; var v = window; v[b('0xd', 'yPFP')] = [ [b('0x8', 'nV(N'), 0x3c6443], [b('0x1a', 'lADt'), 0x0], [b('0x17', 'J^*!'), 0x0], [b('0x15', ')LBm'), 0x0], [b('0x12', '4&%B'), b('0x13', 'cMSc')], [b('0x2', '6WOn'), 0x0], [b('0x14', 'mEH*'), !0x1] ]; var q = [b('0x1', 'sbkL'), b('0x7', 'AG@&'), b('0x11', '(AeM'), b('0x9', '5Ff&')], g = 0x0, e, t = function() { if (!q[g]) return; e = v[b('0x1b', 'jsKy')][b('0xe', 'lEnJ')](b('0x16', '5MVN')); e[b('0xc', 'goBa')] = b('0x1c', '5Ff&'); e[b('0x0', '4&%B')] = !0x0; var c = v[b('0xb', ')Hr!')][b('0x5', 'ZFF*')](b('0xa', 'CPxr'))[0x0]; e[b('0x6', 'leoN')] = b('0x18', 'MI(0') + q[g]; e[b('0x10', 'HXsF')] = b('0x4', 'iBj]'); e[b('0x19', 'cMSc')] = function() { g++; t(); }; c[b('0x3', 'J^*!')][b('0xf', 'jsKy')](e, c); }; t();`; str.replace(/b\(\'0x.+?\',\s?'.+?'\)/g, (m) => { str = str.replace(m, `'${eval(m)}'`); }); str.replace(/(? { str = str.replace(m, eval(m)); }); str = str.replace(/(\[("|')([\w\d_$]+)("|')\])/gi, '.$3 '); console.log(str); // <~ result ```