Come convertire uno script di shell in un eseguibile binario?


36

Voglio convertire i miei script shell in eseguibile binario in modo che nessun altro possa modificarlo o leggerlo. C'è un modo per convertirlo in un eseguibile binario?




@ l0b0 Quel link menziona due ragioni. Il terzo motivo: vuoi che funzioni su macchine su cui non è installato l'interprete (es. Eseguendo uno script bash su una macchina che ha solo sh). Il quarto motivo: ha bisogno di root setuid per qualche motivo (es. Uno script che consente all'utente di montare volumi senza sudo).
Calmarius,

Risposte:


42

shc è quello che stai cercando. prendilo qui: shc
Estrai, cd in dir, makee poi ./shc -f SCRIPT. Fatto.

Tutto ciò di cui hai bisogno per farlo, lo trovi qui:
SHC Howto


8
+1 wow, questo è interessante. Basta fare attenzione che se il processo è esattamente come è descritto, questo è un metodo debole per nascondere una password: potrebbe ancora essere estratto da qualcuno che sa come sono strutturati gli eseguibili. Tuttavia, sarebbe molto efficace per oscurare una sceneggiatura da osservatori casuali. Sarei interessato a sapere se gli script precompilati in questo modo sono più veloci da eseguire.
Riccioli d'oro,

21
Si noti che non funziona con bash(o shbasato su bash), come si può fare: env SHELLOPTS=verbose ./script.xper vedere il contenuto dello script. Probabilmente ci sono modi semplici per bypassare anche con altre shell.
Stéphane Chazelas,

4
Dalla pagina man di shc, "Sfortunatamente, non ti darà alcun miglioramento di velocità come farebbe un vero programma C." datsi.fi.upm.es/~frosal/sources/shc.html
Adam

shc è stato aggiornato alla 3.9.0: github.com/neurobin/shc
Jahid

Sebbene SHC possa non darti un miglioramento della velocità che speri, offre la possibilità di hackerare SHC stesso per ottenere una traduzione migliore del tuo script. Scrivere uno script shell pulito e quindi migliorare SHC potrebbe essere più produttivo che scrivere da zero un programma C o contorto di uno script shell per renderlo più veloce.
Kaz,

1

Se l'obiettivo qui è nascondere lo script della shell in modo che non possa essere letto o modificato, provare a incollarlo sul seguente sito Web:

Crittografia e offuscamento combinati

Quando invii il tuo script a questo sito, verrà prodotto un file zip per te. Procedere come segue per generare un eseguibile autonomo da questo file zip.

  1. Dopo aver inviato lo script, fai clic con il pulsante destro del mouse sul link per il download
  2. Vai al tuo host Unix e wget o (curl -O) il link per il download
  3. Decomprimi il file zip
  4. cd EnScryption.com
  5. ./(your-script.sh)

Il passaggio 5 configurerà automaticamente lo script e genererà una copia autonoma per te. È quindi possibile scpare questa copia autonoma su host diversi o distribuirla nel modo desiderato. Nota, una volta crittografato, non puoi cambiare il nome del tuo script. Questo per motivi di sicurezza.

Un'altra opzione a tua disposizione, se hai tempo, è quella di inventare il tuo algoritmo di offuscamento sicuro. Se il tuo script deve essere portatile, devi usare strumenti prontamente disponibili sulla maggior parte dei sistemi Unix ... ad es. openssl o base64. Ciò richiede molto tempo. Ma se la motivazione è lì, è davvero possibile rendere impossibile svelare i tuoi script o, quanto meno, richiedere molto tempo!


13
Consiglierei contro tale servizio. Non puoi mai essere sicuro che non iniettino malware prima di consegnartelo. Anche se i creatori stessi non stanno provando a farlo, l'avversario può compromettere il loro server per fare tali iniezioni in segreto.
ddnomad,

"Dopo aver inviato lo script" è esattamente l'opposto della protezione del codice.
Giuseppe Urso,

-1

bzexe può convertire e anche comprimere il file


1
Non vedo come questo impedirebbe a chiunque di estrarre il file per ottenere lo script shell originale, che è ciò che l'utente voleva impedire. La compressione non nasconde nulla.
Kusalananda
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.