Помогите с деобфускацией javascript

278
14 июля 2017, 06:44

Здравствуйте, есть такой кусок кода:

() { 
  document[_0x3305('0x3c')]('\x62\x75\x74\x74\x6f\x6e\x41\x72\x72\x6f\x77\x73')[_0x3305('0x5e')] = _0x3305('0x16b'); 
  document[_0x3305('0x3c')]('\x62\x75\x74\x74\x6f\x6e\x50\x6f\x69\x6e\x74\x65\x72')['\x73\x74\x79\x6c\x65']['\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d'] = _0x3305('0x16c'); 
  document[_0x3305('0x3c')](_0x3305('0x123'))[_0x3305('0x46')]['\x64\x69\x73\x70\x6c\x61\x79'] = _0x3305('0x54'); 
  document[_0x3305('0x3c')](_0x3305('0x11b'))[_0x3305('0x5e')] = _0x3305('0x16d'); 
  document[_0x3305('0x3c')](_0x3305('0x113'))[_0x3305('0x5e')] = ''; 
  document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64'](_0x3305('0x113'))[_0x3305('0x46')]['\x64\x69\x73\x70\x6c\x61\x79'] = ''; 
  var _0x209b42 = document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64'](_0x3305('0x3b'))[_0x3305('0x52')]('\x69\x74\x65\x6d\x62\x6c\x6f\x63\x6b'); 
  var _0x4f48f = 0x0; 
  var _0x52b9bc; 
  var _0x267929 = []; 
  if (_0x209b42['\x6c\x65\x6e\x67\x74\x68'] > 0x0) { 
    for (_0x52b9bc = 0x0; _0x52b9bc < _0x209b42[_0x3305('0xc')]; _0x52b9bc++) { 
      var _0x4cc71c = _0x209b42[_0x52b9bc]['\x69\x64']['\x73\x70\x6c\x69\x74']('\x5f'); 
      var _0x3639d7 = UitemsData[_0x4cc71c[0x0]][_0x3305('0x38')][_0x4cc71c[0x1]]['\x69\x64']; 
      if (UitemsData[_0x4cc71c[0x0]]['\x70'] == 0x0 || UitemsData[_0x4cc71c[0x0]][_0x3305('0x38')][_0x4cc71c[0x1]]['\x61'] == 0x0) { 
        document[_0x3305('0x3c')]('\x62\x75\x74\x74\x6f\x6e\x41\x72\x72\x6f\x77\x73')['\x63\x6c\x61\x73\x73\x4e\x61\x6d\x65'] = '\x74\x72\x61\x64\x65\x5f\x69\x6d\x61\x67\x65'; 
        document[_0x3305('0x3c')]('\x74\x72\x61\x64\x65\x53\x74\x61\x74\x75\x73\x54\x65\x78\x74')[_0x3305('0x5e')] = '\x65\x72\x72\x6f\x72'; 
        document[_0x3305('0x3c')]('\x74\x72\x61\x64\x65\x53\x74\x61\x74\x75\x73\x54\x65\x78\x74')[_0x3305('0x5d')] = langText[_0x3305('0x16e')]; 
        AddTextClose(); 
        return !![]; 
      } 
      _0x4f48f += UitemsData[_0x4cc71c[0x0]]['\x70']; 
      _0x267929[_0x3305('0x6e')](_0x3639d7); 
    } 
  } 
  _0x209b42 = document[_0x3305('0x3c')](_0x3305('0x43'))[_0x3305('0x52')](_0x3305('0x98')); 
  var _0x356638 = 0x0; 
  var _0x501b81 = null; 
  var _0x23d191 = []; 
  var _0x199888 = []; 
  var _0x12dc77 = 0x0; 
  var _0x9bbedd = uBalance; 
  if (_0x209b42['\x6c\x65\x6e\x67\x74\x68'] > 0x0) { 
    for (_0x52b9bc = 0x0; _0x52b9bc < _0x209b42[_0x3305('0xc')]; _0x52b9bc++) { 
      var _0x4cc71c = _0x209b42[_0x52b9bc]['\x69\x64'][_0x3305('0x3f')]('\x5f'); 
      if (_0x4cc71c[0x0] !== '\x63\x61\x73\x65') { 
        var _0x52d517 = itemsData[_0x4cc71c[0x0]][_0x3305('0x38')][_0x4cc71c[0x1]]; 
        if (itemsData[_0x4cc71c[0x0]]['\x70'] == 0x0 || _0x52d517['\x61'] == 0x0) { 
          document[_0x3305('0x3c')]('\x62\x75\x74\x74\x6f\x6e\x41\x72\x72\x6f\x77\x73')['\x63\x6c\x61\x73\x73\x4e\x61\x6d\x65'] = _0x3305('0x112'); 
          document[_0x3305('0x3c')](_0x3305('0x113'))[_0x3305('0x5e')] = '\x65\x72\x72\x6f\x72'; 
          document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64'](_0x3305('0x113'))[_0x3305('0x5d')] = langText[_0x3305('0x16e')]; 
          AddTextClose(); 
          return !![]; 
        } 
        _0x356638 += itemsData[_0x4cc71c[0x0]]['\x70']; 
        _0x23d191[_0x3305('0x6e')](_0x52d517['\x69\x64']); 
        _0x501b81 = _0x52d517['\x62\x6f\x74']; 
      } else { 
        _0x12dc77 += casePrices[_0x4cc71c[0x1]][0x0]; 
        _0x199888[_0x3305('0x6e')](parseInt(_0x4cc71c[0x1])); 
      } 
    } 
  } 
  var _0x5a9477 = _0x4f48f - _0x356638; 
  var _0x2259da = parseInt(document[_0x3305('0x3c')](_0x3305('0x4c'))[_0x3305('0x4d')]['\x70']); 
  if (myBalance + _0x5a9477 - _0x12dc77 === _0x2259da && myBalance >= _0x12dc77 && myBalance + _0x5a9477 >= 0x0 && (_0x267929[_0x3305('0xc')] > 0x0 || _0x23d191[_0x3305('0xc')] > 0x0 || _0x199888['\x6c\x65\x6e\x67\x74\x68'] > 0x0)) { 
    let _0x40d400 = _0x9bbedd + _0x501b81 + _0x5a9477[_0x3305('0x9e')](0x0); 
    var _0x55762b = { 
      '\x6d\x79': _0x267929, 
      '\x62\x6f\x74': _0x23d191, 
      '\x63\x61\x73\x65': _0x199888, 
      '\x62\x6f\x74\x69\x64': _0x501b81, 
      '\x6c\x65\x66\x74': _0x5a9477, 
      '\x63\x73\x72\x66': _0x40d400 
    }; 
    _0x55762b[_0x3305('0x16f')] = _0x40d400[_0x3305('0xb')](); 
    socket[_0x3305('0xe7')](JSON[_0x3305('0x6d')]({ 
      '\x63': _0x3305('0x170'), 
      '\x64': _0x55762b 
    })); 
    document[_0x3305('0x3c')](_0x3305('0x116'))[_0x3305('0x46')][_0x3305('0x119')] = _0x3305('0x171'); 
  } else if (_0x12dc77 > 0x0 && myBalance < _0x12dc77) { 
    document[_0x3305('0x3c')](_0x3305('0x111'))['\x63\x6c\x61\x73\x73\x4e\x61\x6d\x65'] = _0x3305('0x112'); 
    document[_0x3305('0x3c')](_0x3305('0x113'))[_0x3305('0x5e')] = _0x3305('0x9'); 
    document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64'](_0x3305('0x113'))[_0x3305('0x5d')] = langText[_0x3305('0x172')]; 
    AddTextClose(); 
  } else { 
    document[_0x3305('0x3c')](_0x3305('0x111'))[_0x3305('0x5e')] = _0x3305('0x112'); 
    document[_0x3305('0x3c')](_0x3305('0x113'))[_0x3305('0x5e')] = _0x3305('0x9'); 
    document[_0x3305('0x3c')](_0x3305('0x113'))[_0x3305('0x5d')] = langText[_0x3305('0x16e')]; 
    AddTextClose(); 
  } 
}

Он частично уже деобфусцирован через плагин к фаерфоксу "Deobfuscator". Как дальше его можно деобфусцировать, в какую строну копать?

P.S. Это только часть кода, полный и необфусцированый код можно посмотреть тут

READ ALSO
Scrollissimo нужна помощь с анимацией скролла

Scrollissimo нужна помощь с анимацией скролла

Добрый день, хотелось бы узнать, кто-то пользовался такой библиотекой как Scrollissimo ? Мне нужно сделать анимацию похожую на https://promogithub

229
Как в Electron передавать данные между main-process и renderer-process

Как в Electron передавать данные между main-process и renderer-process

Как в Electron передавать данные между main-process и renderer-process?

228
Функция срабатывает на else всегда

Функция срабатывает на else всегда

Вообщем есть небольшая функция

236