Есть хороший обфускатор для кода Perl? - PullRequest
4 голосов
/ 16 сентября 2008

Кто-нибудь знает хороший кодовый obsfucator для Perl? Меня просят изучить возможность обфускации кода перед тем, как выпустить его клиенту. Я знаю, что запутанный код все еще может быть переработан, но это не наша главная задача.

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

Ответы [ 15 ]

2 голосов
/ 16 сентября 2008

Как уже сказали несколько человек: не надо.

Это довольно неявно, учитывая природу интерпретатора Perl, что все, что вы делаете для обфускации Perl, должно быть отменено до того, как Perl его заполучит, что означает, что вам нужно оставить скрипт де-обфускации / бинарный файл лежащим вокруг где переводчик (и, следовательно, ваш клиент) может найти его:)

Исправьте реальную проблему: контрольные суммы и / или соответствующую лицензию. А обслуживающий персонал обучен говорить «ты изменил это? мы ссылаемся на пункт 34b нашей лицензии, и это будет $ X, 000, прежде чем мы ее коснемся »....

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

2 голосов
/ 16 сентября 2008

Альтернативой запутыванию является преобразование вашего скрипта в двоичный файл, используя что-то вроде Perl Dev Kit ActiveState .

1 голос
/ 21 сентября 2008

Как говорит Овидий, это контрактная, социальная проблема. Если они меняют код, они аннулируют гарантию. Поручите им много, чтобы исправить это, но в то же время, дать им канал, где они могут предложить изменения. Кроме того, посмотрите, что они хотят изменить, и внесите эту часть в конфигурацию, если можете. У них есть кое-что, что они хотят сделать, и пока вы не удовлетворите это, они будут продолжать пытаться обойти вас.

В Мастеринг Perl , я немного расскажу о победе над обфукаторами. Даже если вы делаете такие вещи, как создание бессмысленных имен переменных и т.п., такие модули, как B :: Deparse и B :: Deobfuscate , наряду с такими инструментами Perl, как Perl: : Tidy , чтобы знающий и мотивированный человек мог легко получить ваш источник. Вам не нужно так много беспокоиться о непознанных и немотивированных, потому что они все равно не знают, что делать с кодом.

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

Удачи,

1 голос
/ 17 сентября 2008

Я бы просто пригласил их в мое дерево SVN на их собственной ветке, чтобы они могли вносить изменения, и я мог видеть их и интегрировать их изменения в мое дерево разработки.

Не борись с этим, прими это.

0 голосов
/ 15 мая 2014

Еще одно несерьезное предложение - использовать Acme :: Bleach , это сделает ваш код очень чистым; -)

...