Расшифровка и деобфускация 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.


12 comments:

  1. Anonymous, 24. March 2012, 11:40

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

     
  2. Трафик, 6. May 2012, 16:41

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

     
  3. Sam, 25. May 2012, 14:27

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

     
  4. dima, 6. June 2012, 0:53

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

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

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

     
  5. Raz0r, 6. June 2012, 10:40

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

     
  6. dima, 6. June 2012, 14:28

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

     
  7. Олег, 7. November 2012, 8:43

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

     
  8. MaZaFaKa, 9. November 2012, 11:44

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

     
  9. MaZaFaKa, 9. November 2012, 11:44

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

     
  10. flax, 26. December 2012, 14:15

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

     
  11. vasya, 20. January 2013, 22:24

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

     
  12. сергей, 20. October 2013, 20:08

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

     

Write a comment: