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

Как я могу запутать свой Perl script, чтобы сложно было перепроектировать?

Я разработал Perl script, который имеет конфиденциальную бизнес-логику.

Мне нужно передать этот script другому кодеру Perl, чтобы проверить его в своей среде. Он может попытаться извлечь логику в моей программе. Поэтому я хочу, чтобы мой script очень трудно понять.

Любые предложения?

4b9b3361

Ответ 1

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

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

Ответ 2

Не пытайтесь запутывать свой Perl. Вы зря теряете время. Я показываю много людей, как разбить такие вещи в Освоение Perl, чтобы они не пытались это сделать.

Рассматривали ли вы внедрение чувствительных элементов в C и доставку предварительно скомпилированных двоичных файлов с интерфейсом Perl? Это относительно легко сделать и имеет такой же эффект, не полагаясь на умный трюк. Определенный, опытный человек все еще может его перестроить, но это верно для любого решения. Вам нужно скомпилировать библиотеку для каждой платформы, но если этот материал достаточно важен для защиты, достаточно иметь достаточно заряда, чтобы люди могли его использовать.

В качестве альтернативы, поместите чувствительные вещи за веб-службу, чтобы они никогда не получали код.

Одна умная тактика, которую я видел, включает файл, который адаптирован для каждого клиента, будь то форматирование или контент. Это служит чем-то вроде низкосортного водяного знака с использованием банального кода, комментариев или документов. Найдите эту любопытную текстовую последовательность, и вы знаете источник утечки.

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

Ответ 3

Во-первых, позвольте мне сказать, что вы лаем по неправильному дереву. То, что вы хотите сделать, это неправильный подход по многим причинам.

Во-вторых, проверьте Filter:: CryptoPAR:: Фильтр:: Crypto). Прочитайте все руководство перед началом работы.

Ответ 4

Используйте Acme::Bleach, чтобы очистить код от очистки. Затем обфускайте полученный отбеленный код. Однако любой кодированный/обфускационный код может быть декодирован, так как интерпретатор Perl должен все равно декодировать его.

Ответ 5

Вы можете посмотреть perlcc. Это не гарантирует правильность, но должно быть хорошо, если вы не делаете ничего слишком напуганного в своих сценариях.

Ответ 6

В OSX, по крайней мере, они предоставляют три отличные команды:

parl
par.pl
pp

parl - преобразовать файл par в исполняемый двоичный файл, который не требует Perl или других модулей для запуска

par.pl - создавать парные файлы из ваших скриптов perl

pp - скомпилируйте perl script в двоичный файл (но он все еще требует perl)

Не уверен, что они доступны для Windows или Linux.

Интересно, что когда я использовал команду в моем скомпилированном perl script, чтобы указать текущий рабочий каталог, это было то же самое, что и каталог моего нового исполняемого файла. Я бы подумал, что у него было бы несжатое что-то в /tmp и запустить его оттуда, но это было не так.

Ответ 7

Если целью здесь является сделать очень трудным и трудоемким, чтобы типичный пользователь мог видеть ваш код, самое легкое, что вы можете сделать, это вставить свой perl script в EnScryption.com. Этот сайт будет инкапсулировать ваш код perl таким образом, чтобы заставить код работать слишком много. И каждый, кто хочет нажать и продолжить попытки проникнуть в ваш "защищенный" код, будет сообщен вам.

Или вы можете использовать команду openssl, чтобы скрыть весь ваш script. Но вам нужно будет предоставить пароль пользователю, чтобы они могли его запустить... что, конечно же, побеждает цель.

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