Как стать автором
Обновить

Комментарии 25

Однажды по плохому стечению обстоятельств был слит движок, закоденный в ионкубе. На этом собственно порыв «хакеров» или заказчиков закончился.
По моему это самый взломостойкий энкодер. Ходили даже слухи, что китайцы эти файлы по 15$ за штуку декодируют)
Всё остальное, что я видел — поддается декодингу. Как сейчас, увы, не знаю.
Да, действительно слили движок Ioncube версии 6. На данный момент, актуальная версия — 8.

Ioncube — самый качественный и проработанный энкодер, но не самый взломостойкий, если под взломостойкостью понимать 100% восстановление исходного кода.

Текущая цена на декодирование — от $6 за файл до $10 за 100Kb, в зависимости от жадности декодировщика :)
Как на счет Zend Guard по сравнению с Ioncube по качеству?
С точки зрения тех, кто декодирует — двояко: опкоды достаются проще (соответственно, можно всякие пароли в тексте подсмотреть даже без декомпилирования). Зато Zend Guard перед кодированием использует свой optimizer, а это усложняет декомпилирование. Причем, чем сложнее была структура исходного кода (вложенные циклы, switch-и, разветвленные if-ы), тем декомпиляторы больше запутываются.
А приходилось ли сталкиваться с Nu-Coder'ом?
За все время работы я видел только один запрос на декодирование файлов после Nu-Coder'а, это было на одном из форумов.
По-моему, публично доступные декодеры справляются с такими файлами.

А вообще, компания NuSphere мне нравится тем, что они создали свой стэк для PHP-разработки.
У них еще и своя IDE отличная была когда-то для PHP :)
Создатели Zend Guard решили не делать «дешевый» онлайн-энкодер для единичных скриптов. Видимо, больше мороки, чем отдачи.

Про аналогичные пиратские сервисы я ничего не слышал и сомневаюсь, что они существуют.

Один из сайтов по декодированию предлагает за деньги сделать так, чтобы ваши скрипты не могли бы декодировать другие сервисы — очень напоминает шутку про то, как «русский луноход отбирает образцы грунта у американского» :)
Речь про перевод кода в плохо-декодируемые конструкции такого вида?

switch($eatThis) {
    default:
        $doNothing = 0;
}
Такие конструкции только затрудняют автоматическое декодирование, а там вроде речь шла о полной защите.

Я ради интереса отправил запрос этому товарищу, о результатах сообщу.
Довольно быстро ответил:

Hello I use namespace because public dezenders can not bypass it.

<?php
namespace name;
class myClass {}
Есть такие товарищи, которые и без обфускатора так напишут, что чтение их кода всегда вызывает реакцию «Поделись травой, которую курил» :(
Кстати с ZendGuard не все так гладко. Пару раз встречался с таким кодом (с весьма обычным на первый взгляд), который по-разному работал в закодированном и не закодированном виде. Сколько я тогда промучился с дебагом…
Это как раз тот случай, когда нужно было отрепортить баг создателям ZendGuard. Хотя, по моему субъективному мнению, только создатели IonCube серьезно относятся к таким запросам — быстро разбираются и исправляют. Могу быть и неправ.
Та Zend Guard'овцы вообще не очень адекватны, мало того что их продукт стоит намного дороже всех, он довольно спокойно открывается, еще и только недавно выпустили версию под PHP 5.4, который уже больше года как вышел.
Как декодеры относятся к позднему связыванию?

$var1 = 'Blah' . 'Blah' . 'Blah';
$var2 = new $var1;


А к замыканиям?
$arr  = array(1,2,3); $z = 100;
usort($arr, function($x, $y) (use $z) { ... });
Позднее связывание вообще никаких проблем не вызывает. Один из публично доступных декомпиляторов глючит с ключевым словом «new», но это скорее исключение.

Замыкания, как я подозреваю, сейчас вообще никто из декодеров не поддерживает — т.е. корректно не декодирует. Во многом потому, что большинство кода, который приходится декодировать, пишут индусы в худшем значении этого слова :)
Городок в западно-американской степи. Салун. За столом сидят два ковбоя, местный и приезжий, и пьют виски. Вдруг по улице кто-то проносится на огромной скорости, паля во все стороны из пистолетов. В салуне никто и ухом не ведёт. Приезжий местному:
— Билл?
— Да, Гарри?
— Что это было, Билл?
— Это был Неуловимый Джо, Гарри.
— А почему его зовут Неуловимым Джо, Билл?
— Потому что его никто ещё не поймал, Гарри.
— А почему его никто ещё не поймал, Билл?
— Потому что он нафиг никому не нужен, Гарри.
вопрос знатокам PHP: знаете ли вы, почему тут именно print? ;)

Только его и можно так использовать, print возвращает результат и ведёт себя как функция, а echo просто выводит строку на экран.
Абсолютно верно. Языковой конструкт print, в отличие от echo, возвращает значение, и может быть использован в выражениях.
Можно ещё написать скрипт, который пробежится по всему вашему проекту и заменит все константы и содержимое текстовых переменных с помощью chr(), перед этим пропустив через обфускатор а затем bcompiler. Находил на форуме каком-то тему где человек писал что декодирует любые скрипты, в итоге мне отказал ) так что схема неплохая, рекомендую.
Я бы не сказал, что это удачный подход. Во-первых, массовое использование chr ударит по производительности. Во-вторых, bcompiler — отлично декодируется, тем более, что это проект с открытым исходным кодом. И, к слову, с bcompiler-ом больше мороки тем, кто кодирует, чем тем, кто декодирует :)

Не знаю, почему ваш «человек с форума» отказался декодировать ваш вариант. Возможно, поленился возиться.
Если у вас такой серьезный код на продажу, который требует кодирования — думаю, можно критичные места вынести в extensions.
Столько воды, а как в итоге восстанавливать php из опкодов, так и не ясно…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации