shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SHC - Compilador Shell


From: MrBiTs
Subject: SHC - Compilador Shell
Date: Mon, 14 Feb 2005 07:50:19 -0200
User-agent: Mozilla Thunderbird 1.0 (X11/20041206)

> Ainda nao testei esse SHC, mas a ideia parece muito boa =]

Embora o desenvolvedor fale em criptografia, ele é na verdade um 
"compilador" para shell-script. Vai converter o codigo de um script em 
codigo fonte C e chamar o GCC para compilá-lo, gerando assim um módulo 
executável que irá "proteger" a sua inteligência.

Senão, vejamos:

Tomemos o script básico abaixo:

#!/bin/bash

echo "Ola, Mundo"
echo "Agora sao $(date +%H:%M) de $(date +%d/%m/%Y)"


Compilando-o temos:

$ ls -lh teste*
-rwxr-xr-x  1 mrbits mrbits   84 2005-02-14 07:31 teste.sh*
-rwxr-xr-x  1 mrbits mrbits 7.9K 2005-02-14 07:32 teste.sh.x*
-rw-r--r--  1 mrbits mrbits 8.8K 2005-02-14 07:32 teste.sh.x.c

Ou seja, um script de míseros 84 bytes vira um "executável" de 
7.9Kbytes. Temos ai quase 1000% de aumento no tamanho do arquivo final.

Qto aos tempos de execução, temos:

$ time ./teste.sh
Ola, Mundo
Agora sao 07:34 de 14/02/2005

real    0m0.077s
user    0m0.020s
sys     0m0.020s
$ time ./teste.sh.x
Ola, Mundo
Agora sao 07:34 de 14/02/2005

real    0m0.087s
user    0m0.040s
sys     0m0.030s

Obviamente isso deve crescer de acordo com o tamanho do script. Embora o 
produto seja MUITO interessante, deve-se levar em conta a sua real 
necessidade. Como o Rafael citou, um dos grandes méritos do produto é 
proteger informações. A parte interessante da coisa é que o SHC não 
trabalha com as strings "abertas" no seu codigo. Fazendo um strings 
teste.sh.x | grep -i mundo, nao temos retorno, o que significa que a 
string "Ola, Mundo" não foi gravada como plain text no codigo. Se 
tivermos um programa ola.c, e simplesmente submete-lo a gcc -o ola ola.c 
e repetirmos o comando strings ola | grep -i mundo, veremos o retorno 
"Ola, Mundo". Isso acrescenta uma segurança a mais no nosso script, 
visto que podemos fazer algo como PASSWD="senha" e essa senha não será 
mostrada no comando strings.

No geral, para quem está interessado em distribuir seus produtos mas não 
os fontes, vale o produto.


-- 
       \\|||//
       (.) (.)
--ooOO--( )--OOoo--
       MrBiTs
address@hidden
-------------------


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]