Як перетворити скрипт оболонки в двійковий виконуваний файл?


36

Я хочу перетворити свої сценарії оболонки у бінарний виконуваний файл, щоб ніхто більше не міг його редагувати чи читати. Чи є спосіб перетворити його у бінарний виконуваний файл?




@ l0b0 Ця посилання згадує дві причини. Третя причина: ви хочете, щоб вона працювала на машинах, на яких не встановлений інтерпретатор (наприклад, запуск сценарію bash на машині, що має лише sh). Четверта причина: йому потрібен встановлений корінь чомусь (наприклад, скрипт, який дозволяє користувачеві монтувати томи без sudo).
Кальмарій

Відповіді:


42

shc - це те, що ви шукаєте. дістати його тут: shc
Extract, CD в dir, makeа потім ./shc -f SCRIPT. Зроблено.

Все, що потрібно для цього, ви знайдете тут:
SHC Howto


8
+1 вау, це цікаво. Тільки зауважте, що якщо процес точно такий, як описаний, це слабкий метод приховування пароля - його все одно може витягти хтось, хто знає, як структуруються виконувані файли. Однак це було б дуже ефективно для затемнення сценарію від випадкових спостерігачів. Мені було б цікаво дізнатися, чи швидше виконати заздалегідь складені сценарії.
goldilocks

21
Зауважте, що це не працює з bash(або shна основі bash), як це можна зробити: env SHELLOPTS=verbose ./script.xщоб побачити вміст сценарію. Мабуть, прості способи обійти і іншими оболонками.
Стефан Шазелас

4
З сторінки man shc, "На жаль, це не дасть тобі покращення швидкості, як справжня програма C". datsi.fi.upm.es/~frosal/sources/shc.html
Адам

shc було оновлено до 3.9.0: github.com/neurobin/shc
Джахід

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

1

Якщо метою є приховати скрипт оболонки, щоб його не можна було прочитати чи змінити, спробуйте вставити його на наступний веб-сайт:

Комбіноване шифрування та прикування

Коли ви подасте свій скрипт на цей сайт, для вас буде створений поштовий файл. Виконайте наступні дії для створення автономного виконуваного файлу з цього поштового файлу.

  1. Після подання сценарію правою кнопкою миші натисніть на посилання для завантаження
  2. Перейдіть до свого хосту Unix і перейдіть за посиланням для завантаження або (curl -O)
  3. Розпакуйте поштовий файл
  4. cd EnScryption.com
  5. ./(your-script.sh)

Крок 5 автоматично налаштує сценарій та створить окрему копію для вас. Потім ви можете скопіювати цю самостійну копію на різні хости або розповсюдити її, як вам захочеться. Зауважте, щойно зашифрований, ви не можете змінити ім'я свого сценарію. Це з міркувань безпеки.

Ще один доступний вам варіант, якщо у вас є час, - це створити власний захищений алгоритм обфускування. Якщо ваш сценарій повинен бути портативним, ви повинні використовувати інструменти, доступні в більшості систем Unix ... тобто. openssl або base64. Для цього потрібно багато часу. Але якщо мотивація є, то справді можна зробити розкриття своїх сценаріїв неможливим або, принаймні, надзвичайно багато часу!


13
Я б рекомендував проти такої послуги. Ви ніколи не можете бути впевнені, що вони не вводять у нього жодного зловмисного програмного забезпечення, перш ніж передавати його вам. Навіть якщо самі творці цього не намагаються зробити, то противник може скомпрометувати їх сервер робити таку ін'єкцію таємно.
ddnomad

"Після надсилання сценарію" - це точно протилежне захисту вашого коду.
Джузеппе Урсо

-1

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


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