Подтвердить что ты не робот

Свернуть/Обфускать код PHP

Я использую Haxe для генерации кода PHP. (Это означает, что вы пишете код на языке Haxe и получаете кучу php файлов после компиляции.) Сегодня клиент сказал мне, что ему нужна новая функция в старом проекте, сделанном с Haxe. Он также сказал мне, что он изменил некоторые мелочи кода на свои нужды. Теперь я сначала перенес его изменения в свой код Haxe, а затем добавлю новую функцию, потому что в противном случае его изменения будут перезаписаны при следующем компиляции проекта.

Чтобы это не повторилось, я ищу какую-то программу, которая минимизирует/обфускает код PHP. Цель состоит в том, чтобы сделать код нечитаемым /uneditable насколько возможно. Идеальный инструмент будет работать под Linux и может обрабатывать целые папки и все, что содержит файлы.

Есть ли какие-либо предложения?

4b9b3361

Ответ 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.

Ответ 7

Я только что нашел minify-service для PHP. Это действительно полезно. Они говорят, что обфускация будет доступна в ближайшее время. Надеюсь, это правда:) http://customhost.com.ua/php-minify/