【轉】使用SHC加密bash腳本程序以及解密


轉自https://www.xiaohuai.com/4949

SHC代表shell script compiler,即shell腳本編譯器。通過SHC編譯過的腳本程序對普通用戶而言是不讀的,因此如果你想保護你的代碼(例如含有密鑰),則可以考慮SHC;然而有些人可以通過反向編譯的方式破解SHC加密過的腳本。

1.下載並編譯SHC

1
2
3
4
5
wget http: //www .datsi. fi .upm.es/~frosal /sources/shc-3 .8.9.tgz
tar zxf shc-3.8.9.tgz
cd shc-3.8.9
mkdir -p /usr/local/man/man1
make install

2.建立一個測試bash腳本

1
2
3
4
5
6
7
8
9
#!/bin/bash
  
echo -n "How many random numbers do you want to generate? "
read max
  
for (( start = 1; start <= $max; start++ ))
do
   echo -e $RANDOM
done

這個腳本的意思輸出幾個隨機數,你執行的時候輸入2,就輸出2個,輸入3就輸出3個。

3.使用SHC加密bash腳本

1
$ . /shc -f random.sh

之后我們可以看到多出兩個文件:

1
2
3
4
$ ll random.sh*
-rwxr-xr-x 1 lesca lesca   153 2012-05-16 06:34 random.sh*
-rwx--x--x 1 lesca lesca 10512 2012-05-16 06:34 random.sh.x*
-rw-r--r-- 1 lesca lesca 10145 2012-05-16 06:34 random.sh.x.c

random.sh 是原始的未加密的bash腳本
random.sh.x 是加密的二進制格式的bash腳本
random.sh.x.c 是random.sh的C源代碼。該文件是從random.sh轉換而來的,SHC就是通過將bash腳本轉為C語言再編譯之進行加密的。

4.執行加密的bash腳本

1
2
3
4
5
$ . /random .sh.x
How many random numbers do you want to generate? 3
15146
20741
17825

二、SHC的其他功能

一些常用參數

1
2
3
4
5
-e date (指定過期時間)
-m message  (指定過期提示的信息)
-f  script_name (指定要編譯的shell路徑)
-r  relax security  (在不同操作系統執行)
- v  Verbose compilation (輸出編譯的詳細情況)

1.設置腳本使用期限
我們可以通過SHC指定程序的有效期,過期后程序將失效,任何嘗試運行的用戶將收到錯誤消息。SHC使用-e dd/mm/yyyy來開啟該功能:

1
$ . /shc -e 31 /12/2011 -f random.sh

如果程序過期了,將會得到以下消息:

1
2
3
$ . /random .sh.x
. /random .sh.x: has expired!
Please contact your provider

結合-m “message”選項,我們可以指定發生錯誤時輸出的消息:

1
2
3
4
$ . /shc -e 31 /12/2011 -m &quot;Contact admin@lesca.me for new version of this script&quot; -f random.sh
$ . /random .sh.x
. /random .sh.x: has expired!
Contact admin@lesca.me for new version of this script

2.創建可重復發布的加密腳本
-r: 允許該腳本在同操作系統的不同硬件平台上運行
-T: 允許讓ltrace, strace那樣的程序追蹤腳本運行
-v: 輸出詳細信息
通常-r與-T一起使用,用於創建可重復發布且可追蹤的加密腳本,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ . /shc - v -r -T -f random.sh
shc shll= bash
shc [-i]=-c
shc [-x]= exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc  random.sh.x.c -o random.sh.x
shc: strip random.sh.x
shc: chmod go-r random.sh.x
  
$ . /random .sh.x
How many random numbers do you want to generate? 3
1311
19637
14891

解密:
git地址:https://github.com/yanncam/UnSHc

將unshc wget或者上傳到任意目錄
然后可執行如下命令查看幫助

1
. /unshc .sh -h

執行下面的命令進行解密(此過程可能耗時有點長,需耐心等待)

1
2
3
wget https: //www .xiaohuai.com /down/unshc .sh
chmod +x unshc.sh
. /unshc .sh script.sh.x -o script_decrypted.sh

script.sh.x文件為經過加密的二進制文件
script_decrypted.sh文件為解密后shell腳本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM