|
||
|
#1
|
|
Вес репутации:
0
Регистрация: 27.02.2009
Адрес: Москва
Сообщений: 7,248
Сказал(а) спасибо: 574
Спасибок 2,673
в 1,898 сообщениях |
Распаковка и расшифровка js файлов -
05.11.2010, 16:17
В статье будут рассмотрены основные принципы шифровки и упаковки, слабые места защит, способы ручного снятия, а также универсальные инструменты для автоматического снятия упаковщиков и навесной защиты со скриптов JavaScript.
Скрытый текстВ последнее время все чаще исходный код скриптов шифруется или пакуется. Этим начали увлекаться Яндекс, DLE и другие популярные проекты, а красивые байки про "заботу о пользователях", "экономию трафика" и прочую чушь выглядят очень смешно. Что ж, если кому-то есть что скрывать, значит наша задача вывести их на чистую воду.
[-] Начнем с теории. Из-за особенностей выполнения JavaScript все шифровщики и упаковщики, несмотря на их разнообразие, имеют всего два варианта алгоритма:
или как вариант: var encrypted='зашифрованные данные'; Второй способ чаще всего используется для защиты исходного html-кода страницы, а также разными троянами для внедрения в страницу вредоносного кода, например скрытого фрейма. Оба алгоритма могут комбинироваться, "навороченность" и запутанность расшифровщика может быть любой, неизменным остается только сам принцип. В обеих случаях получается, что функциям eval() и document.write() передаются полностью расшифрованные данные. Как их перехватить? Попробуйте заменить eval() на alert(), и в открывшемся MessageBox'е вы сразу увидите расшифрованный текст. Некоторые браузеры позволяют копировать текст из MessageBox'ов, но лучше воспользоваться таким вот полуавтоматическим декодером: <html> Для примера возьмем какой-нибудь скрипт с Яндекса, посмотрев исходный код видим что-то нездоровое: eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt( Сразу скажу, что этот скрипт обработан JavaScript Compressor, его легко узнать по сигнатуре - характерному названию фукнции в начале скрипта. Копируем целиком исходный текст скрипта, заменяем первый eval на decoder, вставляем в декодер и сохраняем его как html-страничку. <script type="text/javascript"> Открываем ее в любом браузере и видим, что в textarea сразу появился распакованный скрипт. Радоватся пока рано, в нем убраны все переносы строчек и форматирование кода. Как с этим бороться написано в статье про деобфускацию. Второй пример. Вот html-страничка, накрытая программой HTML Protector. Это страница, демонстрирующая возможности программы, поэтому там задействованы все опции: блокировка выделения и копирования текста, запрет правой кнопки мыши, защита картинок, скрытие строки состояния, шифрование html-кода и т.д. Открываем исходный код, смотрим. В самом верху уже знакомый нам document.write и зашифрованный скрипт. Запускаем его через декодер, получаем функцию расшифровки основного содержимого: hp_ok=true;function hp_d01(s){ ...вырезано... o=ar.join("")+os;document.write(o) Заменяем в функции последний document.write на decoder и вставляем после нее все три оставшихся зашифрованных скрипта: <script type="text/javascript"> Для удобства в статье скрипты приводятся не полностью, вы же должны копировать их целиком. Открываем декодер в браузере и видим защитные скрипты, добавленные программой, и расшифрованный исходный текст страницы. Для удобства можно расшифровывать только третий скрипт, в котором содержится html-код страницы. Вот и вся защита. Как видите, ничего сложного. Аналогично снимаются и другие защиты html-страниц. От ручной расшифровки перейдем к автоматической. Для снятия защит первого типа я немного модифицировал уже известный вам скрипт Beautify Javascript и откомпилировал его в exe-файл. Он без проблем справляется с большинством виденных мной защит и упаковщиков JavaScript. Eval JavaScript Unpacker 1.1 Eval.JavaScript.Unpacker.1.1-PCL.zip (12,073 bytes) Для более сложных случаев придется пускать в ход тяжелую артиллерию. Это бесплатный проект Malzilla, предназначенный для исследования троянов и другого вредоносного кода. Поскольку все программы, предназначенные для защиты авторского права, являются однозначно вредоносными, Malzilla поможет нам в борьбе с ними. Качаем последнюю версию (на сегодняшний день это 1.2.0), распаковываем, запускаем. Открываем вторую вкладку Decoder, в верхнее окно вставляем код зашифрованного скрипта, нажимаем кнопочку Run script. Malzilla за работой В папке eval_temp складываются все результаты выполнения функций eval(), в том числе и промежуточные. Их можно посмотреть, нажав на кнопку Show eval() results, текст откроется в нижнем окне. Его можно скопировать, вставить в верхнее окно и сразу же отформатировать нажатием кнопки Format code. Кроме декодера Malzilla имеет еще множество инструментов и настроек, позволяющих легко снять любую защиту со скриптов JavaScript. Скрипт успешно расшифрован и отформатирован Также можно обратить внимание на еще один бесплатный инструмент для работы с зашифрованными скриптами - FreShow. Функций в нем поменьше, но вполне имеет место быть. С офсайта можно скачать демонстрационный ролик, показывающий пример работы с программой. Как видите, нет ничего сложного в снятии защиты со скриптов JavaScript и с html-страниц. Вы все еще продолжаете защищать свои поганые "аффтарские права"? Тогда мы идем к вам! Источник <!-- Вопросы задаем на форуме, не в ЛС --> |
Опции темы | |
Опции просмотра | |
|
|