Компиляция bash скриптов

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Компиляция bash скриптов

Сообщение ya »

Компиляция bash скриптов

Как известно, скрипты bash используются в открытом виде, но иногда может встать вопрос о том, чтобы спрятать исходных код bash скрипта, чтобы его не мог никто подсмотреть или изменить без вашего ведома. Для этого можно откомпилировать bash скрипт в машинный код с помощью программы shc, которую можно скачать по адресу http://www.datsi.fi.upm.es/~frosal/ На момент написания статьи можно скачать shc-3.8.9b.tgz (зеркало)

Теперь расскажу, как воспользоваться этой программой, чтобы скрыть исходный код bash скрипта путем его компиляции в исполняемый файл.
1-й этап. Подготовка программы

Скачаный архив сначала нужно распаковать командой tar xvf shc-3.8.9b.tgz, в результате получим папку с программой. Однако, она еще не готова к использованию, т.к. представляет собой просто сишную программу (файл shc-3.8.9b.с), поэтому ее необходимо сначала откомпилировать. Для компиляции исходников нужны пакеты "build-essential" (в системах на основе Debian) или "Development Tools" (CentOS). Для их установки можно использовать apt-get install build-essential для Debian и Ubuntu или yum groupinstall "Development Tools" для CentOS.

Далее выполняем компиляцию командой make shc. Теперь компилятор bash-скриптов готов к применению.
2-й этап. Компиляция bash-скрипта

Чтобы откомпилировать bash-скрипт, его нужно скопировать в папку с программой и выполнить команду shc -f script.sh, где вместо script.sh вы укажете свой bash-скрипт. После выполнения команды вы получите 2 файла: script.x.c - это переделанный на си ваш скрипт и script.x - собственно сам откомпилированный скрипт. В этом виде он абсолютно нечитаем, но при этом полностью работоспособен, как и исходный файл.

Описанный в предыдущем абзаце способ - простейший вариант компиляции bash-скрипта, но есть еще и дополнительные, довольно интересные возможности, получаемые с помощью опций, которые сделают программу еще более гибкой.
Опции запуска компилятора shc

-e date - дата срока действия программы (перестанет работать после этой даты) в формате dd/mm/yyyy
-m message - сообщение, которое будет написано по истечение срока действия программы (пишется в кавычках)
-f script_name - файл скрипта, который нужно откомпилировать
-i inline_option - указание опции для интерпретатора командной строки (например, -e)
-x comand - выполнить команду, в формате printf (например, exec(\\'%s\\',@ARGV);)
-l last_option - последняя опция для интерпретатора командной строки
-r - уменьшить безопасность, чтобы программа выполнялась на большинстве подобный операционных систем
-v - подробный вывод информации о процессе компиляции
-D - включение отладки exec
-T - разрешить трассировку откомпилированной программы, используя strace, ptrace, truss и т.д.
-C - вывести на экран лицензию и завершить выполнение программы
-A - вывести на экран произвольную информацию и завершить выполнение программы
-h - отобразить помощь по программе

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

https://codernotes.ru/articles/bash/kompilyaciya-bash-skriptov.html
Вложения
shc-3.8.9b.tgz
(20.2 КБ) 2120 скачиваний
shc-3.8.9b.tgz
(20.2 КБ) 2120 скачиваний
Ответить