Utilizzando SHC per compilare i vostri script non proteggerli. Non ottieni più sicurezza in questo modo. Lo shc ha compilato decodifiche binarie e carica lo script in memoria quando viene avviato. Potresti quindi, subito dopo aver avviato il binario, solo segfault e recuperare il tuo script dal coredump.
Ecco uno script di esempio po 'di nome test.sh:
#! /bin/bash
echo "starting script and doing stuff"
sleep 1
echo "finished doing stuff"
compilarlo con SHC:
shc -f test.sh
avviarlo come processo in background e SEGFAULT subito:
./test.sh.x& (sleep 0.2 && kill -SIGSEGV $!)
sleep 0.2 darà al file binario il tempo sufficiente per avviare e decrittografare lo script originale. La variabile $! contiene il pid dell'ultimo processo in background avviato, quindi possiamo facilmente ucciderlo con il segnale di errore di segmentazione SIGSEGV (come kill -11 $!).
[1] + segmentation fault (core dumped) ./test.sh.x
Ora possiamo cercare la discarica per lo script originale:
cat core | strings
Abbiamo pipe i dati contenuti nel file di dump in stringhe, che poi ci mostrerà tutti i caratteri stampabili nel file e possiamo ora vedere lo script originale tra la spazzatura:
...
4.0.37(2)-release
BASH_VERSINFO
BASH_VERSINFO
release
i686-pc-linux-gnu
BASH_EXECUTION_STRING
BASH_EXECUTION_STRING
#! /bin/bash
echo "starting script and doing stuff"
sleep 1
echo "finished doing stuff"
1000
EUID
EUID
1000
...
Se lo script è abbastanza grande, forse è necessario regolare la dimensione del file core con ulimit. Abbastanza facile, vero?
Speriamo che tu abbia imparato la lezione e inizi a utilizzare un sistema di controllo della versione! (git è fantastico) – Daenyth