Shc takes a script, which is specified on the command line and produces C source code. The generated source code is then compiled and linked to produce a stripped binary executable.
The compiled binary will still be dependent on the shell specified in the first line of the shell code (i.e shebang) (i.e. #!/bin/sh), thus shc does not create completely independent binaries.
shc itself is not a compiler such as cc, it rather encodes and encrypts a shell script and generates C source code with the added expiration capability. It then uses the system compiler to compile a stripped binary which behaves exactly like the original script. Upon execution, the compiled binary will decrypt and execute the code with the shell -c option.
./configure make sudo make install
make fails due to automake version, run
./autogen.sh before running the above commands.
sudo add-apt-repository ppa:neurobin/ppa sudo apt-get update sudo apt-get install shc
If the above installation method seems like too much work, then just download a compiled binary package from release page and copy the
shc binary to
shc.1 file to
shc [options] shc -f script.sh -o binary shc -U -f script.sh -o binary # Untraceable binary (prevent strace, ptrace etc..) shc -H -f script.sh -o binary # Untraceable binary, does not require root (only bourne shell (sh) scripts with no parameter)
The hardening flag -H
This flag is currently in an experimental state and may not work in all systems. This flag only works for default shell. For example, if you compile a bash script with
-H flag then the resultant executable will only work in systems where the default shell is bash. You may change the default shell which generally is
/bin/sh which further is just a link to another shell like bash or dash etc.
-H does not work with positional parameters (yet)
./configure make make check
The one (and I hope the only) limitation using shc is the _SC_ARG_MAX system configuration parameter. It limits the maximum length of the arguments to the exec function, limiting the maximum length of the runnable script of shc.
!! – CHECK YOUR RESULTS CAREFULLY BEFORE USING – !!