Компилляция программы на PERL
имхо, ты не должен этого хотеть, а если хочешь то ты делаешь чтото не так
Написать интерпретатор перл на любом другом языке, который ты умеешь компилировать, засунуть в main в строку содержимое твоего скрипта + вызвать интерпретатор.
Теперь можешь компилировать получившийся файл.
Теперь можешь компилировать получившийся файл.
например, человек хочет продавать программу, написанную на perl
что тут не правильного?
что тут не правильного?
Ты, наверное, перепутал компиляцию с защитой?
я рассмотрел один из возможных способов защиты
и я не могу сходу придумать других причин для компиляции perl программы
и я не могу сходу придумать других причин для компиляции perl программы
А у perl нет случайно нет такой вот фичи как в LUA: интерпретатору подсовываем скрипт, он переведет их в свой исполняемый формат. Т.е. можно испольнять как код, так и полученный из него фаил. Другое дело, что последний уже не читаем.
P.S. Не помню как эта штука называется.
P.S. Не помню как эта штука называется.
можно
А что, компиляция каким-то образом даёт защиту?
каким-то даёт
Perl2Exe is a command line program for converting perl scripts to executable files.
Ну вот представь себе экзешник, основной частью которого является интерпретатор, а исходники твоей программы лежат там же как ресурс, который подсовывается интерпретатору.
Где тут защита?
Где тут защита?
а где тут компиляция?
Там не исходники лежат, а байт-код. Среднестатистический пользователь не сможет с этим байткодом ничего сделать. Защита не сильно хуже, чем любая другая.
Там не исходники лежат, а байт-код
http://en.wikipedia.org/wiki/Decompiler
Некоторые компиляторы (например, Java) переводят программу не в машинный код, а в программу на некотором специально созданном низкоуровневом языке. Такой язык — байт-код — также можно считать языком машинных команд, поскольку он подлежит интерпретации виртуальной машиной.
...
Существуют программы, которые решают обратную задачу — перевод программы с низкоуровневого языка на высокоуровневый. Этот процесс называют декомпиляцией, а программы — декомпиляторами. Но, поскольку компиляция — это процесс с потерями, точно восстановить исходный код, скажем, на C++ в общем случае невозможно. Более эффективно декомпилируются программы в байт-кодах — например, существует довольно надёжный декомпилятор для Flash.
Защита не сильно хуже, чем любая другаяЗащита ужасная - тот, кто захочет, сломает с большой вероятностью. А если автор треда при этом ещё не понимает, что именно ему даёт компиляция, и почему это может быть защитой - то сломают с практически 100% вероятностью (потому что описанный мной способ превращения перловского файла в .exe-шник для него тоже будет компиляцией).
Вот ты умный шо песдец. Да любую программу можно сломать. Хоть на C++ её пиши и пакуй и защиту десятиуровневую приделывай. Вопрос только в отношении ресурсов, потраченных на защиту к ресурсам, потраченным на взлом. Работать с программой, постановленной из байткода очень неприятно, и проще написать всё заново. Конечно, с дизасемлированными программами ещё хуже, но... Степень защиты реально почти такая же. Если программа будет кому-то сильно нужна - сломают, если не будет - нет. Простой обыватель ни ту, ни другую сломать не сможет, и там и там будет нужен программист для взлома.
А если автор треда при этом ещё не понимает, что именно ему даёт компиляция, и почему это может быть защитой - то сломают с практически 100% вероятностью (потому что описанный мной способ превращения перловского файла в .exe-шник для него тоже будет компиляцией).
Оставить комментарий
Didimis
Можно ли скомпилировать программу на PERL в исполняемый файл (без трансляции в C) ?