Wie konvertiere ich ein Shell-Skript in eine ausführbare Binärdatei?

36

Ich möchte meine Shell-Skripte in eine ausführbare Binärdatei konvertieren, damit sie von niemand anderem bearbeitet oder gelesen werden können. Gibt es eine Möglichkeit, es in eine ausführbare Binärdatei zu konvertieren?

münchen
quelle
28
Tu es nicht!
l0b0
@ l0b0 Dieser Link nennt zwei Gründe. Der dritte Grund: Sie möchten, dass es auf Computern ausgeführt wird, auf denen der Interpreter nicht installiert ist (z. B. ein Bash-Skript auf einem Computer ausführen, auf dem nur sh installiert ist). Der vierte Grund: Aus irgendeinem Grund wird setuid root benötigt (z. B. ein Skript, mit dem der Benutzer Volumes ohne sudo mounten kann).
Calmarius

Antworten:

42

shc ist was Sie suchen. Holen Sie es sich hier: shc
Extrahieren, CD in dir makeund dann ./shc -f SCRIPT. Getan.

Alles, was Sie dazu benötigen, finden Sie hier:
SHC Howto

xx4h
quelle
8
+1 wow, das ist interessant. Beachten Sie jedoch, dass es sich bei dem beschriebenen Prozess um eine schwache Methode zum Verbergen eines Kennworts handelt. Es kann immer noch von jemandem extrahiert werden, der weiß, wie ausführbare Dateien strukturiert sind. Es wäre jedoch sehr effektiv, um ein Drehbuch vor zufälligen Beobachtern zu verschleiern. Es würde mich interessieren, ob Skripte, die auf diese Weise vorkompiliert wurden, schneller ausgeführt werden können.
Goldlöckchen
21
Beachten Sie, dass es nicht mit bash(oder shbasierend auf bash) funktioniert , wie man es tun kann: env SHELLOPTS=verbose ./script.xum den Inhalt des Skripts zu sehen. Es gibt wahrscheinlich auch einfache Möglichkeiten, mit anderen Shells umzugehen.
Stéphane Chazelas
4
Von der shc-Manpage "Leider wird es Ihnen keine Geschwindigkeitsverbesserung bringen, wie es ein echtes C-Programm tun würde." datsi.fi.upm.es/~frosal/sources/shc.html
Adam
shc wurde auf 3.9.0 aktualisiert: github.com/neurobin/shc
Jahid
Obwohl SHC Ihnen möglicherweise keine Geschwindigkeitsverbesserung bietet, die Sie sich erhoffen, bietet es die Möglichkeit, SHC selbst zu hacken, um eine bessere Übersetzung Ihres Skripts zu erhalten. Das Schreiben eines sauberen Shell-Skripts und das anschließende Verbessern von SHC kann produktiver sein, als ein C-Programm von Grund auf neu zu schreiben oder ein Shell-Skript zu falten, um es schneller zu machen.
Kaz
1

Wenn das Ziel hier darin besteht, Ihr Shell-Skript so auszublenden, dass es nicht gelesen oder geändert werden kann, versuchen Sie, es auf der folgenden Website einzufügen:

Kombinierte Verschlüsselung und Verschleierung

Wenn Sie Ihr Skript an diese Site senden, wird eine Zip-Datei für Sie erstellt. Führen Sie die folgenden Schritte aus, um eine eigenständige ausführbare Datei aus dieser ZIP-Datei zu generieren.

  1. Klicken Sie nach dem Einreichen Ihres Skripts mit der rechten Maustaste auf den Download-Link
  2. Gehen Sie zu Ihrem Unix-Host und rufen Sie den Download-Link auf
  3. Entpacken Sie die Zip-Datei
  4. cd EnScryption.com
  5. ./(Ihr-Skript.sh)

In Schritt 5 wird das Skript automatisch konfiguriert und eine eigenständige Kopie für Sie erstellt. Sie können diese eigenständige Kopie dann auf verschiedene Hosts scpen oder sie beliebig verteilen. Beachten Sie, dass Sie nach der Verschlüsselung den Namen Ihres Skripts nicht mehr ändern können. Dies ist aus Sicherheitsgründen.

Eine andere Option, die Ihnen zur Verfügung steht, ist die Entwicklung eines eigenen sicheren Verschleierungsalgorithmus. Wenn Ihr Skript portierbar sein soll, müssen Sie Tools verwenden, die auf den meisten Unix-Systemen verfügbar sind. openssl oder base64. Dies erfordert viel Zeit. Aber wenn die Motivation da ist, ist es tatsächlich möglich, das Enthüllen Ihrer Skripte unmöglich oder zumindest extrem zeitaufwändig zu machen!

Jake
quelle
12
Ich würde gegen einen solchen Service empfehlen. Sie können sich niemals sicher sein, dass sie keine Malware einschleusen, bevor Sie sie erhalten. Selbst wenn die Ersteller dies nicht selbst versuchen, kann der Angreifer seinen Server dazu bringen, solche Injektionen heimlich auszuführen.
DDNOMAD
-1

bzexe kann die Datei konvertieren und auch komprimieren

user352325
quelle
1
Ich verstehe nicht ganz, wie dies verhindern würde, dass jemand die Datei extrahiert, um das ursprüngliche Shell-Skript zu erhalten, was der Benutzer verhindern wollte. Komprimierung verbirgt nichts.
Kusalananda