Есть ли код для обфускатора для PHP?

Кто-нибудь использовал хороший обфускатор для PHP? Я пробовал некоторые, но они не работают для очень больших проектов. Они не могут обрабатывать переменные, которые включены в один файл и используются, например, в другом.

Или у вас есть другие трюки для остановки распространения вашего кода?

Ответ 1

Вы можете попробовать защищать PHP, который является бесплатным PHP-обфускатором для обфускации вашего PHP-кода.
Он очень приятный, простой в использовании и бесплатный.

Что касается других, которые здесь написаны о том, что они не используют обфускацию, потому что это может быть нарушено и т.д.:
У меня есть только одно, чтобы ответить на них - не закрывайте дверь своего дома, потому что каждый может выбрать ваш замок.
Это именно так, обфускация не предназначена для предотвращения кражи кода на 100%. Это требует только отнимающей много времени задачи, поэтому будет дешевле заплатить оригинальный кодер. Надеюсь, это поможет.

Ответ 2

Люди будут предлагать вам обфускаторы, но никакие обфускации не могут помешать кому-либо получить код. Никто. Если ваш компьютер может запустить его, или в случае фильмов и музыки, если он может воспроизводить его, пользователь может получить его. Даже компиляция его в машинный код просто усложняет работу. Если вы используете обфускатор, вы просто обманываете себя. Хуже того, вы также не разрешаете своим пользователям исправлять ошибки или вносить изменения.

Музыкальные и кинокомпании пока не совсем согласны с этим, они все еще тратят миллионы на DRM.

В интерпретируемых языках, таких как PHP и Perl, это тривиально. У Perl было много кофактов, тогда мы поняли, что вы можете декомпилировать их тривиально.

perl -MO=Deparse some_program

PHP имеет такие вещи, как DeZender и Показать мой код.

Мой совет? Напишите лицензию и получите адвоката. Единственный другой вариант - не выдавать код и вместо этого запускать размещенную службу.

См. также запись perlfaq на тему.

Ответ 3

Ничего не будет идеально. Если вы просто хотите что-то остановить не-программистов, то здесь немного script, я написал, вы можете использовать:

<?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);

Ответ 4

Я не уверен, что вы можете пометить обфускацию интерпретируемого языка как бессмысленного (я не могу добавить комментарий к сообщению Schwern, поэтому здесь идет новая запись).

Я думаю, что это немного близоруко, чтобы предположить, что вы знаете все возможные сценарии, когда кто-то хотел бы запутать код, и вы предполагаете, что кто-то действительно захочет перейти к любой необходимой длине, чтобы просмотреть этот код, когда-то запутанный. Рассмотрим мой текущий сценарий:

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

Ответ 5

Смотрите наш SD Thicket PHP Obfuscator для обфускатора, который отлично работает с произвольно большими наборами страниц. Он работает в основном с помощью имен идентификаторов скремблирования. В приложениях от скромного до большого, это может сделать код чрезвычайно трудным для понимания, что является цельной целью.

Он не тратит впустую никакой энергии на "схемы eval (decode (encodedprogramcode))", которые делают многие "обфускаторы" PHP [это "кодировщики", а не "обфускаторы" ), поскольку любой ком найти этот вызов и выполнить сам eval-decode и получить декодированный код.

Он использует точный парсер для обработки PHP; он скажет вам, является ли ваша программа синтаксически недействительной. Что еще более важно, он точно знает весь язык; он не потеряется или не запутается, и он не сломает ваш код (другое, что произойдет, если вы запутаетесь "неправильно", например, не сможете правильно определить публичный API кода).

Да, он обфускает идентификаторы одинаково на разных страницах; если он этого не сделал, результат не сработает.

Ответ 6

Лучшее, что я видел, это Zend Guard.

Ответ 7

Попробуйте следующее: http://www.pipsomania.com/best_php_obfuscator.do

Недавно я написал его на Java, чтобы запутать мои PHP-проекты, потому что я не нашел хороших и совместимых готовых в сети, я решил разместить его в сети как saas, так что все используют его бесплатно. Он не изменяет имена переменных между разными сценариями для максимальной совместимости, но придает им очень хорошее представление, с произвольной логикой и с каждой инструкцией. Струны... все. Я считаю, что это намного лучше, чем это багги codeeclipse, то есть, кстати, написанное на PHP и очень медленное:)

Ответ 8

Thicket ™ Obfuscator для PHP

Инструмент PHP Obfuscator скремблирует исходный код PHP, чтобы сделать его очень трудным для понимания или обратного проектирования (пример). Это обеспечивает значительную защиту интеллектуальной собственности исходного кода, которая должна быть размещена на веб-сайте или отправлена ​​клиенту. Он является членом семейства SD модулей Obfuscators исходного кода.

Ответ 9

Использование SourceGuardian хорош, поскольку оно поставляется с классным и простым в использовании графическим интерфейсом.

Но имейте в виду:

Обратите внимание на свои "смешные" условия лицензирования.

  • Вам разрешено запускать только 1 на машину - это допустимо.
  • Если вы хотите запустить интерфейс командной строки на другом компьютере, скажем, ваш веб-сервер, ВАМ НУЖДАЕТСЯ ДРУГИЕ ЛИЦЕНЗИИ (Да, это смешно, и я тоже слышу, как вы смеетесь).

Ответ 10

Obfuscation добавляет еще один слой потенциальных ошибок и уязвимостей в вашу программу. Пожалуйста, не делайте этого.

Люди, которые пишут программу обфускации, обычно кажутся очень отрывочными и неквалифицированными.

Если ваш код "замечательный", крекеры пройдут большую длину, чтобы распространить его, независимо от того, запущен ли он или нет. Если никто не знает/не заботится о вашем коде, они, вероятно, тоже не будут.