Обфускаторы/деобфускаторы

Статус
В этой теме нельзя размещать новые ответы.

NikroVir

Извращённый отшельник
Регистрация
27 Апр 2008
Сообщения
346
Реакции
117
Доброго времени суток, жители нулледа. думаю данная тема будет полезна новичкам. Неоднократно сталкивался с необходимостью защиты кода путём обфускации, а также снятием таковой. И если с обфускаторами дела не плохи, то с деобфускаторами возникают некоторые проблемы (в частности большое количество ошибок).
Предлогаю прошареным в этом плане людям поделиться толковыми обфускаторами а так же "универсальными" (под максимально большое количество упаковщиков) деобфускаторами выпрямляющими код на столько, на сколько это возможно.
 
Чувствую самому придётся отвечать =)

Защита PHP-скриптов от анализа и модификации

Все программные продукты для защиты PHP-скриптов подразделяются на две категории: требующие установки на сервер дополнительных модулей и работающие с обычной конфигурацией web-серверов. Первые более надежны в плане безопасности, так как переводят PHP-скрипты из текстового вида в специальный двоичный-код, но требуют доступа к серверу с правами администратора. Вторые могут работать практически на всех хостингах с поддержкой PHP, в том числе и бесплатных, но не представляют большой сложности для взлома. В отдельную подгруппу можно выделить обфускаторы исходного кода, не использующие шифрование или сжатие.



Защиты на уровне сервера:

Для просмотра ссылки Войди или Зарегистрируйся - наиболее популярная коммерческая защита, модули для поддержки Zend обычно установлены на всех платных хостингах. Zend предоставляет привязку скриптов к доменам и ip, установку времени триальной работы скриптов и мощную обфускацию. Поддерживаются все операционные системы. В публичном доступе имеется несколько вариантов утилит для снятия Zend'а, все они представляют собой модифицированный PHP 4-й и 5-й версии. Старые версии Zend'а снимаются без проблем, в последних возникают сложности из-за обфускации исходного кода.

Для просмотра ссылки Войди или Зарегистрируйся. Новая, активно развивающаяся коммерческая защита. На уровне собственных API предоставляет взаимодействие с защищаемыми скриптами, поддерживаются операционные системы Windows и Linux. Вследствие малой распространенности не устанавливается на обычных виртуальных хостингах, но вполне может быть установлена пользователями на выделенных серверах. Публичных декодеров нет.

Для просмотра ссылки Войди или Зарегистрируйся. Коммерческая защита, практически не встречается, на вирутальных хостингах не устанавливается. Позволяет устаналивать триальный срок работы скриптов с проверкой даты по внешним серверам точного времени, делать привязку защищаемых скриптов к серверам, ip-адресу, MAC-адресу сетевой карты, причем эти данные используются для расшифровки. Поддерживаются все операционные системы. Публичных декодеров нет.

Для просмотра ссылки Войди или Зарегистрируйся. Прототип SourceGuardian for PHP. После слияния двух разработчиков перестал развиваться как самостоятельный продукт. Основной функционал тот же самый, публичных декодеров нет.

Для просмотра ссылки Войди или Зарегистрируйся. Второй по популярности коммерческий продукт для защиты скриптов. После появления публичных декодеров для Zend стал все чаще использоваться и устанавливаться на виртуальных хостингах. Позволяет шифровать не только скрипты, но и шаблоны, xml-документы, изображения, бинарные файлы. Привязывает защищенные файлы к серверам, есть мощный обфускатор, поддерживаются все операционные системы. Публичных декодеров нет, но в некоторых случаях снимается deZender'ом.

Для просмотра ссылки Войди или Зарегистрируйся. Малораспространенная коммерческая система защиты, предоставляет обычный функционал для продуктов такого типа, работает под всеми операционными системами. За отдельную плату можно приобрести исходные коды защиты и модифицировать их под свои нужды. Публичных декодеров нет.

Для просмотра ссылки Войди или Зарегистрируйся. Экзотическая защита под Windows, предназначенная для создания скриптовых презентаций и каталогов на компакт-дисках. В установленном виде представляет собой что-то типа самостоятельного web-сервера, на котором исполняются закодированные php-скрипты. Публичных декодеров нет.

Для просмотра ссылки Войди или Зарегистрируйся. Защита скорее теоретическая, чем практическая. Разрабатывалась на одном из отечественных форумов, но похоже дальше авторских релизов дело не продвинулось. Декодеров нет, впрочем как и защищенных скриптов.

Для просмотра ссылки Войди или Зарегистрируйся. Дополнение с открытым кодом к старинным php-акселераторам Turck MMCache и eAccelerator. Переводит скрипты в байт-код с целью повышения скорости их выполнения. Есть версии модулей под Windows и Linux. Публичных декодеров нет, но возможно открытый код проекта как-то поможет в изучении.

Защиты на уровне исходного кода:

Для просмотра ссылки Войди или Зарегистрируйся. Популярная коммерческая защита, встречается очень часто, в основном на скриптах зарубежных разработчиков. Позволяет устанавливать триальный срок работы скриптов, привязку к доменам и ip-адресам, сжимает скрипты штатными средствами php (gzinflate). Единственная сложность - хороший обфускатор. Различные версии защиты отличаются только модификацией модуля распаковки. Легко снимается как в ручном, так и в автоматическом режиме. Без обфускатора снимается в точности до исходного кода, с обфускатором требует дополнительной обработки.

Для просмотра ссылки Войди или Зарегистрируйся. В свободном доступе нет даже демо-версии, анализ проводился по защищенным скриптам. Навесной модуль сложности в распаковке не представляет, защита держится только на хорошей обфускации исходного кода.

Для просмотра ссылки Войди или Зарегистрируйся. Защита представляет собой он-лайн сервис. На сайт загружается архив с вашими скриптами и обратно скачивается уже защищенный. Платная лицензия позволяет подписывать защищенные скрипты своими данными и использовать для коммерческих целей. Бесплатная лицензия допускает использование только для личных нужд. Сама защита представляет собой защищенный Zend'ом php-модуль, который подключается к защищенным скриптам. После deZend'а модуля защиты и получения из него всех необходимых констант снимается полностью до исходного кода. Функции обфускатора нет.

Для просмотра ссылки Войди или Зарегистрируйся. Коммерческий продукт, в зависимости от типа лицензии позволяет защищать скрипты как на уровне сервера, так и на уровне исходного кода. Серверная защита со стандартными возможностями, ничего особенного нет. Защита на уровне скриптов снимается очень легко автоматически и вручную. Публичного декодера на серверную версию нет.

Для просмотра ссылки Войди или Зарегистрируйся. Очень популярная у отечественных разработчиков защита. Представляет собой сильно замусоренный пустым кодом модуль защиты, который подключается через include к защищенным скриптам. Алгоритм декодирования очень простой, не вызывает никаких сложностей в ручном и автоматическом снятии. Во всех случаях снимается полностью до исходного кода, функции обфускатора нет. Есть небольшие особенности для частных случаев декодирования, но здесь они описаны не будут.

Для просмотра ссылки Войди или Зарегистрируйся. Еще одна популярная защита, отличный пример безграмотного программирования. Представляет собой приложение на php, позволяет кодировать как сами скрипты, так и результат их работы в браузере средствами javascript. Скрипты можно защищать паролем, но из-за бездарной реализации пароль легко узнать даже не снимая навесную защиту. Модуль защиты представляет собой замусоренный пустым кодом php-скрипт, который подключается к защищаемым скриптам. Алгоритм защиты очень простой, снимается полностью до исходного кода. Функции обфускации нет.

Для просмотра ссылки Войди или Зарегистрируйся, с недавнего времени TrueBug PHP Obfuscator & Encoder. Очень интересный протектор для исследования. До версии 1.0.2 использовались стандартные средства php для gzip-компрессии, начиная с версии 1.0.3 авторами был разработан собственный алгоритм сжатия. В новом продукте TrueBug PHP Obfuscator & Encoder добавлена функция обфускации и оптимизации исходного кода. Единственное слабое место защиты - неизменный алгоритм декодирования скриптов, но сам алгоритм меняется для каждой версии защиты. После разбора защиты снимается легко в точности до исходного кода, естественно при условии что не был использован обфускатор.

Для просмотра ссылки Войди или Зарегистрируйся. Защита, как и CodeLock, представляет собой приложение на php, для его работы требуется база MySQL. Модуль защиты - подключаемый скрипт на php, зашифрованный в несколько слоев. После разбора алгоритма снимается очень легко в точности до исходного кода. Функции обфускатора нет.

Для просмотра ссылки Войди или Зарегистрируйся. Бесплатный он-лайн сервис для кодирования php-скриптов. Модуль защиты представляет собой подключаемый php-скрипт, накрытый Zend'ом, который надо скачать с сайта. После снятия Zend'а и разбора алгоритма защита легко снимается полностью до исходного кода. Алгоритм защиты неизменный, функции обфускатора нет.

Для просмотра ссылки Войди или Зарегистрируйся. Скрипт на php, кодирование примитивное, стандартный base64. Большего внимания не заслуживает и практического интереса не представляет.

Для просмотра ссылки Войди или Зарегистрируйся. Бесплатный он-лайновый шифровщик файлов, выполняющий привязку к серверу и ограничение по времени работы скрипта. К зашифрованным скриптам подключается модуль расшифровки, накрытый ionCube. После открытия алгоритма расшифровки легко снимается.

Для просмотра ссылки Войди или Зарегистрируйся. Бесплатный он-лайновый шифровщик файлов, несмотря на слово "obfuscator" в названии, дополнительно сжимает и шифрует скрипты. Внешняя шифровка сложности в снятии не представляет, основная защита держится на обфускации текстовых строк и имен переменных.

Обфускаторы:

Особого интереса в плане изучения не представляют, все работают по одинаковому принципу: замена названий переменных на набор случайных символов, удаление комментариев, переносов строк и пробелов, использованных для форматирования кода. К ним относятся Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся и другие.

В следующий раз затронем тему деобфускаторов.
 
Насчет обусификаторов:
PHP Defender = POBS.
Это тоже самое, только PHP Defender платный, а POBS англоязычный, но думаю труда в переводе не составит:).
Ах да, PHP Defender работает только под Windows, а POBS на любой ОС, при условии, что есть поддержка PHP
 
Затронем тему... Вот скопи-пастить целую статью - это конечно затрагивание темы.
Деобфускаторами какой приличный программист будет заниматься? Зачем?
Гораздо проще и быстрее написать своё, чем неделями корпеть над чужим кодом и на выходе понять, что код полное УГ
 
Затронем тему... Вот скопи-пастить целую статью - это конечно затрагивание темы.
И что, что копипаст, статья ведь хорошая и заслуживает внимания. И если уже на то пошло, то про деобфускаторы статью пишу сам. а вместо того чтобы оффтопить-написали бы что-нибудь полезное.
Деобфускаторами какой приличный программист будет заниматься? Зачем? Гораздо проще и быстрее написать своё, чем неделями корпеть над чужим кодом и на выходе понять, что код полное УГ
каждому своё. иногда полезно посмотреть как что реализовано (у каждого свои причины). в этом людей упрекать незачем. Да и зачем месяцами карпеть над своим, если можно переделать чужое, покарпев над кодом недельку?
 
Озвучьте механизм , а лучше микроскрипт динамического обфускатора без eval - который через preg_replace работает.
А то я пару раз видел готовые, повторить процесс не могу..
типа этого preg_replace(" /.*/e","\x65\x76\x61\x6C\x28\x67\x7A

а.вообщем то уже ненадо , все понятно ))
 
Озвучьте механизм , а лучше микроскрипт динамического обфускатора без eval - который через preg_replace работает. А то я пару раз видел готовые, повторить процесс не могу.. типа этого preg_replace(" /.*/e","\x65\x76\x61\x6C\x28\x67\x7A а.вообщем то уже ненадо , все понятно ))
А мне, пожалуй, озвучьте...
 
  • Заблокирован
  • #8
А мне, пожалуй, озвучьте...
Входные данные в in.txt
PHP:
  <?php 
$header = '<?php preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28\''; 
$footer = '\'\x29\x29\x29\x3B",".");?>'; 
$content = php_strip_whitespace('in.txt'); 
$content = trim(preg_replace('/<\?(php)?/', '', $content)); 
echo $header . base64_encode(gzdeflate($content, 9)) . $footer;
?>
 
вот вариант хороший
PHP:
PHP код:
function encrypt($text, $key) {
    $text = gzdeflate($text);
    $len = strlen($text);
   
    $key = md5($key) . substr(md5(strrev($key)), 0, strlen($key));
 
    for ($i = 0; $i < $len; $i++) {
        $key .= $text[$i];
        $text[$i] = chr((ord($text[$i]) + ord($key[$i])) % 256);
    }
   
    return $text;
}
 
function decrypt($text, $key) {
    $len = strlen($text);
   
    $key = md5($key) . substr(md5(strrev($key)), 0, strlen($key));
 
    for ($i = 0; $i < $len; $i++) {
        $text[$i] = chr((ord($text[$i]) - ord($key[$i])) % 256);
        $key .= $text[$i];
    }
   
    return gzinflate($text);
}

файлы выгядит как
Код:
<?php $____='@Я@ґfкNВ¦ёТ†Ў… куча бинарного кода.... переменные?>
Это для шеллов в основном.
 
Скажите пожалуйста, переменная $key на входе функций что должна содержать?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху