Como converter um script de shell em um executável binário?


36

Quero converter meus scripts de shell em executável binário para que ninguém mais possa editá-lo ou lê-lo. Existe uma maneira de convertê-lo em um executável binário?




@ l0b0 Esse link menciona dois motivos. A terceira razão: você deseja que ele seja executado em máquinas que não possuem o intérprete instalado (por exemplo, executando um script bash em uma máquina que possui apenas sh). O quarto motivo: ele precisa de raiz setuid por algum motivo (por exemplo, um script que permita ao usuário montar volumes sem o sudo).
Calmarius

Respostas:


42

shc é o que você está procurando. obtenha-o aqui: shc
Extrair, cd em dir makee , em seguida ./shc -f SCRIPT,. Feito.

Tudo o que você precisa fazer isso, você encontra aqui:
SHC Howto


8
+1 uau, isso é interessante. Lembre-se de que, se o processo for exatamente como está descrito, esse é um método fraco de ocultar uma senha - ainda poderá ser extraído por alguém que saiba como os executáveis ​​estão estruturados. No entanto, seria muito eficaz para ocultar um script de observadores casuais. Eu estaria interessado em saber se os scripts pré-compilados dessa maneira são mais rápidos de executar.
GOLDILOCKS

21
Observe que ele não funciona com bash(ou com shbase em bash), como se pode fazer: env SHELLOPTS=verbose ./script.xver o conteúdo do script. Provavelmente, também existem maneiras fáceis de contornar outras conchas.
Stéphane Chazelas

4
Na página de manual do shc, "Infelizmente, isso não fornecerá nenhuma melhoria de velocidade como um programa C real". datsi.fi.upm.es/~frosal/sources/shc.html
Adam

O shc foi atualizado para 3.9.0: github.com/neurobin/shc
Jahid

Embora o SHC possa não oferecer uma melhoria de velocidade que você espera, ele oferece a possibilidade de invadir o próprio SHC para obter uma tradução melhor do seu script. Escrever um script de shell limpo e, em seguida, melhorar o SHC pode ser mais produtivo do que escrever um programa C a partir do zero ou complicar um script de shell para torná-lo mais rápido.
Kaz

1

Se o objetivo aqui é ocultar seu script de shell para que ele não possa ser lido ou modificado, tente colá-lo no seguinte site:

Criptografia e Ofuscação Combinadas

Quando você envia seu script para este site, um arquivo zip será produzido para você. Execute as seguintes etapas para gerar um executável independente a partir desse arquivo zip.

  1. Após enviar seu script, clique com o botão direito do mouse no link de download
  2. Vá para o seu host Unix e wget ou (enrolar -O) o link de download
  3. Descompacte o arquivo zip
  4. cd EnScryption.com
  5. ./(seu-script.sh)

A etapa 5 configurará automaticamente o script e gerará uma cópia independente para você. Você pode então scp esta cópia autônoma para diferentes hosts ou distribuí-la como quiser. Observe que, uma vez criptografado, você não pode alterar o nome do seu script. Isto é por razões de segurança.

Outra opção disponível, se você tiver tempo, é criar seu próprio algoritmo de ofuscação seguro. Se o seu script deve ser portátil, você deve usar ferramentas prontamente disponíveis na maioria dos sistemas Unix ... ou seja. openssl ou base64. Isso requer muito tempo. Mas, se a motivação estiver presente, é realmente possível tornar impossível revelar seus scripts ou, pelo menos, consumir muito tempo!


13
Eu recomendaria contra esse serviço. Você nunca pode ter certeza de que eles não injetam nenhum malware antes de entregá-lo a você. Mesmo que os próprios criadores não estejam tentando fazê-lo, o adversário pode comprometer o servidor a fazer essas injeções secretamente.
precisa saber é o seguinte

"Depois de enviar seu script" é exatamente o oposto de proteger seu código.
Giuseppe Urso

-1

bzexe pode converter e também compactar o arquivo


1
Não vejo bem como isso impediria que alguém extraísse o arquivo para obter o script shell original, que era o que o usuário queria impedir. A compressão não está escondendo nada.
Kusalananda
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.