
В этот прекрасный осенний выходной, будем компилировать bash скрипт в бинарный файл. Да, да! И такое возможно.
Ну и зачем? Ну например я не хочу светить свой «прекрасный» код перед коллегами, либо выдаю себя за крутого разработчика который пишет на сисиписи.
Встречаем Shc (Shell Script Compiler)
Shc принимает скрипт, который указан в командной строке и создает исходный код на C. Затем сгенерированный исходный код компилируется. Утилита shc сама по себе не является компилятором, она кодирует и шифрует сценарий оболочки.
Короче напоминает обычный криптор, для шифрования малварей от детекта антивирусами, алгоритмы схожие.
На выходе получаешь исходник на сях и готовый бинарник. Ставится все это дело так:
Проверяем:
Минус тут один, это не golang и бинарник будет работать на схожих linux системах. Но это не страшно, пишешь в readme требования к запуску и снимаешь с себя ответственность.
🐱 Страница проекта на github
Вечером увидимся, далеко не убегай. Давай🤝
tags: #linux #bash #utilites
—
💩 @bashdays
Ну и зачем? Ну например я не хочу светить свой «прекрасный» код перед коллегами, либо выдаю себя за крутого разработчика который пишет на сисиписи.
Встречаем Shc (Shell Script Compiler)
Shc принимает скрипт, который указан в командной строке и создает исходный код на C. Затем сгенерированный исходный код компилируется. Утилита shc сама по себе не является компилятором, она кодирует и шифрует сценарий оболочки.
Короче напоминает обычный криптор, для шифрования малварей от детекта антивирусами, алгоритмы схожие.
На выходе получаешь исходник на сях и готовый бинарник. Ставится все это дело так:
apt/yum install build-essential gccДавай создадим бинарник:
apt/yum install shc
shc -f test.shРядом с файлом появятся еще 2 файла:
test.sh.x
и test.sh.x.c
(первый это бинарник, второй исходник).Проверяем:
file test.sh.xУ shc есть множество ключей, к примеру ты можешь задать триальный период и бинарник будет превращаться в тыкву после определенной даты. Либо повысить уровень евристики и запутать реверс-инженера.
test.sh.x: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=c265ebae7158a2c51461e890c15fdacb1cc81cb1, for GNU/Linux 3.2.0, stripped
Минус тут один, это не golang и бинарник будет работать на схожих linux системах. Но это не страшно, пишешь в readme требования к запуску и снимаешь с себя ответственность.
Вечером увидимся, далеко не убегай. Давай
tags: #linux #bash #utilites
—