А при error_reporting=E_ALL ты пробовал получившийся скрипт запускать?
Да, все отлично работает. Я тестировал скрипт под php 4.3.8. Может, под пятой версией какие глюки?
Кстати, да. Во вчерашнем примере из оффтопика была неопределенная константа
Вроде не было там никакой константы... Или я ее не заметил. Хотя вряд ли - пхп бы ругнулся notice'ом на undefined constant. Или пхп ее тоже не заметил?
ИМХО, защита кода из этого близкая к нулю. Простой скрипт вполне реально расшифровать за приемлемое время, а сложный из-за дополнительных расходов на маскировку вряд ли сможет нормально работать.
Не спорю, что защита близка к нулю. Но, как известно, любую защиту можно взломать. Вопрос только в ресурсах (в основном это время и деньги), необходимых на взлом. Так вот, защита считается надежной, если ресурсы, затраченные на ее взлом, превышают ресурсы, затраченные на создание защищаемого продукта. К тому же, исходный код обычно нужен для того, чтобы что-нибудь в нем подправить или передрать оттуда какой-нибудь алгоритм (а еще лучше - готовую часть кода, в которой необходимы лишь незначительные изменения). Т.к. obfuscator удаляет все комментарии и форматирование, безвозвратно переименовывает названия переменных, функций и констант, а также заменяет все строки на константы, которые инициализируются в начале скрипта, то мало кто осмелится разбираться в таком коде.
Пару слов о найденных "конкурентах".
Судя по рейтингу google, самый известный obfuscator - это POBS. Протестировать его в онлайне можно тут:
http://www.jimworld.com/tools/php-encrypt/
Obfuscator по этому адресу
http://www.semdesigns.com/Products/Obfuscators/PHPObfuscationExample.html продают за $150.
А вот этот
http://sourceguardian.com/ продают уже за $250. Там же можно загрузить демо-версию.
p.s. интересно, а почему этот топик перекинули из "пхп для продвинутых" в "оффтопик"?
p.p.s. Сегодня я исправил кое-какие глюки, которые могли проявляться вчера. Так что тестируйте мой obfuscator снова. Адрес остался прежним:
http://evd.4enet.by/chat/htdocs/php_encoder.enc.php
-~{}~ 06.10.04 23:39:
Сегодня добавил поддержку классов, которую так все просили
-~{}~ 08.10.04 22:31:
Мой obfuscator кардинально обновился. Теперь в нем доступны следующие настройки:
- удаление лишних пробелов
- удаление комментариев
- необратимое переименование пользовательских функций, классов, констант и переменных
- возможность создание списка зарезервированных имен функций, классов, констант и переменных, которые не должны подвергаться изменениям
- замена строк в одинарных и двойных кавычках на константы (в обработанном коде не будут встречаться эти строки в открытом виде)
- замена HEREDOC-строк на константы
- замена зарезервированных имен переменных на ${const}. Хотя имена этих переменных остаются прежними, но в обработанном коде они будут заменены на константы со случайными именами
- замена HTML-кода на echo const , где в const хранится замененный HTML-код
- замена вызовов внешних, системных и зарезервированных имен функций на $GLOBALS[const](). Тем самым скрывается истинное название функции
- замена имен внешних и системных констант на случайные имена
- замена целых и вещественных чисел на константы
- возможность использования расширенного набора символов для генерации имен функций, констант, переменных и классов
- сжатие таблицы символов