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

Тема в разделе "Защита и взлом", создана пользователем NikroVir, 14 янв 2012.

  1. NikroVir

    NikroVir Извращённый отшельник

    Регистр.:
    27 апр 2008
    Сообщения:
    325
    Симпатии:
    108
    Доброго времени суток, жители нулледа. думаю данная тема будет полезна новичкам. Неоднократно сталкивался с необходимостью защиты кода путём обфускации, а также снятием таковой. И если с обфускаторами дела не плохи, то с деобфускаторами возникают некоторые проблемы (в частности большое количество ошибок).
    Предлогаю прошареным в этом плане людям поделиться толковыми обфускаторами а так же "универсальными" (под максимально большое количество упаковщиков) деобфускаторами выпрямляющими код на столько, на сколько это возможно.
     
    Dimanf и Красавчег нравится это.
  2. NikroVir

    NikroVir Извращённый отшельник

    Регистр.:
    27 апр 2008
    Сообщения:
    325
    Симпатии:
    108
    Чувствую самому придётся отвечать =)

    Защита 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" в названии, дополнительно сжимает и шифрует скрипты. Внешняя шифровка сложности в снятии не представляет, основная защита держится на обфускации текстовых строк и имен переменных.

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

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

    В следующий раз затронем тему деобфускаторов.
     
    autocab, Chvalov, dmx и 7 другим нравится это.
  3. Dark_Coder

    Dark_Coder Писатель

    Регистр.:
    27 янв 2012
    Сообщения:
    1
    Симпатии:
    0
    Насчет обусификаторов:
    PHP Defender = POBS.
    Это тоже самое, только PHP Defender платный, а POBS англоязычный, но думаю труда в переводе не составит:).
    Ах да, PHP Defender работает только под Windows, а POBS на любой ОС, при условии, что есть поддержка PHP
     
  4. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.756
    Симпатии:
    5.757
    Затронем тему... Вот скопи-пастить целую статью - это конечно затрагивание темы.
    Деобфускаторами какой приличный программист будет заниматься? Зачем?
    Гораздо проще и быстрее написать своё, чем неделями корпеть над чужим кодом и на выходе понять, что код полное УГ
     
  5. NikroVir

    NikroVir Извращённый отшельник

    Регистр.:
    27 апр 2008
    Сообщения:
    325
    Симпатии:
    108
    И что, что копипаст, статья ведь хорошая и заслуживает внимания. И если уже на то пошло, то про деобфускаторы статью пишу сам. а вместо того чтобы оффтопить-написали бы что-нибудь полезное.
    каждому своё. иногда полезно посмотреть как что реализовано (у каждого свои причины). в этом людей упрекать незачем. Да и зачем месяцами карпеть над своим, если можно переделать чужое, покарпев над кодом недельку?
     
  6. Neow15ard

    Neow15ard

    Регистр.:
    27 ноя 2008
    Сообщения:
    422
    Симпатии:
    188
    Озвучьте механизм , а лучше микроскрипт динамического обфускатора без eval - который через preg_replace работает.
    А то я пару раз видел готовые, повторить процесс не могу..
    типа этого preg_replace(" /.*/e","\x65\x76\x61\x6C\x28\x67\x7A

    а.вообщем то уже ненадо , все понятно ))
     
  7. smalllamer

    smalllamer Организм

    Регистр.:
    20 сен 2009
    Сообщения:
    317
    Симпатии:
    124
    А мне, пожалуй, озвучьте...
     
  8. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    Входные данные в 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($content9)) . $footer;
    ?>
     
    smalllamer нравится это.
  9. Neow15ard

    Neow15ard

    Регистр.:
    27 ноя 2008
    Сообщения:
    422
    Симпатии:
    188
    вот вариант хороший
    PHP:
    PHP код:
    function 
    encrypt($text$key) {
        
    $text gzdeflate($text);
        
    $len strlen($text);
       
        
    $key md5($key) . substr(md5(strrev($key)), 0strlen($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)), 0strlen($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В¦ёТ†Ў… куча бинарного кода.... переменные?>
    Это для шеллов в основном.
     
  10. Lionline

    Lionline Создатель

    Регистр.:
    29 апр 2012
    Сообщения:
    27
    Симпатии:
    2
    Скажите пожалуйста, переменная $key на входе функций что должна содержать?