Компилляция программы на PERL

Didimis

Можно ли скомпилировать программу на PERL в исполняемый файл (без трансляции в C) ?

pitrik2

имхо, ты не должен этого хотеть, а если хочешь то ты делаешь чтото не так

kruzer25

Написать интерпретатор перл на любом другом языке, который ты умеешь компилировать, засунуть в main в строку содержимое твоего скрипта + вызвать интерпретатор.
Теперь можешь компилировать получившийся файл.

oleg_n

например, человек хочет продавать программу, написанную на perl
что тут не правильного?

kruzer25

Ты, наверное, перепутал компиляцию с защитой?

oleg_n

я рассмотрел один из возможных способов защиты
и я не могу сходу придумать других причин для компиляции perl программы

0000

А у perl нет случайно нет такой вот фичи как в LUA: интерпретатору подсовываем скрипт, он переведет их в свой исполняемый формат. Т.е. можно испольнять как код, так и полученный из него фаил. Другое дело, что последний уже не читаем.
P.S. Не помню как эта штука называется.

sbs-66

можно

kruzer25

А что, компиляция каким-то образом даёт защиту?

oleg_n

каким-то даёт

geja_03

Perl2Exe is a command line program for converting perl scripts to executable files.

kruzer25

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

oleg_n

а где тут компиляция?

sbs-66

Там не исходники лежат, а байт-код. Среднестатистический пользователь не сможет с этим байткодом ничего сделать. Защита не сильно хуже, чем любая другая.

kruzer25

Там не исходники лежат, а байт-код

Некоторые компиляторы (например, Java) переводят программу не в машинный код, а в программу на некотором специально созданном низкоуровневом языке. Такой язык — байт-код — также можно считать языком машинных команд, поскольку он подлежит интерпретации виртуальной машиной.
...
Существуют программы, которые решают обратную задачу — перевод программы с низкоуровневого языка на высокоуровневый. Этот процесс называют декомпиляцией, а программы — декомпиляторами. Но, поскольку компиляция — это процесс с потерями, точно восстановить исходный код, скажем, на C++ в общем случае невозможно. Более эффективно декомпилируются программы в байт-кодах — например, существует довольно надёжный декомпилятор для Flash.
http://en.wikipedia.org/wiki/Decompiler
Защита не сильно хуже, чем любая другая
Защита ужасная - тот, кто захочет, сломает с большой вероятностью. А если автор треда при этом ещё не понимает, что именно ему даёт компиляция, и почему это может быть защитой - то сломают с практически 100% вероятностью (потому что описанный мной способ превращения перловского файла в .exe-шник для него тоже будет компиляцией).

sbs-66

Вот ты умный шо песдец. Да любую программу можно сломать. Хоть на C++ её пиши и пакуй и защиту десятиуровневую приделывай. Вопрос только в отношении ресурсов, потраченных на защиту к ресурсам, потраченным на взлом. Работать с программой, постановленной из байткода очень неприятно, и проще написать всё заново. Конечно, с дизасемлированными программами ещё хуже, но... Степень защиты реально почти такая же. Если программа будет кому-то сильно нужна - сломают, если не будет - нет. Простой обыватель ни ту, ни другую сломать не сможет, и там и там будет нужен программист для взлома.

kruzer25

А если автор треда при этом ещё не понимает, что именно ему даёт компиляция, и почему это может быть защитой - то сломают с практически 100% вероятностью (потому что описанный мной способ превращения перловского файла в .exe-шник для него тоже будет компиляцией).
Оставить комментарий
Имя или ник:
Комментарий: