Довольно принципиально - очень сложно сделать скрипт нечитаемым, просто потому, что perl является интерпретированным языком. Точно, как распутать что-то, это скорее вопрос о том, как он запутался в первую очередь.
Поэтому я бы предложил в качестве первого порта захода - просмотрите Mastering Perl
, в котором есть целая глава, посвященная разборке кода perl.
Однако, если вы просто посмотрите на страницу модуля Filter::decrypt
, это указывает на несколько мест, которые модуль просто не может покрыть - вы можете действительно защищать только код, если вы в первую очередь контролируете интерпретатор perl. Однако все, что он предлагает, это:
Разделите двоичный файл Perl, чтобы удалить все символы.
Создайте расширение расшифровки, используя статическое соединение. Если расширение предоставляется как динамический модуль, ничто не мешает кому-либо связать его во время выполнения с измененным двоичным кодом Perl.
Не строите Perl с -DDEBUGGING. Если вы это сделаете, ваш источник может быть найден с помощью опции командной строки -Dp
.
Образец фильтра содержит логику для определения опции DEBUGGING.
Не создавайте Perl с поддержкой отладки C.
Не используйте фильтр дешифрования в качестве подпроцесса (например, фильтр источника cpp). Можно заглянуть в трубу, которая подключается к подпроцессу.
Убедитесь, что компилятор Perl не используется.
В разделе BOOT: decrypt.xs содержится код, показывающий, как определить наличие компилятора. Убедитесь, что вы включили его в свой модуль.
Предполагая, что вы не предприняли никаких шагов, чтобы определить, когда используется компилятор, и у вас есть зашифрованный Perl-скрипт под названием «myscript.pl», вы можете получить доступ к исходному коду внутри него с помощью Perl-компилятора, например, это
perl -MO=Deparse myscript.pl
Обратите внимание, что даже если вы включили BOOT: тест, он по-прежнему можно использовать модуль Deparse, чтобы получить исходный код для отдельных подпрограмм.
Итак:
perl -MO=Deparse yourscript
perl -Dp yourscript
Если они не работают - смотреть на локальной копии Filter::decrypt
и изменить его, чтобы он печатает расшифрованный результат.
'perl -MO = Deparse script.pl'? –
Вы пытаетесь обойти лицензионные ограничения? [Документация модуля] (https://metacpan.org/pod/Filter::decrypt) перечисляет некоторые способы доступа к исходному коду. Сначала попробуйте их, а затем пересмотрите свой вопрос, чтобы показать, что вы пробовали и т. Д. Голосование закрывается. –
Я не могу дать ответ без каких-либо подробностей - мой «ответ» должен был отнести вас к «Освоению Perl», в котором есть глава об de-obfuscation. http://www.masteringperl.org/ Или посмотрите этот ответ на нечто похожее: http://stackoverflow.com/questions/30287667/how-can-i-de-obfuscate-or-decode-this-perl- code/30299790 # 30299790 Если вам нужен конкретный ответ, нам понадобится немного подробнее. – Sobrique