- Регистрация
- 9 Май 2015
- Сообщения
- 1,486
- Баллы
- 155
В этой статье я расскажу, как самостоятельно обходить обфускацию JavaScript в тех случаях, когда не помогают даже нестандартные деобфускаторы. Мы рассмотрим метод исследования запутанного кода и напишем свой собственный деобфускатор.
Среди читателей наверняка есть те, кому тема скриптовой обфускации гораздо милее ассемблера и прочего низкоуровневого колдунства. Именно этому вопросу была посвящена, например, моя недавняя статья «» или упоминаемая в ней . Но что делать, если перечисленные в этой статье кастомные деобфускаторы не помогают? В таком случае обфускацию придется обходить самостоятельно, и сейчас я расскажу, как это делается.
Используем автоматические деобфускаторы
Для примера возьмем некое браузерное JavaScript-приложение. Объем его составляет около трех мегабайт, примерно три четверти из которых занимает жестко обфусцированный код, начинающийся так, как показано на следующем скриншоте.
А заканчивается этот код вот так.
Если ты уже успел ознакомиться с , характерные имена идентификаторов (_0x58cd18, _0x2f8935_0x321d33, _0x1e0595) должны были натолкнуть тебя на мысль, что код запутан обфускатором obfuscator.io. Однако попытка деобфускации его при любых настройках не приносит положительного результата: читаемый код в правом окне просто не появляется.
Точно так же не приносят результатов и попытки деобфускации другими упомянутыми в статье инструментами. Например, универсальный деобфускатор выдает совершенно неинформативный результат.
Похоже, надежды на автоматические деобфускаторы мало и нам придется учиться работать руками.