Jak przekonwertować skrypt powłoki na binarny plik wykonywalny?

36

Chcę przekonwertować moje skrypty powłoki na binarny plik wykonywalny, aby nikt inny nie mógł go edytować ani czytać. Czy istnieje sposób na przekonwertowanie go na binarny plik wykonywalny?

Munish
źródło
@ l0b0 Ten link wymienia dwa powody. Trzeci powód: chcesz, aby działał na komputerach, które nie mają zainstalowanego interpretera (np. Uruchamianie skryptu bash na maszynie, która ma tylko sh). Czwarty powód: z jakiegoś powodu potrzebuje setuid root (np. Skrypt, który pozwala użytkownikowi montować woluminy bez sudo).
Calmarius

Odpowiedzi:

42

shc jest tym, czego szukasz. pobierz tutaj: shc
Wyodrębnij, cd do katalogu , makea następnie ./shc -f SCRIPT. Gotowy.

Wszystko, czego potrzebujesz, aby to zrobić, znajdziesz tutaj:
SHC Howto

xx4h
źródło
8
+1 wow, to interesujące. Uważaj tylko, jeśli proces przebiega dokładnie tak, jak to opisano, jest to słaba metoda ukrywania hasła - nadal może go wyodrębnić ktoś, kto wie, jak zbudowane są pliki wykonywalne. Byłoby to jednak bardzo skuteczne, aby ukryć scenariusz przed przypadkowymi obserwatorami. Chciałbym dowiedzieć się, czy skrypty wstępnie skompilowane w ten sposób są szybsze do wykonania.
goldilocks
21
Zauważ, że to nie działa bash(lub shoparte na bash), jak można to zrobić: env SHELLOPTS=verbose ./script.xaby zobaczyć zawartość skryptu. Prawdopodobnie są też łatwe sposoby na ominięcie innych pocisków.
Stéphane Chazelas
4
Ze strony podręcznika shc: „Niestety, nie da to żadnej poprawy prędkości, tak jak zrobiłby to prawdziwy program C.” datsi.fi.upm.es/~frosal/sources/shc.html
Adam
SHC został zaktualizowany do wersji 3.9.0: github.com/neurobin/shc
Jahid
Chociaż SHC może nie dać oczekiwanej poprawy prędkości, oferuje możliwość zhakowania samego SHC, aby uzyskać lepsze tłumaczenie skryptu. Pisanie czystego skryptu powłoki, a następnie ulepszanie SHC może być bardziej produktywne niż pisanie programu C od zera lub zwoływanie skryptu powłoki, aby przyspieszyć.
Kaz
1

Jeśli celem jest ukrycie skryptu powłoki, aby nie można go było odczytać ani zmodyfikować, spróbuj wkleić go do następującej witryny:

Połączone szyfrowanie i zaciemnianie

Po przesłaniu skryptu do tej witryny zostanie utworzony plik zip. Wykonaj następujące kroki, aby wygenerować autonomiczny plik wykonywalny z tego pliku zip.

  1. Po przesłaniu skryptu kliknij prawym przyciskiem myszy link do pobrania
  2. Przejdź do swojego hosta Unix i wget lub (curl -O) link do pobrania
  3. Rozpakuj plik zip
  4. cd EnScryption.com
  5. ./(your-script.sh)

Krok 5 automatycznie skonfiguruje skrypt i wygeneruje dla ciebie samodzielną kopię. Następnie możesz scpować tę autonomiczną kopię do różnych hostów lub rozpowszechniać ją w dowolny sposób. Uwaga: po zaszyfrowaniu nie można zmienić nazwy skryptu. Jest to ze względów bezpieczeństwa.

Inną dostępną opcją, jeśli masz czas, jest wymyślenie własnego bezpiecznego algorytmu zaciemniania. Jeśli twój skrypt ma być przenośny, musisz użyć narzędzi, które są łatwo dostępne w większości systemów uniksowych ... tj. openssl lub base64. To wymaga dużo czasu. Ale jeśli motywacja jest obecna, rzeczywiście jest możliwe, aby odsłonięcie skryptów było niemożliwe, a przynajmniej wyjątkowo czasochłonne!

Jake
źródło
12
Odradzałbym taką usługę. Nigdy nie możesz być pewien, że nie wprowadzają do niego żadnego złośliwego oprogramowania przed przekazaniem go tobie. Nawet jeśli sami twórcy nie próbują tego zrobić, przeciwnik może narazić swój serwer na potajemne robienie takich zastrzyków.
ddnomad
-1

Bzexe może konwertować, a także kompresować plik

użytkownik352325
źródło
1
Nie bardzo rozumiem, w jaki sposób uniemożliwiłoby to każdemu rozpakowanie pliku w celu uzyskania oryginalnego skryptu powłoki, czego chciał użytkownik. Kompresja niczego nie ukrywa.
Kusalananda