在許多情況下,我們需要保護我們的shell指令碼原始碼不被別人輕易檢視。這時,使用shc
工具將shell指令碼編譯成二進位制檔案是一個有效的方法。本文將詳細介紹如何線上和離線條件下安裝shc
,並將其用於編譯你的指令碼。
什麼是SHC?
shc
是一個由C語言編寫的Shell指令碼加密程式,它可以將你的指令碼編譯成二進位制可執行檔案,從而隱藏原始碼。
安裝SHC
線上安裝
如果你的機器能夠連線到網際網路,以下是在不同作業系統上安裝shc
的步驟:
-
Ubuntu:
sudo apt-get install shc
-
macOS:
brew install shc
-
CentOS:
yum install shc
離線安裝
如果你的機器無法連線到網際網路,那麼你可以在有網路的環境中下載 shc
原始碼包,然後離線安裝。
-
在有網路的環境中下載 shc 原始碼包
下載連結:https://github.com/neurobin/shc/archive/refs/tags/4.0.3.tar.gz
-
複製該檔案到目標機器
可以透過USB儲存裝置或者區域網進行傳輸。
-
在目標機器上安裝 shc
tar -xvzf shc-4.0.3.tar.gz cd shc-4.0.3
mkdir -p /usr/local/man/man1 #這步是必須的,不然安裝過程中會報錯,shc將安裝命令到/usr/local/bin/目錄下;將幫助檔案存放在/usr/local/man/man1/目錄下,如果系統中無此目錄,安裝時會報錯,可建立此目錄後再執行安裝
make sudo make install #這步要回答yes或者y,不能直接回車,否則會報錯 -
驗證安裝
安裝完成後,可以透過以下命令檢查
shc
是否已經成功安裝:shc -v
如果能看到版本資訊,則表示
shc
已經安裝成功。
使用SHC編譯指令碼
假設你有一個名為 auto.sh
的 shell 指令碼,並希望將其編譯成二進位制檔案以隱藏原始碼。只需兩步即可完成:
-
使用
shc
進行編譯在命令列中輸入以下命令:
shc -f auto.sh #“-f”選項指定需要加密的程式
此操作會生成兩個新檔案:
auto.sh.x.c
和auto.sh.x
。auto.sh.x
是可執行的二進位制檔案,而auto.sh.x.c
則是生成二進位制檔案的C原始檔。 -
執行編譯後的指令碼
你可以直接執行編譯後的二進位制檔案:
./auto.sh.x
請注意,雖然shc
可以很好地隱藏你的原始碼並防止輕度反向工程,但如果需要更高階別的保護,你可能需要將指令碼重寫為一個編譯型語言(如C、Go或Rust),或者使用專門的軟體加密工具進行封裝和加密。