Расшифровка и деобфускация PHP-скриптов

Тема декодирования зашифрованных PHP-скриптов уже однажды мной затрагивалась в посте PHP и зашифрованный код. В нем я описал способ получения значений всех инициализированных переменных и списка объявленных функций в скрипте, зашифрованным протектором ionCube. Тогда, в 2009 году, расшифровать скрипт под ionCube было проблематично – на тот момент существовали лишь платные сервисы. Однако с ростом популярности ionCube стало ясно, что рано или поздно его постигнет участь Zend Encoder (сейчас Zend Guard), павшего в 2008 году перед ставшими повсеместно доступными “дезендерами”. Действительно, за последнее время появилось множество декодеров ionCube, можно даже найти бесплатные онлайн-сервисы. Один из них позволяет расшифровать практически любые скрипты. О нем, а также о других способах расшифровки расскажу в данной статье.

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

  1. Защита посредством кодирования скриптов в байт-код, требующая дополнительных PHP-расширений для работы с ними. Это самый сложный тип защиты, примеры: Zend Guard, ionCube, Nu-Coder.
  2. Защита, основанная на шифровании непосредственно исходного кода скрипта путем использования особого алгоритма. Примеры: PHP Cipher, Truebug PHP Encoder, SourceCop PHP Protector.
  3. Обфускация – изменение названий переменных и функций, удаление пробелов и символов переноса строки, etc. Относительно самый просто тип, примеры: PHP Defender, Obfusc.

Итак, имея скрипт, зашифрованный неизвестным для вас алгоритмом, прежде всего необходимо определить с помощью чего он зашифрован. В этом может помочь отличный инструмент PCL’s PHPiD. Распознает множество протекторов, например тот же ionCube:

Определив протектор, можно поискать существующие решения для расшифровки того или иного энкодера. Но в большинстве случаев поможет сервис dezend.me.

Он открылся совсем недавно, но уже сейчас имеет большой функционал: расшифровка серверных средств защиты ionCube 6.5, Zend, Nu-Coder, а также декодирование и деобфускация любых скриптов, зашифрованных без использования дополнительных расширений PHP. К сожалению, результаты расшифровки ionCube оставляют желать лучшего, в некоторых участках кода тестового скрипта пришлось исправлять вручную. А вот универсальный декодер справляется заметно лучше, правда не хватает нормального форматирования кода. В целом, сервис оставил положительные впечатления, надеюсь, не закроется 🙂

Что делать если сервис не помог (например, скрипт закодирован свежим ionCube)? Можно попробовать воспользоваться инструментами, которые выкладывают на сайте deioncube.in. На местном форуме также можно попросить расшифровать скрипт, в большинстве случаев вам помогут безвозмездно.

Если же вы имеете дело со вторым или третьим типом защиты и вам хочется попробовать расшифровать неизвестный алгоритм самому, воспользуйтесь PHP-расширением evalhook от Стефана Эссера. С его помощью можно удобно просматривать строки, которые зашифрованный PHP-скрипт пытается выполнить, используя eval(), assert() и другие функции выполнения кода. Подробная статья о его использовании доступна на сайте php-security.org.


Posted

in

by

Comments

13 responses to “Расшифровка и деобфускация PHP-скриптов”

  1.  Avatar
    Anonymous

    Огромное спасибо за статью!

  2. Трафик Avatar
    Трафик

    Спасибо за просвещение!!! Респект!!!

  3. Sam Avatar
    Sam

    IonCube 7.0 не расшифровывает =((

  4. dima Avatar
    dima

    не подскажешь, вот такой код чем расшифровывать?

    $x0b=”array\137\x73\150if\164″; $x0c=”\141\162\162\x61\x79\x5f\160\x6f\160″;

    Сейчас dezend.me не доступен 🙁

  5. Raz0r Avatar

    По этому куску кода ничего не могу сказать. Сервис пока не работает, но можно воспользоваться iDezender’ом (http://qarizmatic.com/release/file.php?id=8), сервис его как раз и использует.

  6. dima Avatar
    dima

    спасибо, помог, только в коде ошибка вылезла, исправить пока не могу. теперь буду иметь хоть инструмент, а то ничего не находил.

  7. Олег Avatar
    Олег

    http://dezend.me/
    там нет сейчас полей для ввода как на картинке

  8. MaZaFaKa Avatar
    MaZaFaKa

    Открой html http://dezend.me/ и убери и поля появяться.

  9. MaZaFaKa Avatar
    MaZaFaKa

    Всмысле убери комментировать хтмл (сайт побил текст)

  10. flax Avatar

    http://dezend.me/dezender/
    ionCube 7 кто нибудь встречал? Готов выложить небольшую сумму за рабочий софт.

  11. vasya Avatar
    vasya

    как определить каким ionCube пользовались?

  12. сергей Avatar
    сергей

    Народ помоги рашифровать zend guard

  13. lesh Avatar
    lesh

    Какие сейчас есть возможности?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.