Есть ли обфускатор кода для PHP?
Кто-нибудь использовал хороший обфускатор для PHP? Я пробовал некоторые, но они не работают для очень больших проектов. Например, они не могут обрабатывать переменные, которые включены в один файл и используются в другом.
Или у вас есть какие-то другие приемы, чтобы остановить распространение вашего кода?
10 ответов
Вы можете попробовать PHP protect, который является бесплатным обфускатором PHP, чтобы запутать ваш PHP-код.
Это очень приятно, легко и бесплатно.
Что касается того, что другие написали здесь о том, чтобы не использовать запутывание, потому что оно может быть сломано и т. Д.:
У меня есть только одно, чтобы ответить на них - не запирайте дверь дома, потому что любой может взломать ваш замок.
Это как раз тот случай, когда обфускация не предназначена для предотвращения 100% кражи кода. Нужно только сделать это трудоемкой задачей, поэтому дешевле будет заплатить оригинальный кодер. Надеюсь это поможет.
Люди предложат вам обфускаторы, но никакая обфускация не сможет помешать кому-то получить ваш код. Никто. Если ваш компьютер может запустить его, или в случае фильмов и музыки, если он может воспроизводить его, пользователь может получить его. Даже компиляция его в машинный код только усложняет работу. Если вы используете обфускатор, вы просто обманываете себя. Хуже того, вы также запрещаете своим пользователям исправлять ошибки или вносить изменения.
Музыкальные и кинокомпании еще не совсем смирились с этим, они все еще тратят миллионы на DRM.
В интерпретируемых языках, таких как PHP и Perl, это тривиально. Раньше в Perl было много обфускаторов кода, а потом мы поняли, что их можно легко декомпилировать.
perl -MO=Deparse some_program
В PHP есть такие вещи, как DeZender и Show My Code.
Мой совет? Напишите лицензию и получите адвоката. Единственный другой вариант - не выдавать код и вместо этого запускать размещенный сервис.
Смотрите также запись perlfaq на эту тему.
Ничто не будет идеальным. Если вы просто хотите что-то, чтобы остановить непрограммистов, вот небольшой сценарий, который я написал, который вы можете использовать:
<?php
$infile=$_SERVER['argv'][1];
$outfile=$_SERVER['argv'][2];
if (!$infile || !$outfile) {
die("Usage: php {$_SERVER['argv'][0]} <input file> <output file>\n");
}
echo "Processing $infile to $outfile\n";
$data="ob_end_clean();?>";
$data.=php_strip_whitespace($infile);
// compress data
$data=gzcompress($data,9);
// encode in base64
$data=base64_encode($data);
// generate output text
$out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>';
// write output text
file_put_contents($outfile,$out);
Я не уверен, что вы можете пометить запутывание интерпретируемого языка как бессмысленное (я не могу добавить комментарий к сообщению Шверна, поэтому здесь идет новая запись).
Я думаю, что немного недальновидно предполагать, что вы знаете все возможные сценарии, когда кто-то хотел бы запутать код, и вы предполагаете, что кто-то действительно захочет пойти на все необходимые длины, чтобы просмотреть этот код после того, как его запутали. Рассмотрим мой текущий сценарий:
Я работаю в консалтинговой компании, которая разрабатывает большой и довольно сложный сайт на основе PHP. Проект будет размещен на сервере клиента, на котором размещены другие сайты, разработанные другими консультантами. Технически любой код, который мы пишем, принадлежит клиенту, поэтому мы не можем лицензировать его. Однако любая другая консалтинговая компания (конкурент), имеющая доступ к серверу, может скопировать наш код без предварительного разрешения клиента. Поэтому у нас есть реальная причина запутывания - приложить усилия, необходимые для того, чтобы конкурент понял наш код, больше, чем усилия по созданию копии нашей работы с нуля.
Посмотрите наш SD Thicket PHP Obfuscator для обфускатора, который прекрасно работает с произвольно большими наборами страниц. Он работает главным образом путем скремблирования имен идентификаторов. В скромных и больших приложениях это может сделать код чрезвычайно сложным для понимания, что и является целью.
Он не тратит энергию на схемы "eval (decode (encodedprogramcode))", что делают многие "обфускаторы" PHP [это "кодировщики", а не "обфускаторы"], потому что любой ком может найти этот вызов и выполнить eval-decode сам и получить декодированный код.
Он использует языковой анализатор для обработки PHP; он скажет вам, если ваша программа синтаксически неверна. Что еще более важно, он знает весь язык точно; он не будет потерян или запутан, и он не сломает ваш код (за исключением того, что происходит, если вы запутываете "неправильно", например, не можете правильно определить общедоступный API кода).
Да, он одинаково запутывает идентификаторы на разных страницах; если этого не сделать, результат не сработает.
Попробуйте это: http://www.pipsomania.com/best_php_obfuscator.do
Недавно я написал это на Java, чтобы запутать свои проекты PHP, потому что я не нашел в сети хороших и совместимых готовых программ, я решил выложить его в Интернет как saas, так что каждый может использовать его бесплатно. Он не меняет имена переменных между различными скриптами для максимальной совместимости, но очень хорошо запутывает их, со случайной логикой, каждой инструкцией. Струны... все. Я считаю, что это намного лучше, чем этот глючный кодеклип, который, кстати, написан на PHP и очень медленный:)
Инструмент PHP Obfuscator скремблирует исходный код PHP, чтобы его было очень трудно понять или перепроектировать (пример). Это обеспечивает значительную защиту интеллектуальной собственности исходного кода, которая должна быть размещена на веб-сайте или отправлена клиенту. Он является членом семьи Обфускаторов исходного кода SD.
Использование SourceGuardian хорошо, так как поставляется с классным и простым в использовании графическим интерфейсом.
Но учтите:
Обратите внимание на его - другие забавные - условия лицензирования.
- Вам разрешено запускать только 1 на машину - пока это приемлемо
- Если вы хотите запустить интерфейс командной строки на другом компьютере, скажем, на своем веб-сервере, ВАМ НУЖНА ДРУГАЯ ЛИЦЕНЗИЯ (Да, это смешно, и я тоже слышу, как вы смеетесь).
Обфускация только добавляет еще один слой потенциальных ошибок и уязвимостей в вашу программу. Пожалуйста, не делай этого.
Люди, которые пишут программное обеспечение для обфускации, обычно кажутся очень отрывочными и неопытными.
Если ваш код "великолепен", взломщики пройдут немало усилий, чтобы распространить его, независимо от того, скрыт он или нет. Если никто не знает / не заботится о вашем коде, вероятно, они тоже не будут.