Как преобразовать сценарий оболочки в двоичный исполняемый файл?


36

Я хочу преобразовать свои сценарии оболочки в двоичный исполняемый файл, чтобы никто другой не мог его редактировать или читать. Есть ли способ преобразовать его в двоичный исполняемый файл?




@ l0b0 Эта ссылка упоминает две причины. Третья причина: вы хотите, чтобы он запускался на машинах, на которых не установлен интерпретатор (например, запуск сценария bash на машине, на которой есть только sh). Четвертая причина: по какой-то причине ему нужен setuid root (например, скрипт, который позволяет пользователю монтировать тома без sudo).
Кальмарий

Ответы:


42

это то, что вы ищете. получите это здесь: shc
Extract, cd into dir, makeа затем ./shc -f SCRIPT. Выполнено.

Все, что вам нужно для этого, вы найдете здесь:
SHC Howto


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

21
Обратите внимание, что он не работает bash(или не shоснован на bash), как это можно сделать: env SHELLOPTS=verbose ./script.xчтобы увидеть содержимое скрипта. Возможно, есть и другие простые способы обхода.
Стефан Шазелас

4
Со страницы руководства shc: «К сожалению, это не даст вам никакого улучшения скорости, как в реальной программе на Си». datsi.fi.upm.es/~frosal/sources/shc.html
Адам

shc был обновлён до 3.9.0: github.com/neurobin/shc
Джахид

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

1

Если цель здесь состоит в том, чтобы скрыть свой скрипт оболочки, чтобы он не мог быть прочитан или изменен, попробуйте вставить его на следующий веб-сайт:

Комбинированное шифрование и запутывание

Когда вы отправляете свой скрипт на этот сайт, для вас будет создан zip-файл. Выполните следующие шаги, чтобы создать автономный исполняемый файл из этого zip-файла.

  1. После отправки сценария щелкните правой кнопкой мыши ссылку для скачивания.
  2. Перейдите на свой хост Unix и wget или (curl -O) ссылку для скачивания
  3. Разархивируйте zip-файл
  4. cd EnScryption.com
  5. ./(your-script.sh)

Шаг 5 автоматически настроит скрипт и создаст для вас отдельную копию. Затем вы можете скопировать эту автономную копию на другие хосты или распространить ее по своему усмотрению. Обратите внимание, что после шифрования вы не можете изменить имя своего скрипта. Это из соображений безопасности.

Если у вас есть время, есть еще один вариант - придумать свой собственный алгоритм безопасного запутывания. Если ваш сценарий должен быть переносимым, вы должны использовать инструменты, которые легко доступны в большинстве систем Unix ... т.е. openssl или base64. Это требует много времени. Но если мотивация есть, то действительно возможно сделать раскрытие ваших сценариев невозможным или, по крайней мере, чрезвычайно трудоемким!


13
Я бы порекомендовал против такой услуги. Вы никогда не можете быть уверены, что они не внедрили в него вредоносное ПО, прежде чем передать его вам. Даже если сами создатели не пытаются сделать это, тогда злоумышленник может скомпрометировать свой сервер, чтобы сделать такие инъекции тайно.
Днемад

«После отправки вашего скрипта» - это полная противоположность защите вашего кода.
Джузеппе Урсо

-1

bzexe может конвертировать, а также сжимать файл


1
Я не совсем понимаю, как это помешает кому-либо извлечь файл, чтобы получить оригинальный сценарий оболочки, что пользователь хотел предотвратить. Сжатие ничего не скрывает.
Кусалананда
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.