
В этот прекрасный осенний выходной будем компилировать Bash-скрипт в бинарный файл. Да-да! И такое возможно.
Ну и зачем? Ну, например, я не хочу светить свой «прекрасный» код перед коллегами либо выдаю себя за крутого разработчика, который пишет на сисиписи.
Встречаем 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
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
У shc есть множество ключей, к примеру, ты можешь задать триальный период, и бинарник будет превращаться в тыкву после определённой даты. Либо повысить уровень эвристики и запутать реверс-инженера.
Минус тут один: это не Golang, и бинарник будет работать на схожих Linux-системах. Но это не страшно: пишешь в README требования к запуску и снимаешь с себя ответственность.
Вечером увидимся, далеко не убегай. Давай.








Комментарии