shcでシェルスクリプトをバイナリ化する
Pocket

シェルスクリプトの中身を見れないようにしようと思って調べていた所、shcというシェルスクリプトをバイナリ化するプログラムがあるようだったので使ってみる事にした。
前提として、利用にはmakeが必要なので、gccが必要。

1.インストール

まずはインストール。
こちらのページから、以下のコマンドでダウンロード、コンパイルを行う。

HTTP="http://www.datsi.fi.upm.es/~frosal/" && curl -s $HTTP | grep .tgz | awk -F\" '{print $2}' | sed 's/^.\///g' | xargs -I{} echo $HTTP{} | xargs wget
tar xzvf shc-*.tgz
cd shc-*
make
make install

 

これでインストールが完了した。

Sponsored Links

2.バイナリ化を行う

shcコマンドは、基本的に以下のようにコマンドを実行するだけで、「指定したシェルスクリプト名.x」というバイナリファイルを作成してくれる。

shc -f バイナリ化するシェルスクリプトPATH

 

実際に、以下のようなシェルスクリプトを作成し、バイナリ化してみる。

●test.sh

#!/bin/sh
echo test
echo $0
pwd
[root@BS-PUB-CENT7-01 ~]# pwd
/root
[root@BS-PUB-CENT7-01 ~]# ls -l test.sh*
-rw-r--r--. 1 root root 32  4月  6 00:35 test.sh
[root@BS-PUB-CENT7-01 ~]# cat test.sh
#!/bin/sh
echo test
echo $0
pwd
[root@BS-PUB-CENT7-01 ~]# sh test.sh
test
test.sh
/root
[root@BS-PUB-CENT7-01 ~]# shc -f test.sh
[root@BS-PUB-CENT7-01 ~]# ls -l test.sh*
-rw-r--r--. 1 root root    32  4月  6 00:35 test.sh
-rwx--x--x. 1 root root 11152  4月  6 00:37 test.sh.x
-rw-r--r--. 1 root root  9283  4月  6 00:37 test.sh.x.c
[root@BS-PUB-CENT7-01 ~]# file test.sh*
test.sh:     POSIX shell script, ASCII text executable
test.sh.x:   ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=e335100ddec4e55e908a1d62a53d2c24156f9de0, stripped
test.sh.x.c: C source, ASCII text
[root@BS-PUB-CENT7-01 ~]# ./test.sh.x
test
./test.sh.x
/root

 

確かに、シェルスクリプトをバイナリ化できた。
あまり使う機会は無いだろうけど、いつかは利用するかもしれない。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。