Свернуть/Обфускать код PHP
Я использую Haxe для генерации кода PHP. (Это означает, что вы пишете код на языке Haxe и получаете кучу php файлов после компиляции.) Сегодня клиент сказал мне, что ему нужна новая функция в старом проекте, сделанном с Haxe. Он также сказал мне, что он изменил некоторые мелочи кода на свои нужды. Теперь я сначала перенес его изменения в свой код Haxe, а затем добавлю новую функцию, потому что в противном случае его изменения будут перезаписаны при следующем компиляции проекта.
Чтобы это не повторилось, я ищу какую-то программу, которая минимизирует/обфускает код PHP. Цель состоит в том, чтобы сделать код нечитаемым /uneditable насколько возможно.
Идеальный инструмент будет работать под Linux и может обрабатывать целые папки и все, что содержит файлы.
Есть ли какие-либо предложения?
Ответы
Ответ 1
Я согласен с комментарием, что вы делаете очень мало, но через 10 лет в этом бизнесе я могу засвидетельствовать одно: половина кода, который вы получаете, настолько запутанна, что его можно было бы минимизировать и действительно выполнять /var имена так часто полностью произвольны, я отредактировал minified js, и это было не более чем неприятность, чем какой-то неминифицированный код.
Я не мог найти такую программу script/, скорее всего, потому, что это отнюдь не против PHP-духа, а чуть-чуть, но тем не менее.
Во-первых: Php не является чувствительным к пробелу, поэтому первый шаг - удалить все строки и пробелы вне строки.
Это затруднило бы взаимодействие с средним tinkerer, промежуточный программист мог бы просто найти и заменить все: {} с помощью $1\n или что-то в этом роде.
Следующим шагом будет get_defined_functions и сохранить этот массив ( "пользовательский" ключ в возвращаемом массиве), вам нужно будет включить все файлы для этого.
Если код "oo", вам также понадобятся get_defined_classes. Сохраните этот массив.
По сути, вам нужно получить переменные, методы и экземпляры классов, вам придется создавать экземпляр класса и get_object_vars на нем, и вы можете сориентироваться и видеть, что вы можете получить много другой информации, например, константы и класс vars и т.д.
Затем вы берете эти списки, просматриваете их, создаете уникальное имя для каждой вещи, а затем preg_replace или str_replace, что во всех файлах.
Убедитесь, что вы сделали это на тестовой копии, и посмотрите, какие ошибки вы получите.
Хотя, чтобы быть ясным, в аду есть особое место, предназначенное для людей, которые запутываются ради обфускации.
Отъезд: get_defined_functions get_declared_classes и просто следовать ссылки, чтобы увидеть, что вы можете сделать.
Ответ 2
Почему бы не использовать php buid в функции php_strip_whitespace()
string php_strip_whitespace ( string $filename )
Возвращает исходный код PHP в имени файла с комментариями PHP и удалением пробела. Это может быть полезно для определения количества фактического кода в ваших сценариях по сравнению с количеством комментариев. Это похоже на использование php -w из командной строки.
Ответ 3
Мы используем Zend Guard для кодирования нашего PHP-кода с определенными клиентами, но, по словам Parrots, вы должны быть уверены, что у вас есть код, Мы только кодируем в определенных ситуациях, и только тогда, когда он явно указывает, что мы сохраняем право собственности на код, в противном случае Parrots прав, клиент имеет право его модифицировать.
Ответ 4
Я знаю Zendguard, Expressionengine использовал его для шифрования кода своей основной версии. Вы всегда можете дать это, хотя вам нужно заплатить за это.
Однако, хотя я понимаю, что разочарование в том, что нужно переносить его изменения, я предполагаю, что они купили у вас код? Они имеют право изменять его. Вы просто имеете право заряжать их дополнительно, чтобы переносить свои изменения;) Представьте, если вы перестали работать на них, как они могли нанять кого-то еще, чтобы обновить код?
Ответ 5
Наш PHP Obfuscator выполняет именно работу по удалению комментариев, пробелов и скремблирующих идентификаторов.
Он работает через полный набор файлов PHP, чтобы гарантировать, что скремблированные символы скремблируются
последовательно в этих файлах, обеспечивая правильную работу даже после скремблирования.
EDIT 2013: теперь шифрует строковые литералы, чтобы сделать их нечитаемыми. Работает под Windows и Linux под Wine.
Ответ 6
Вы можете попробовать PHP Obfuscator или bcompiler PHP extension.
Ответ 7
Я только что нашел minify-service для PHP. Это действительно полезно. Они говорят, что обфускация будет доступна в ближайшее время. Надеюсь, это правда:)
http://customhost.com.ua/php-minify/