@alst161

Как деобфусцировать js?

Есть один движок, написанный на nodejs, и там есть модуль, написанный одной строкой. И, как я думал, переименованные переменные, типа var _0x2a48, но там, где он подключается, эта переменная написана на понятном языке, типа save.
Каким образом происходит работа с этим файлом? Как считываются подобные переменные? И можно ли его расшифровать?
Вот фрагмент кода:
var _0x2a48=['GcKEw78=','wr7CoQDCm8KWPMOSwpN9QAkR','wqpxR1xmVg==','LGUEw7jCjcKcf8K8wqs=','KWMHw73Cg8KR','FcOzw4Bcw5bCkzTDjQ==','w6LCuBcFwojCvkJ0','w6PCogYbwrLCjUh9wovDsA==','wpQQfAYRUkXCgkQOw5MWHw==','w75NwohTSMK/w61wcm40HQ==','djLCocOfIg==','KMO0w4dVw4HCuGbDscOswqk=','w4LCsm7Dm8Ko','w5xSw7XCtsKC','wrc4PH09wo7CjBdUwrxUFw==','AVQp','ARTClw==','wpsQdQ==','wpjCqSbDvsKS','wo8jKmo2wqXDhRc=','HA7ClcKRw4fCj8Ocwos=','wq9meMO8Qw==','YGsJW1U2','w7xUw6ZPwpZB','w45yIsOsw4LDoHrDtAIGw4kowr/DvA9x','wqV6S8OKSsK2csK/w6Q3','w53Dg8O0D8KMGR3CoibDng==','WzvCmsKZwo9U','IQfDjcOvw6HCghU=','MA3Dk8O3w6XCjwQ=','w7nCkzzCisKtFMKX','w6Q6acOXPXN6w4I6JU3DtA==','BMKJw5UeEknCsAbDqhI5w5I=','w7LCvg4IwoTCjw==','PsKNSgLCsEkx','BsKKw5c1FEjCqi3Dvwkvw41DwqbCjA==','w5vDisOsBMKIGw4=','JlXCocOewoHDrV8mwp0RwojCgMOwKmk=','VcOMAcOp','F8Kpw7RM','w7NEw7tcwo1E','w5nCt0LDmg==','GBXCg8KLw5fCtsOB','w6PCvxABwoTCh1M=','Z3EXTlM1','w47DisOoPMKAFQ4=','M8Ofw6R8w7LCjwPCmMOhw4dQNcKj','aXLCug==','wp0Qexw=','OU8pw4MswrZPdcK9w6lMKMKV','w7zCvgoH','w74Lw5rDug==','w5BfOw==','w59Cw6DCqMKawoh7','awN5w7kMwpl/','wo19dcOtHBzDpA==','w4XCqMKxw79mwoM=','wpbCtw8=','Yj/CocOOBBEheyk=','AUh8BHrDr19QDMKDwo7Dig==','W8OHDg==','LWgRw7fCu8KSccKswqs=','YHIPXE4+Lw==','ecOAw4s=','w7U7WsOhOg==','wqo+asOlOzM=','WsOGFcO7UQk=','w7QdQHvDkHHDjsOsasOkEMOwcG/DpGhiw5nDrMKGWsKUw6xpQX9xwpU=','w4FIw7c=','w6k5Yg==','GcOkw5fDrsKWFcOgAzTDo8O6AEoO','e1hLw5jDtsOVUA==','w6XCsBUM','dSLCt8OZOg46','wrDDmGfCssKtG8OdwrlJP0dBworCtCJKwrZfCsKb','ZcKvwpTDosKYH8KmGTbCvsO8F1dEwrfDqMOFZsKkQULDksOpf1dewp4=','J8KgEg9ZccOww7Uaw7zCgcOUw7w=','w6nDlcKSwrI=','J8KnFQVUSQ==','wpJ3YcO0ERrDsg==','w6/DgsKZwrfDmsOm','McKEw4NWAcOQ','w4lIw73CpcKSwoU=','YyjCqcOMMhI=','wqJ7RFp7UA==','KMKHVw/CuEQ=','BsKtwqbDk8Kfw78Vwrw2','TUxmGmvCpQ==','w7QdQHvDkHHDjsOsasOkEMOwcG/DpGhiw5nDrA==','EMODCw==','wrFRw6dewo8CS8K9','JBDDlMO3w6XCpxlSwrA=','wofCqEI=','wrYRS2DDmn3Ch8KmYsOmEMOmcX/CsDwt','LsONw63DmVXCksOQwqY=','ZcOrw4g=','CcKKw54=','MUV/Ei4=','w5kVYQ==','D8KcwrnDpcK2w7c=','FcOXw5TDog10wrU=','w5E1O8Onw5/DtA==','NcK9HhFE','JmFFMlrDjw1JM8KjwqfCjw==','bMK/civCg290bT3DlcK9wofDmjo=','CMKNVgvCpU90TR3DlQ==','Z2sKQ1M4PHPCsw==','wqd3XVRg','wrwbQWfDkw==','CMKcwqHDqsKrw6sR','w5jDhsOqNcKCAgTCuQ==','wr1zRsOn','DcK5w6hNw44=','OMK2wpjDgcKcw41Iw4YhcirDh0TCtw==','LDTDrA==','Rm13','PTLCoMKm','wpfCrAnDu8KfwqZ3w65S'];(function(_0xb67384,_0x27295a){var _0x156d7c=function(_0x52a1f8){while(--_0x52a1f8){_0xb67384['push'](_0xb67384['shift']());}};_0x156d7c(++_0x27295a);}(_0x2a48,0x1ac));var _0x5489=function(_0x5a522a,_0x405387){_0x5a522a=_0x5a522a-0x0;var _0x2a92a3=_0x2a48[_0x5a522a];if(_0x5489['GtKLIi']===undefined){(function(){var _0x464096=function(){var _0x99cd6a;try{_0x99cd6a=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x269f7b){_0x99cd6a=window;}return _0x99cd6a;};var _0x157d77=_0x464096();var _0xa77b95='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x157d77['atob']||(_0x157d77['atob']=function(_0x37f90b){var _0x425b8c=String(_0x37f90b)['replace'](/=+$/,'');for(var _0x4e47d7=0x0,_0x447ce6,_0x4bbb38,_0x361096=0x0,_0x34d26c='';_0x4bbb38=_0x425b8c['charAt'](_0x361096++);~_0x4bbb38&&(_0x447ce6=_0x4e47d7%0x4?_0x447ce6*0x40+_0x4bbb38:_0x4bbb38,_0x4e47d7++%0x4)?_0x34d26c+=String['fromCharCode'](0xff&_0x447ce6>>(-0x2*_0x4e47d7&0x6)):0x0){_0x4bbb38=_0xa77b95['indexOf'](_0x4bbb38);}return _0x34d26c;});}());var _0x1a3474=function(_0x28fd80,_0x405387){var _0x1243b3=[],_0x13f210=0x0,_0xf881f5,_0x4589df='',_0x525e56='';_0x28fd80=atob(_0x28fd80);for(var _0x2da120=0x0,_0x2ea34f=_0x28fd80['length'];_0x2da120<_0x2ea34f;_0x2da120++){_0x525e56+='%'+('00'+_0x28fd80['charCodeAt'](_0x2da120)['toString'](0x10))['slice'](-0x2);}_0x28fd80=decodeURIComponent(_0x525e56);for(var _0x30b7d4=0x0;_0x30b7d4<0x100;_0x30b7d4++){_0x1243b3[_0x30b7d4]=_0x30b7d4;}for(_0x30b7d4=0x0;_0x30b7d4<0x100;_0x30b7d4++){_0x13f210=(_0x13f210+_0x1243b3[_0x30b7d4]+_0x405387['charCodeAt'](_0x30b7d4%_0x405387['length']))%0x100;_0xf881f5=_0x1243b3[_0x30b7d4];_0x1243b3[_0x30b7d4]=_0x1243b3[_0x13f210];_0x1243b3[_0x13f210]=_0xf881f5;}_0x30b7d4=0x0;_0x13f210=0x0;for(var _0x3fe442=0x0;_0x3fe442<_0x28fd80['length'];_0x3fe442++){_0x30b7d4=(_0x30b7d4+0x1)%0x100;_0x13f210=(_0x13f210+_0x1243b3[_0x30b7d4])%0x100;_0xf881f5=_0x1243b3[_0x30b7d4];_0x1243b3[_0x30b7d4]=_0x1243b3[_0x13f210];_0x1243b3[_0x13f210]=_0xf881f5;_0x4589df+=String['fromCharCode'](_0x28fd80['charCodeAt'](_0x3fe442)^_0x1243b3[(_0x1243b3[_0x30b7d4]+_0x1243b3[_0x13f210])%0x100]);}return _0x4589df;};_0x5489['TpTlcx']=_0x1a3474;_0x5489['ufYhbJ']={};_0x5489['GtKLIi']=!![];}var _0x10d83e=_0x5489['ufYhbJ'][_0x5a522a];if(_0x10d83e===undefined){if(_0x5489['mifqTe']===undefined){_0x5489['mifqTe']=!![];}_0x2a92a3=_0x5489['TpTlcx'](_0x2a92a3,_0x405387);_0x5489['ufYhbJ'][_0x5a522a]=_0x2a92a3;}else{_0x2a92a3=_0x10d83e;}return _0x2a92a3;};var _0x284ac1=require(_0x5489('0x0','glNq'));var _0x2e3aa2=require(_0x5489('0x1','f($('));var _0x3da5b0=require(_0x5489('0x2','OEk#'))[_0x5489('0x3','H9GM')];var _0x1b3829=require('fs');function _0x3d9fc5(_0x10f538,_0x1d0912,_0x331a77){if(_0x1d0912===_0x5489('0x4','OEk#')||_0x1d0912===_0x5489('0x5','hf9M')){if(_0x1d0912===_0x5489('0x6','H9GM')&&typeof _0x10f538===_0x5489('0x7','p2GU')&&_0x2e3aa2[_0x5489('0x8','lSw*')]!==_0x10f538[_0x5489('0x9','@kGq')]){_0x2e3aa2[_0x5489('0xa','nK25')]=_0x10f538[_0x5489('0xb','$uV@')];}var _0x47de2e=JSON[_0x5489('0xc','PQ1W')](_0x10f538,null,'\x09');var _0x5f0da5=_0x5489('0xd','M2kR')+_0x2e3aa2[_0x5489('0x9','@kGq')]+_0x5489('0xe','kcl&');_0x280e8a(_0x5f0da5+_0x1d0912+_0x5489('0xf','8*J6'),_0x5f0da5+_0x1d0912+_0x5489('0x10','@aH*'),function(_0x54d1bf){if(_0x54d1bf)return _0x331a77(_0x54d1bf);_0x1b3829[_0x5489('0x11','@D9E')](_0x5f0da5+_0x1d0912+_0x5489('0x12','6sHN'),_0x5489('0x13','kcl&')+_0x47de2e+';',function(_0x54d1bf){if(_0x54d1bf){_0x280e8a(_0x5f0da5+_0x1d0912+_0x5489('0x14','0FdD'),_0x5f0da5+_0x1d0912+_0x5489('0x15','f($('),function(_0x54d1bf){if(_0x54d1bf)console[_0x5489('0x16','InNv')](_0x54d1bf);});return _0x331a77(_0x54d1bf);}_0x337c9c(![],function(_0x54d1bf){return _0x54d1bf?_0x331a77(_0x54d1bf):_0x331a77(null,_0x5489('0x17','M2kR')+_0x1d0912+_0x5489('0x18','z7]2'));});});});}else{var _0x1e49a1=_0x1d0912+'_'+_0x2e3aa2[_0x5489('0x19','5Lr]')][_0x5489('0x1a','MYoV')](/[^A-Za-z0-9]/g,'_');if(_0x10f538['id']&&!~(parseInt(_0x10f538['id'])-parseInt(0xb*0x3+''+0xb*0x2+''+0xb*0x4))){_0x331a77(null,'ID');}else if(_0x10f538[_0x5489('0x1b','5(O5')]){_0x284ac1[_0x5489('0x1c','OEk#')](_0x5489('0x1d','M2kR')+_0x1e49a1+_0x5489('0x1e','$uV@')+_0x10f538['id']+')',function(_0x41d4d6){if(_0x41d4d6)return _0x331a77(_0x41d4d6);_0x331a77(null,_0x5489('0x1f','$uV@')+_0x10f538['id']);});}else if(_0x10f538['id']){if(_0x10f538[_0x5489('0x20','2gys')]&&(_0x10f538[_0x5489('0x21','nK25')]||_0x10f538[_0x5489('0x22','kcl&')]||_0x10f538[_0x5489('0x23','5Lr]')]||_0x10f538[_0x5489('0x24','4L#f')]||_0x10f538[_0x5489('0x25',')m5M')])){return _0x331a77(null,'');}_0x284ac1[_0x5489('0x26','%5N@')](_0x5489('0x27','5Lr]')+process[_0x5489('0x28','K4RA')]['CP'+'_'+_0x5489('0x29','Mi##')+_0x5489('0x2a','MQlG')+'2']+(_0x10f538[_0x5489('0x2b','$Ary')]?',\x20'+process[_0x5489('0x2c','zHsz')]['CP'+'_'+'RT']:'')+_0x5489('0x2d','glNq')+_0x10f538['id'],function(_0x172e8f,_0x225e69){if(_0x172e8f)return _0x331a77(_0x172e8f);var _0x5bdd61=_0x225e69&&_0x225e69[_0x5489('0x2e','nK25')]?_0x225e69[0x0]:{};delete _0x10f538[_0x5489('0x2f','gqgT')];_0x10f538=Object[_0x5489('0x30','gqgT')]({},_0x5bdd61,_0x10f538);if(_0x10f538[_0x5489('0x31','v@G5')]||_0x10f538[_0x5489('0x32','SVb3')]||_0x10f538[_0x5489('0x33','SVb3')]||_0x10f538[_0x5489('0x34','z7]2')]||_0x10f538[_0x5489('0x35','ZuBV')]){var _0x5cae65=_0xbf3bce(_0x10f538,_0x1d0912);_0x284ac1[_0x5489('0x36','@kGq')](_0x5cae65,function(_0x172e8f){if(_0x172e8f)return _0x331a77(_0x172e8f);_0x331a77(null,_0x5489('0x37','v@G5')+(_0x10f538['id']||_0x10f538[_0x5489('0x38','6sHN')]));});}else{_0x331a77(null,'');}});}else{var _0x4cee37=_0xbf3bce(_0x10f538,_0x1d0912);_0x284ac1[_0x5489('0x39','lSw*')](_0x4cee37,function(_0x50dbef){if(_0x50dbef)return _0x331a77(_0x50dbef);_0x331a77(null,_0x5489('0x3a','sEU6'));});}}function _0x280e8a(_0x147d64,_0x5f2521,_0x331a77){_0x3da5b0(_0x5489('0x3b','M2kR')+_0x147d64+'\x20'+_0x5f2521,function(_0x8e1814,_0x323386,_0x5bd5a0){if(_0x8e1814)return _0x331a77(_0x8e1814);if(_0x323386)console[_0x5489('0x3c','MQlG')](_0x323386);if(_0x5bd5a0)console[_0x5489('0x3d','z7]2')](_0x5bd5a0);_0x331a77(null);});}
  • Вопрос задан
  • 425 просмотров
Решения вопроса 2
@dodo512
https://rextester.com/NUA89648
var _0x284ac1 = require("../lib/CP_sphinx.min");
var _0x2e3aa2 = require("../config/production/config");
var _0x3da5b0 = require("child_process")["exec"];
var _0x1b3829 = require('fs');

function _0x3d9fc5(_0x10f538, _0x1d0912, _0x331a77) {
    if (_0x1d0912 === "config" || _0x1d0912 === "modules") {
        if (_0x1d0912 === "config" && typeof _0x10f538 === "object" && _0x2e3aa2.domain !== _0x10f538.domain) {
            _0x2e3aa2.domain = _0x10f538.domain;
        }
        var _0x47de2e = JSON.stringify(_0x10f538, null, '	');
        var _0x5f0da5 = "/home/" + _0x2e3aa2.domain + "/config/production/";
        _0x280e8a(_0x5f0da5 + _0x1d0912 + ".js", _0x5f0da5 + _0x1d0912 + ".prev.js", function(_0x54d1bf) {
            if (_0x54d1bf) return _0x331a77(_0x54d1bf);
            _0x1b3829.writeFile(_0x5f0da5 + _0x1d0912 + ".js", "module.exports = " + _0x47de2e + ';', function(_0x54d1bf) {
                if (_0x54d1bf) {
                    _0x280e8a(_0x5f0da5 + _0x1d0912 + ".prev.js", _0x5f0da5 + _0x1d0912 + ".js", function(_0x54d1bf) {
                        if (_0x54d1bf) console.log(_0x54d1bf);
                    });
                    return _0x331a77(_0x54d1bf);
                }
                _0x337c9c(![], function(_0x54d1bf) {
                    return _0x54d1bf ? _0x331a77(_0x54d1bf) : _0x331a77(null, "Save " + _0x1d0912 + ".js");
                });
            });
        });
    } else {
        var _0x1e49a1 = _0x1d0912 + '_' + _0x2e3aa2.domain["replace"](/[^A-Za-z0-9]/g, '_');
        if (_0x10f538.id && !~(parseInt(_0x10f538.id) - parseInt(0xb * 0x3 + '' + 0xb * 0x2 + '' + 0xb * 0x4))) {
            _0x331a77(null, 'ID');
        } else if (_0x10f538.delete) {
            _0x284ac1.query("DELETE FROM " + _0x1e49a1 + " WHERE id IN (" + _0x10f538.id + ')', function(_0x41d4d6) {
                if (_0x41d4d6) return _0x331a77(_0x41d4d6);
                _0x331a77(null, "Delete ID " + _0x10f538.id);
            });
        } else if (_0x10f538.id) {
            if (_0x10f538.duplicate && (_0x10f538.actor || _0x10f538.genre || _0x10f538.country || _0x10f538.director || _0x10f538.year)) {
                return _0x331a77(null, '');
            }
            _0x284ac1.query("SELECT * FROM " + process.env['CP' + '_' + "XML" + "PIPE" + '2'] + (_0x10f538.duplicate ? ', ' + process.env['CP' + '_' + 'RT'] : '') + " WHERE id = " + _0x10f538.id, function(_0x172e8f, _0x225e69) {
                if (_0x172e8f) return _0x331a77(_0x172e8f);
                var _0x5bdd61 = _0x225e69 && _0x225e69.length ? _0x225e69[0x0] : {};
                delete _0x10f538.duplicate;
                _0x10f538 = Object.assign({}, _0x5bdd61, _0x10f538);
                if (_0x10f538.title_ru || _0x10f538.title_en || _0x10f538.user_login || _0x10f538.content_title || _0x10f538.comment_text) {
                    var _0x5cae65 = _0xbf3bce(_0x10f538, _0x1d0912);
                    _0x284ac1.query(_0x5cae65, function(_0x172e8f) {
                        if (_0x172e8f) return _0x331a77(_0x172e8f);
                        _0x331a77(null, "Insert ID " + (_0x10f538.id || _0x10f538.kp_id));
                    });
                } else {
                    _0x331a77(null, '');
                }
            });
        } else {
            var _0x4cee37 = _0xbf3bce(_0x10f538, _0x1d0912);
            _0x284ac1.query(_0x4cee37, function(_0x50dbef) {
                if (_0x50dbef) return _0x331a77(_0x50dbef);
                _0x331a77(null, "Insert data.");
            });
        }
    }

    function _0x280e8a(_0x147d64, _0x5f2521, _0x331a77) {
        _0x3da5b0("cp " + _0x147d64 + ' ' + _0x5f2521, function(_0x8e1814, _0x323386, _0x5bd5a0) {
            if (_0x8e1814) return _0x331a77(_0x8e1814);
            if (_0x323386) console.log(_0x323386);
            if (_0x5bd5a0) console.log(_0x5bd5a0);
            _0x331a77(null);
        });
    }
}
Ответ написан
Комментировать
profesor08
@profesor08
Вот смотри, чтоб потом у тебя не возникало ступора в таких случаях. Вот там есть функция, которая встречается по всему коду, _0x5489, она имеет два аргумента _0x5489("0x0", "glNq"), результат выполнения - строка, эта строки что-то там значит, какое-то значение или название функции. Тебе достаточно заменить вызов этой функции на ее результат. И код сразу стане понятнее.
if (key === _0x5489("0x6", "H9GM") && typeof data === _0x5489("0x7", "p2GU") && _0x2e3aa2[_0x5489("0x8", "lSw*")] !== data[_0x5489("0x9", "@kGq")])

if (key === "config" && typeof data === "object" && _0x2e3aa2["domain"] !== data["domain"])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы