LINUX.ORG.RU

Кто использует shc?

 , ,


1

2

Вообщем то идея компилять шелл хороша в определённых случаях, потестил на паре десятков скриптов вроде ничего, но терзают смутные сомнения что чего то там не то? Кто на грабли наступал?

★★★★★

Походу никто не в курсе :(

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

Ага, я позже на даты посмотрел.
Вот еще интересное описание:

shc project is a generic shell script compiler.

It takes a script which is specified on the command line and produces C source code.

The generated source code is then compiled and linked to produce a stripped binary executable.

shc itself is not a compiler such as cc, it rather encodes and encrypts a shell script and generates C source code with the added expiration capability.

It then uses the system compiler to compile a stripped binary which behaves exactly like the original script.

Upon execution, the compiled binary will decrypt and execute the code with the shell -c option.

Unfortunatelly, it will not give you any speed improvement as a real C program would.

shc's main purpose is to protect your shell scripts from modification or inspection.

You can use it if you wish to distribute your scripts but don't want them to be easily readable by other people.

Если лень переводить (как мне), то кратко: shc не дает преимуществ C в скорости, однако позволяет скрыть от конечного пользователя внутренности скрипта. Можно использовать для распространения своих скриптов (для продажи, например) под проприетарными лицензиями. При компиляции сжимает бинарник (сойдет за обфускацию). Хотя по поводу лицензирования полученных бинарников есть сомнения. Надо смотреть лицензию проекта.

delete83 ★★
()
Ответ на: комментарий от delete83

В общем, проект интересный, но для специфичных задач. Дома пользы не принесет. Возможностей shell-скриптинга не уменьшает, потому что банально переводит конструкции shell в код на C, а потом скармливает полученный код системному компилятору (биндинг на cc).

delete83 ★★
()
Ответ на: комментарий от delete83

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

Dron ★★★★★
() автор топика
Ответ на: комментарий от delete83

для специфичных задач

Ты прав

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

И то и то.

Да нету там скорости. Он просто скрипт шифрует в блоб и аттачит к бинарнику, который его просто разворачивает при исполнении и скармливает тому же шеллу.

baverman ★★★
()
Ответ на: комментарий от baverman

Да нету там скорости

Точно,ты прав , только сейчас сырцы глянул. Да и hexdump из бинарников всё чёрным по белому показывает,начинаю сомневаться в нужности shc.С другой стороны вот если бы он конвертил в чистый си другое дело, но думаю в этом направлении он не пойдёт. Эх надо подумать.

Dron ★★★★★
() автор топика

Подумал, а ну нах его, если компилять то сишкой обойдусь.

Dron ★★★★★
() автор топика
Ответ на: комментарий от delete83

В смысле, на haskell сделать кодогенератор, создающий код на Си для заданного shell-скрипта, а затем компилирующий этот код.

delete83 ★★
()
Ответ на: комментарий от delete83

Не знай не знай, по мне легче на Си написать транслятор bash-->С во многом используя код самого bash. Думаю такой вариан оочень даже возможен. Хотя транслятор вообще пох на чём писать по моему хоть на том же баше.

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

Транслятор лучше писать на том, на чём легко написать парсер и претипринтер. А ещё лучше на том, на чём и то и другое уже написано и вполне доступно. То есть bash тут ну никак не подходит.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

Если чисто конвертить код то подойдёт что угодно, а вот для остального си .Хотя всё же лучше на си всё и сразу.

Dron ★★★★★
() автор топика
Ответ на: комментарий от zolden

Незнал, но больно zsh навороченый мне совместимост нужна.

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

А как ты собираешься «чисто конвертить код»? Ловить куски синтаксиса регулярными выражениями? Писать парсер на C сложно. Писать парсер на bash вообще задача любопытная. Я сходу не придумаю как изобразить на bash'е AST. И кстати, о каком всём остальном шла речь?

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

1-Использовать исходники самого bash. 2-Ловить куски не правильно ,надо код весь разворачивать так как дочерние процессы и тому подобное всё сломают наверное.

Писать парсер на bash вообще задача любопытная

Ну да тут ты прав весело наверное будет . Пишу и думаю ,а что если взять bash целиком и все его функции снабдить выводом аля Куайн, а что думаю идея не плохая и особых заморочек не надо. То есть выполняется скрипт и за одно выплёвывает исходник на си.

Dron ★★★★★
() автор топика

К слову Francisco Rosales написал мне следующее

It is very stable now shc-3.8.9 I have no intention to further develop shc.

То есть он решил что добился своего и развитию проект не подлежит. Ну по идее своих целей он добился.

Dron ★★★★★
() автор топика
Ответ на: комментарий от no-such-file

Придумали. Однако bison тоже довольно сложен в использовании, а код который он генерит как минимум страшен и временами опасен. Нет, ничего страшного и пользоваться можно, но такой jff'ный проект как компилятор shell в C я бы на нём писать не стал из-за недостатка fun'а.

KblCb ★★★★★
()
Ответ на: комментарий от Dron

Использовать парсер самого bash'а это и правда метод. Если найдёшь ппринтер для C на C, в принципе всё остальное будет не очень сложно, хотя трудоёмко. Ну и будет отличный повод почитать man bash от начала и до конца.

KblCb ★★★★★
()
Ответ на: комментарий от Dron

Кстати, следующим шагом является JIT компилятор bash'а на bash'е.

KblCb ★★★★★
()

Если хочется скорости от шелла, то обычно пилят нечто вроде libbash (выглядит заброшенным после gsoc). А обфускация кода выглядит бредом, на баше никто серьёзный софт не пишет.

zsh более универсален, чем libbash и умеет 100% фич bash/sh.

x3al ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.