2015-06-02 2 views
0

У меня есть perl-скрипт, который зашифрован. Этот скрипт может быть скомпилирован только в том случае, если установлен Filter::decrypt. У меня есть фильтр, и я его установил, и скрипт скомпилирован без проблем, но теперь я хочу открыть этот скрипт с помощью некоторого текстового редактора и отредактировать его.Как открыть и отредактировать зашифрованный скрипт perl?

Может кто-нибудь помочь мне и рассказать мне, как я могу это сделать?

+1

'perl -MO = Deparse script.pl'? –

+2

Вы пытаетесь обойти лицензионные ограничения? [Документация модуля] (https://metacpan.org/pod/Filter::decrypt) перечисляет некоторые способы доступа к исходному коду. Сначала попробуйте их, а затем пересмотрите свой вопрос, чтобы показать, что вы пробовали и т. Д. Голосование закрывается. –

+1

Я не могу дать ответ без каких-либо подробностей - мой «ответ» должен был отнести вас к «Освоению 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

ответ

1

Лучший вариант: просто отредактируйте свою незашифрованную копию и переустановите ее.

Альтернатива: для дешифрования зашифрованного файла используйте decr (поставляется с фильтром: decrypt).

+0

Спасибо. Это решило мою проблему. – Darko1991

3

Довольно принципиально - очень сложно сделать скрипт нечитаемым, просто потому, что 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 и изменить его, чтобы он печатает расшифрованный результат.

+0

Я пробовал perl -MO = Deparse Email.pm, и это ошибка, которую я получаю: Отмена, компилятор обнаружен на /usr/lib/perl/5.18/DynaLoader.pm строке 207. Не удалось выполнить компиляцию в электронной почте. pm строка 1. BEGIN failed - компиляция отменена на Email.pm line 1. use Filter :: decrypt; – Darko1991