Shc (kompilator skryptów powłoki)

shc to kompilator skryptów powłoki dla systemów operacyjnych typu Unix, napisany w języku programowania C. Shell Script Compiler (SHC) koduje i szyfruje skrypty powłoki do wykonywalnych plików binarnych. Kompilowanie skryptów powłoki do plików binarnych zapewnia ochronę przed przypadkowymi zmianami i kodu źródłowego oraz jest sposobem na ukrycie kodu źródłowego skryptu powłoki.

Mechanizm

shc pobiera skrypt powłoki określony w wierszu poleceń opcją -f i tworzy kod źródłowy C skryptu z dodanym szyfrowaniem . Wygenerowany kod źródłowy jest następnie kompilowany i łączony w celu utworzenia binarnego pliku wykonywalnego. Jest to proces dwuetapowy, w którym najpierw tworzy nazwa_pliku.xc pliku skryptu powłoki nazwa_pliku . Następnie jest kompilowany za pomocą cc -$CFLAGS nazwa_pliku.xc, aby utworzyć plik binarny z kodu źródłowego C za pomocą domyślnego kompilatora C.

Skompilowany plik binarny nadal będzie zależny od powłoki określonej w shebang (np. #!/bin/sh ), dlatego shc nie tworzy całkowicie niezależnych plików binarnych.

shc sam w sobie nie jest kompilatorem, takim jak kompilator C , raczej koduje i szyfruje skrypt powłoki i generuje kod źródłowy C z dodaną możliwością wygaśnięcia. Następnie używa kompilatora systemu C do skompilowania źródłowego skryptu powłoki i zbudowania ogołoconego pliku binarnego, który zachowuje się dokładnie tak, jak oryginalny skrypt . Po wykonaniu skompilowany plik binarny odszyfruje i wykona kod z opcją powłoki -c .

Wersje

Dostępne wersje
Wersja Data wydania Zmiany
shc-3.9.3 30 lipca 2016 r obsługa i poprawka zsh dla powłoki ksh
shc-3.9.2 21 sierpnia 2015 r Dodano obsługę Busybox (flaga -B do kompilacji dla Busybox).
shc-3.9.1 03-kwi-2015 Ustaw opcję -T jako domyślną i zmień jej nazwę na -U zgodnie z logiką licznika
shc-3.9.0 01-kwi-2015 Dodanie opcji pliku wyjściowego z [-o nazwa pliku] i poprawki błędów
shc-3.8.9 04-gru-2013 Naprawiono długotrwały błąd powodujący, że źródło nie było ukryte
shc-3.8.7 10-lutego-2010 Błąd w systemach 64-bitowych z datami wygaśnięcia
shc-3.8.5 10-lutego-2010
shc-3.8.3 10-lipiec-2006 Naprawiono problemy z funkcją untraceable() we FreeBSD
shc-3.8.2 06-lip-2006 Uprawnienia do odczytu skryptu.x narażają go na deasemblację.

Uprawnienia do odczytu grupy i innych osób są teraz domyślnie usuwane.

shc-3.7 28-cze-2005 Usunięto wszystkie ciągi w skompilowanym skrypcie. Ulepszone wyjście programu i komunikaty o błędach.

Opcja -m pozwala zdefiniować komunikat o wygaśnięciu *complete*. Zaktualizowano stronę podręcznika shc.1

shc-3.6 16-cze-2005 Dwie nowe opcje:

-D włącz wywołania funkcji Debug exec. -T wyłącz niewykrywalność.

shc-3.4 19 czerwca 2003 r Usuń problem „złego wyrównania” w systemie AIX i innych systemach.

Tam, gdzie istnieje, użyj /proc/ / jak w niewykrywalnym.

shc-3.3 21-kwi-2003 Zapobiegaj prześledzeniu procesu
shc-3.2 05-sierpień-2002 Znajdź starożytne pclose, które musi być fclose
shc-3.1 05-sierpień-2002 Naprawiono błędne działanie skryptów z opcją w pierwszej linii równą „koniec opcji”

(np. #!/bin/sh -- ) GCC „ostrzeżenie: zwracany typ `main' nie jest `int'” został usunięty

shc-2.4 05-sierpień-2002

Alternatywy

  1. ^ ab Günther , Karsten. „SHC Shell Compiler » Linux Magazine” .
  2. ^ a b c „Strona podręcznika shc” . neurobin.github.io . Źródło 2015-08-25 .
  3. ^ „Indeks /~frosal/sources” .
  4. ^ a b „Kopia zarchiwizowana” . Zarchiwizowane od oryginału w dniu 2015-04-02 . Źródło 2015-04-01 . {{ cite web }} : CS1 maint: zarchiwizowana kopia jako tytuł ( link )
  5. ^ „obfuscator skryptów powłoki” .

Linki zewnętrzne