Простой, но мощный деобфускатор для удаления распространенных методов обфускации JavaScript. Откройте проблему, если есть функция, которую, по вашему мнению, следует реализовать.
Онлайн-версия на deobfuscate.io.
Установить через npm install js-deobfuscator
Ищете деобфускатор, специфичный для Obfuscator.io/javascript-obfuscator? Попробуйте это репо
Если вы хотите обсудить/узнать об обфускации и деобфускации JavaScript, вы можете присоединиться к серверу Discord.
Распаковывает массивы, содержащие литералы (строки, числа и т. д.), и заменяет все ссылки на них.
Удаляет простые прокси-функции (вызовы другой функции), прокси-функции массива и арифметические прокси-функции (двоичные выражения).
Упрощает арифметические выражения
Упрощает конкатенацию строк
Переименовывает нечитаемые шестнадцатеричные идентификаторы (например, _0xca830a).
Преобразует вычисленные выражения в статические члены и украшает код.
См. внизу более сложный пример с объединенными вместе функциями.
До
const a = ['x20', 'x57x6fx72x6cx64', 'x48x65x6cx6cx6f'];console.log(a[2] + a[0] + а[1]);
После
console.log('Привет' + ' ' + 'Мир');
До
функция a(b, c) { return someFunction(b, c);}const result = a(5, 6);
После
константный результат = someFunction(5, 6);
До
функция a(b, c) { return c + 2 * b;}const result = a(5, 6);
После
константный результат = 6 + 2 * 5;
До
function a(b, c) { return c + 2 * b;}function b(c, d) { return a(c, d);}function c(d, e) { return b(d, e);} константный результат = с(5, 6);
После
константный результат = 6 + 2 * 5;
До
let total = 0x2 * 0x109e + -0xc * -0x16a + -0x3234;for (let i = 0x1196 + 0x97b * 0x3 + -0x2e07; i < -0x95 * -0x38 + -0x1a75 + -0x619; i++) { total += я;}
После
let total = 0;for (let i = 0; i < 10; i++) { total += i;}
До
console.log('He' + 'll' + 'o' + ' Wo' + 'r' + 'ld');
После
console.log('Привет, мир');
Все эти функции можно объединить для упрощения кода.
До
const ar = [ 'x48x65x6cx6cx6f', 0x95, 'x20', 0x1a75, 'x57x6fx72x6cx64', -0x53, 'x6cx6fx67' ];const a = function (b, c) { return c + 2 * b; }, b = функция (c, d) { return a(c, d); }, c = функция (d, e) { return b(d, e); };const message = ar[0] + ar[2] + ar[4];const result = c(ar[1] * 0x38 + ar[3] + 0x619, 0x12 * ar[5] + 0x1a13 + 0x621) ;console[ar[6]](сообщение + ' ' + результат);
После
const message = 'Hello World';const result = 40106;console.log(message + ' ' + result);
интерфейс Config {массивы: { unpackArrays: boolean; RemoveArrays: логическое значение; }; proxyFunctions: { replaceProxyFunctions: логическое значение; RemoveProxyFunctions: логическое значение; }; выражения: { simpleExpressions: boolean; RemoveDeadBranches: логическое значение; }; разное: { украсить: логическое значение; УпроститьСвойства: логическое значение; renameHexIdentifiers: логическое значение; };}
Либо установите модуль локально через npm install js-deobfuscator
и импортируйте как обычно, либо установите глобально npm install -g js-deobfuscator
и используйте интерфейс командной строки js-deobfuscator
:
> js-деобфускатор -h Использование: запустить [опции] Деобфусцировать файл javascript Параметры: -i, --input [input_file] Входной файл для деобфускации (по умолчанию: «input/source.js») -o, --output [output_file] Деобфусцированный выходной файл (по умолчанию: «output/output.js») -f, --force Перезаписывать выходной файл или нет -h, --help вывести справку по команде>
Альтернативно используйте онлайн-версию на deobfuscate.io.