如何使用SHC對Shell指令碼進行封裝和原始碼隱藏

查拉圖斯特拉麵條發表於2023-10-27

在許多情況下,我們需要保護我們的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 原始碼包,然後離線安裝。

  1. 在有網路的環境中下載 shc 原始碼包

    下載連結:https://github.com/neurobin/shc/archive/refs/tags/4.0.3.tar.gz

  2. 複製該檔案到目標機器

    可以透過USB儲存裝置或者區域網進行傳輸。

  3. 在目標機器上安裝 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,不能直接回車,否則會報錯
  4. 驗證安裝

    安裝完成後,可以透過以下命令檢查shc是否已經成功安裝:

    shc -v

    如果能看到版本資訊,則表示shc已經安裝成功。

使用SHC編譯指令碼

假設你有一個名為 auto.sh 的 shell 指令碼,並希望將其編譯成二進位制檔案以隱藏原始碼。只需兩步即可完成:

  1. 使用shc進行編譯

    在命令列中輸入以下命令:

    shc -f auto.sh    #“-f”選項指定需要加密的程式

    此操作會生成兩個新檔案:auto.sh.x.cauto.sh.xauto.sh.x是可執行的二進位制檔案,而auto.sh.x.c則是生成二進位制檔案的C原始檔。

  2. 執行編譯後的指令碼

    你可以直接執行編譯後的二進位制檔案:

    ./auto.sh.x

請注意,雖然shc可以很好地隱藏你的原始碼並防止輕度反向工程,但如果需要更高階別的保護,你可能需要將指令碼重寫為一個編譯型語言(如C、Go或Rust),或者使用專門的軟體加密工具進行封裝和加密。

相關文章