Защита PHP-скриптов от анализа и модификации
Все программные продукты для защиты PHP-скриптов подразделяются на две категории: требующие установки на сервер дополнительных модулей и работающие с обычной конфигурацией web-серверов. Первые более надежны в плане безопасности, так как переводят PHP-скрипты из текстового вида в специальный байт-код, но требуют доступа к серверу с правами администратора. Вторые могут работать практически на всех хостингах с поддержкой PHP, в том числе и бесплатных, но не представляют большой сложности для взлома. В отдельную подгруппу можно выделить обфускаторы исходного кода, не использующие шифрование или сжатие.Защиты на уровне сервера:
Zend Encoder / Zend SafeGuard Suite - наиболее популярная коммерческая защита, модули для поддержки Zend обычно установлены на всех платных хостингах. Zend предоставляет привязку скриптов к доменам и ip, установку времени триальной работы скриптов и мощную обфускацию. Поддерживаются все операционные системы. В публичном доступе имеется несколько вариантов утилит для снятия Zend'а, все они представляют собой модифицированный PHP 4-й и 5-й версии. Старые версии Zend'а снимаются без проблем, в последних возникают сложности из-за обфускации исходного кода.
NuSphere NuCoder. Новая, активно развивающаяся коммерческая защита. На уровне собственных API предоставляет взаимодействие с защищаемыми скриптами, поддерживаются операционные системы Windows и Linux. Вследствие малой распространенности не устанавливается на обычных виртуальных хостингах, но вполне может быть установлена пользователями на выделенных серверах. Публичных декодеров нет.
SourceGuardian for PHP. Коммерческая защита, практически не встречается, на виртуальных хостингах не устанавливается. Позволяет устанавливать триальный срок работы скриптов с проверкой даты по внешним серверам точного времени, делать привязку защищаемых скриптов к серверам, ip-адресу, MAC-адресу сетевой карты, причем эти данные используются для расшифровки. Поддерживаются все операционные системы. Публичных декодеров нет.
phpSHIELD. Прототип SourceGuardian for PHP. После слияния двух разработчиков перестал развиваться как самостоятельный продукт. Основной функционал тот же самый, публичных декодеров нет.
ionCube PHP Encoder. Второй по популярности коммерческий продукт для защиты скриптов. После появления публичных декодеров для Zend стал все чаще использоваться и устанавливаться на виртуальных хостингах. Позволяет шифровать не только скрипты, но и шаблоны, xml-документы, изображения, бинарные файлы. Привязывает защищенные файлы к серверам, есть мощный обфускатор, поддерживаются все операционные системы. Публичных декодеров нет, но в некоторых случаях снимается deZender'ом.
PHTML Encoder. Малораспространенная коммерческая система защиты, предоставляет обычный функционал для продуктов такого типа, работает под всеми операционными системами. За отдельную плату можно приобрести исходные коды защиты и модифицировать их под свои нужды. Публичных декодеров нет.
DWebEncoder. Экзотическая защита под Windows, предназначенная для создания скриптовых презентаций и каталогов на компакт-дисках. В установленном виде представляет собой что-то типа самостоятельного web-сервера, на котором исполняются закодированные php-скрипты. Публичных декодеров нет.
PHP Compact. Защита скорее теоретическая, чем практическая. Разрабатывалась на одном из отечественных форумов, но похоже дальше авторских релизов дело не продвинулось. Декодеров нет, впрочем как и защищенных скриптов.
PHPCoder / eAccelerator. Дополнение с открытым кодом к старинным php-акселераторам Turck MMCache и eAccelerator. Переводит скрипты в байт-код с целью повышения скорости их выполнения. Есть версии модулей под Windows и Linux. Публичных декодеров нет, но возможно открытый код проекта как-то поможет в изучении.
IcePHP. Какой-то фреймворк для PHP, в каких-то случаях использующий байт-кодирование скриптов. Мне попалось всего несколько штук, так что о жизнеспособности и распространенности этого проекта судить не могу.
Защиты на уровне исходного кода:
PHP LockIt!. Популярная коммерческая защита, встречается очень часто, в основном на скриптах зарубежных разработчиков. Позволяет устанавливать триальный срок работы скриптов, привязку к доменам и ip-адресам, сжимает скрипты штатными средствами php (gzinflate). Единственная сложность - хороший обфускатор. Различные версии защиты отличаются только модификацией модуля распаковки. Легко снимается как в ручном, так и в автоматическом режиме. Без обфускатора снимается в точности до исходного кода, с обфускатором требует дополнительной обработки.
CNCrypto. В свободном доступе нет даже демо-версии, анализ проводился по защищенным скриптам. Навесной модуль сложности в распаковке не представляет, защита держится только на хорошей обфускации исходного кода.
PHPCipher. Защита представляет собой он-лайн сервис. На сайт загружается архив с вашими скриптами и обратно скачивается уже защищенный. Платная лицензия позволяет подписывать защищенные скрипты своими данными и использовать для коммерческих целей. Бесплатная лицензия допускает использование только для личных нужд. Сама защита представляет собой защищенный Zend'ом php-модуль, который подключается к защищенным скриптам. После deZend'а модуля защиты и получения из него всех необходимых констант снимается полностью до исходного кода. Функции обфускатора нет.
ByteRun Protector for PHP. Коммерческий продукт, в зависимости от типа лицензии позволяет защищать скрипты как на уровне сервера, так и на уровне исходного кода. Серверная защита со стандартными возможностями, ничего особенного нет. Защита на уровне скриптов снимается очень легко автоматически и вручную. Публичного декодера на серверную версию нет.
SourceCop PHP Protector. Очень популярная у отечественных разработчиков защита. Представляет собой сильно замусоренный пустым кодом модуль защиты, который подключается через include к защищенным скриптам. Алгоритм декодирования очень простой, не вызывает никаких сложностей в ручном и автоматическом снятии. Во всех случаях снимается полностью до исходного кода, функции обфускатора нет. Есть небольшие особенности для частных случаев декодирования, но здесь они описаны не будут.
CodeLock. Еще одна популярная защита, отличный пример безграмотного программирования. Представляет собой приложение на php, позволяет кодировать как сами скрипты, так и результат их работы в браузере средствами javascript. Скрипты можно защищать паролем, но из-за бездарной реализации пароль легко узнать даже не снимая навесную защиту. Модуль защиты представляет собой замусоренный пустым кодом php-скрипт, который подключается к защищаемым скриптам. Алгоритм защиты очень простой, снимается полностью до исходного кода. Функции обфускации нет.
TrueBug PHP Encoder, с недавнего времени TrueBug PHP Obfuscator & Encoder. Очень интересный протектор для исследования. До версии 1.0.2 использовались стандартные средства php для gzip-компрессии, начиная с версии 1.0.3 авторами был разработан собственный алгоритм сжатия. В новом продукте TrueBug PHP Obfuscator & Encoder добавлена функция обфускации и оптимизации исходного кода. Единственное слабое место защиты - неизменный алгоритм декодирования скриптов, но сам алгоритм меняется для каждой версии защиты. После разбора защиты снимается легко в точности до исходного кода, естественно при условии что не был использован обфускатор.
Zorex PHP CryptZ. Защита, как и CodeLock, представляет собой приложение на php, для его работы требуется база MySQL. Модуль защиты - подключаемый скрипт на php, зашифрованный в несколько слоев. После разбора алгоритма снимается очень легко в точности до исходного кода. Функции обфускатора нет.
Free PHP Encoder. Бесплатный он-лайновый сервис для кодирования php-скриптов. Модуль защиты представляет собой подключаемый php-скрипт, накрытый Zend'ом, который надо скачать с сайта. После снятия Zend'а и разбора алгоритма защита легко снимается полностью до исходного кода. Алгоритм защиты неизменный, функции обфускатора нет.
gencoder. Скрипт на php, кодирование примитивное, стандартный base64. Большего внимания не заслуживает и практического интереса не представляет.
FREE Encrypted PHP. Бесплатный он-лайновый шифровщик файлов, выполняющий привязку к серверу и ограничение по времени работы скрипта. К зашифрованным скриптам подключается модуль расшифровки, накрытый ionCube. После открытия алгоритма расшифровки легко снимается.
Free Online PHP Obfuscator. Бесплатный он-лайновый шифровщик файлов, несмотря на слово "obfuscator" в названии, дополнительно сжимает и шифрует скрипты. Внешняя шифровка сложности в снятии не представляет, основная защита держится на обфускации текстовых строк и имен переменных.
PHP Locker. Коммерческий продукт, шифрует PHP-файлы в несколько слоев по по простейшему алгоритму, привязки к серверу нет, функции обфускации нет, ограничений скриптов по времени нет, в триальной версии добавляет к каждому скрипту ссылки на свой сайт. Легко снимается до исходного кода.
AROHA PHPencoder. Бесплатный скрипт для кодирования других скриптов. Используется обычный base64, поэтому никакого интереса не представляет, к тому же в нем есть функция обратной распаковки. На офсайте можно кодировать и декодировать скрипты он-лайн.
Обфускаторы:
Особого интереса в плане изучения не представляют, все работают по одинаковому принципу: замена названий переменных на набор случайных символов, удаление комментариев, переносов строк и пробелов, использованных для форматирования кода. К ним относятся GridinSoft PHP Processor, Semantic Designs Obfuscator, PHP Defender, Raizlabs PHP Obfuscator, Obfusc, POBS, PHP UnReader, Code Eclipse и другие. По деобфускации различных скриптов я написал отдельную статью.
Для точного определения чем защищены скрипты можете воспользоваться моей программой PCL's PHPiD. По всем вопросам "а где взять декодеры?" и "а как сломать?" обращайтесь к поисковым системам. Просить что-то сломать тоже не надо, не тратьте зря время.
Просмотров: 41316 | Комментариев: 36
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Андрей
(16.05.2016 в 14:32):
В начале статьи стоило объяснить что за зверь такой "анализ и модификация php скриптов"
ManHunter
(11.05.2012 в 01:40):
Какой-то неизвестный самопал, на паблике ничего подобного не встречал.
MaxZa
(08.05.2012 в 10:55):
А что на это скажешь: http://80.190.251.11/cryp_php.txt
Сергей
(07.05.2012 в 13:41):
Пост мне помог. Спасибо.
ManHunter
(10.03.2012 в 22:12):
Не надо ничего шифровать. Пустая трата времени и ресурсов. Так же, как не надо убегать от снайпера - просто подохнешь уставшим.
Tim
(10.03.2012 в 04:31):
Zdravstvuite ManHunter! Otlichnaia statia, interesuet vopros shifrovania ishodnogo koda, gotovogo dvijka. Noprimer dvijok shopa ili joomla, lubogo besplatnogo ili kuplennogo. Intersni tolko professionalnie platnie. Takje interesuet servisi kotorie shifruut na letu polnostiu sait. Zaranie Blagodaren! Izvinite za ne pravelnii russkii iazik..
Баклан
(15.02.2012 в 19:34):
спасибо. просто и компактно и полезно
ManHunter
(10.01.2012 в 11:07):
А чо ты хотел? Универсальный распаковщик всего на свете, чтобы за пивом бегал и минет делал? Не нравится - скатертью дорога.
stalker
(10.01.2012 в 11:05):
PCL's PHPiD - кроме мимолётного всплеска демострации ума перед начальством, типа - "Обфускация кода была произведена программой ...", она бесполезна.
drGray
(14.12.2011 в 09:54):
Насчет программиста в 9 утра на работе = TRUE )))))))))
ManHunter
(22.08.2011 в 07:48):
Это и есть мое "фе", т.к. ко всем защитам я отношусь одинаково плохо. А для особо одаренных типа тебя есть детский журнал "Мурзилка" с разноцветными шрифтами и красивыми картинками.
Владимир
(22.08.2011 в 00:35):
оформить можно было и лучше, зачем мне читать одну и ту же фразу снимается легко, автоматично и с волшебной палочкой, если реальной защиты нет , тогда зачем писать пост, если есть то где рейтинг ? хотя бы балы повыставлял разным прогам, подсветил лучшие, это даже не обзао, это просто "фе" великого программиста, который считает что взломать можно всё...рядовой клиент короче,..ладно
comm
(20.04.2011 в 15:09):
bcompiler, как видимо и все остальные, снимается дизассемблером xcache, который делает дамп op-кодов и последующим его разбором.
То есть как и говорилось в какой-то из статей по этой тематике: "сложно защищаться от пользователя у которого есть ключи ко всем дверям".
Такая же проблема защиты стоит и в .NET приложениях.
То есть как и говорилось в какой-то из статей по этой тематике: "сложно защищаться от пользователя у которого есть ключи ко всем дверям".
Такая же проблема защиты стоит и в .NET приложениях.
руслан
(07.12.2010 в 17:00):
спасибо большое!!!!
Вчеслав
(13.09.2010 в 13:58):
ManHunter, спасибо. Наконец получил полезную, толковую и главное - компактно изложенную информацию. Прекрасная работа.
Spacewalker
(29.05.2010 в 14:36):
Code Eclipse мой работающий скрипт поломал :)
Жаль, хорошо перевернул весь код, но:
Fatal error: Class 'x0c' not found in install.php on line 10
Жаль, хорошо перевернул весь код, но:
Fatal error: Class 'x0c' not found in install.php on line 10
ManHunter
(13.04.2010 в 12:39):
CodeLock легко снимается десятком строчек кода, при этом вообще без потрошения ключей. А "возьмите декодер", "откройте файл" - это нихера не "подробный способ". Если не знаешь предмет обсуждения, то лучше не влезай.
BUM
(13.04.2010 в 12:29):
кому нужен подробный способ раскодировки Codelock читаем здесь - [del]
Трактор
(22.09.2009 в 08:35):
Дотестировал я, кстати, BCompiler. Не подходит он мне. Drupal не работает со скомпилированным модулем :-(
С шифрованными Drupal работает. Меньше всего было проблем было с PHP LockIt. Но его смог сломать даже я со своим ничтожным опытом в PHP и web технологиях.
С шифрованными Drupal работает. Меньше всего было проблем было с PHP LockIt. Но его смог сломать даже я со своим ничтожным опытом в PHP и web технологиях.
ManHunter
(21.09.2009 в 23:06):
Трактор, а Roadsend PHP Compiler - это ж не протектор, а компилятор из PHP в исполняемый никсовый файл. Так что он тут пролетает. Под винду есть примерно такой же - Bambalam PHP EXE Compiler:
http://www.bambalam.se/bamcompile/
Он делает этакий бутерброд из PHP-скрипта, Turck MMCache и PHP4. А за BCompiler спасибо, добавлю в обнаружение еще и эту гадость :)
http://www.bambalam.se/bamcompile/
Он делает этакий бутерброд из PHP-скрипта, Turck MMCache и PHP4. А за BCompiler спасибо, добавлю в обнаружение еще и эту гадость :)
Трактор
(21.09.2009 в 22:26):
Вот хорошее описание установки BCompiler'а http://webdev.ks.ua/2009-01/us...n-lenny.html
Трактор
(21.09.2009 в 21:14):
Вот пример скомпилированного файла
http://narod.ru/disk/133814730...rld.rar.html
Для BCompiler'а есть оболочка http://www.softsia.com/BCompil...oad-t006.htm но я её не пользовал.
Из найденнх мной здесь не перечислены, получается, только BCompiler и Roadsend Compiler
http://www.roadsend.com/home/i...D=pccRunTime
Казалось что больше :-)
http://narod.ru/disk/133814730...rld.rar.html
Для BCompiler'а есть оболочка http://www.softsia.com/BCompil...oad-t006.htm но я её не пользовал.
Из найденнх мной здесь не перечислены, получается, только BCompiler и Roadsend Compiler
http://www.roadsend.com/home/i...D=pccRunTime
Казалось что больше :-)
ManHunter
(21.09.2009 в 12:29):
Трактор, "из неперечисленных" - это например какие? Если не затруднит, выложи куда-нибудь примеры защищенных скриптов, в том числе накрытых BCompiler'ом. Тогда я смогу о них что-нибудь сказать. А то у меня под рукой нет ни компиляторов С, ни собственных никсовых серверов для тестинга. Я добавлю их детект в свой PHPiD.
Трактор
(21.09.2009 в 12:10):
Спасибо за толковый обзор. Протестил почти все перечисленные системы. И ещё кое-что из неперечисленных.
Больше всего мне понравилась старая разработка, которой нет в этом обзоре BCompiler. Вроде как компилит она в двоичные коды и найти читалку этих кодов мне неудалось. ManHunter, можешь что-нибудь сказать о BCompiler'е?
Больше всего мне понравилась старая разработка, которой нет в этом обзоре BCompiler. Вроде как компилит она в двоичные коды и найти читалку этих кодов мне неудалось. ManHunter, можешь что-нибудь сказать о BCompiler'е?
ManHunter
(24.08.2009 в 16:37):
Я еще всех ублюдков типа тебя переживу, так что за меня беспокоиться не надо.
Сергей
(24.08.2009 в 16:29):
ManHunter ТЫ БЕЗ БАРЫГ С ГОЛОДУ СДОХНИШ!
ManHunter
(06.07.2009 в 09:17):
Барыгам тут не место. В бан.
Alex
(06.07.2009 в 03:01):
Декодер Zend & ionCube [спам]
ManHunter
(11.05.2009 в 01:19):
Лишь бы УК РФ не воздал мне за мои "труды" :)
mkbat
(11.05.2009 в 01:18):
ManHunter, большушее большушее спасибо! Пусть Бог воздаст тебе за полезные труды! )))
jegit
(19.04.2009 в 00:34):
молодец!
Mike
(30.03.2009 в 11:39):
Thanks! very interesting.
LOST KIND
(09.10.2008 в 11:52):
ух спасибо :) ммм, люблю полезное
ManHunter
(09.10.2008 в 00:16):
Когда я писал Massacre и PHPiD, то как раз занимался глубоким тралением интернета в поисках всякой подобной дряни. Если что-то пропустил, то буду рад дополнениям коллекции.
MaxIkar
(08.10.2008 в 21:39):
Спасибо за классную аналитику и за многогранность блога!
Воистину, не зря ты все это затеял
Воистину, не зря ты все это затеял
Добавить комментарий
Заполните форму для добавления комментария
>Не надо ничего шифровать. Пустая трата времени и ресурсов.
Часто шифруют по-быстрому паблик шелл от антивирусов. В последние время они научились раскодировать простые защиты.