Existe um ofuscador de código para PHP? [fechadas]


212

Alguém já usou um bom ofuscador para PHP? Eu tentei alguns, mas eles não funcionam para projetos muito grandes. Eles não podem manipular variáveis ​​incluídas em um arquivo e usadas em outro, por exemplo.

Ou você tem outros truques para impedir a propagação do seu código?


11
Tem certeza de que precisa?
Animador

5
@ StevenA.Lowe: cuidado para não tirar sarro do PHP. :-)
Marco Demaio 22/03

89
Mais uma pergunta realmente boa, relacionada à programação construtiva, no formato perfeito de perguntas e respostas, que é encerrada como não construtiva. Shame on estouro de pilha ...
Petr

6
Isso é estouro de pilha. A única coisa mais prolífica do que as perguntas fechadas que não devem ser encerradas são as chamas do usuário quando alguma babaca pobre chega aqui e pede ajuda.
Mac

2
Se você acha que isso não deve ser fechado, vote para reabrir.
Ira Baxter

Respostas:


240

Você pode tentar proteger o PHP, que é um ofuscador PHP gratuito para ofuscar seu código PHP.
É muito agradável, fácil de usar e também gratuito.
EDIT: Este serviço não está mais ativo.

Quanto ao que os outros escreveram aqui sobre não usar ofuscação, porque ela pode ser quebrada, etc:
só tenho uma coisa para respondê-la - não tranque a porta da sua casa porque qualquer pessoa pode trancá-la.
É exatamente esse o caso, a ofuscação não visa impedir 100% de roubo de código. Ele só precisa torná-lo uma tarefa demorada, para que seja mais barato pagar o codificador original. Espero que isto ajude.


105
+1 por apontar o fato de que a ofuscação visa torná-la mais difícil, não impossível.
Ashkan Kh. Nazary

3
observe que criptografar o código-fonte em vez de ofuscá-lo também não impossibilita a descriptografia, é muito difícil fazê-lo.
21812 xorinzor

9
Tentei, mas não gostei. Ele muda apenas os nomes das variáveis, não remove os comentários. #
1001

1
@Schwern, deixar a porta destrancada em seguida, contratar Columbo e realmente um bom advogado, para cobrir-se;)
David Newcomb

2
@ David Newcomb - Quem quer pagar um advogado muito bom quando você pode simplesmente trancar a porta?
azoundria

109

As pessoas oferecerão ofuscadores, mas nenhuma ofuscação pode impedir que alguém chegue ao seu código. Nenhum. Se o seu computador puder executá-lo ou, no caso de filmes e músicas, se ele puder ser reproduzido, o usuário poderá fazê-lo. Mesmo compilá-lo no código da máquina apenas torna o trabalho um pouco mais difícil. Se você usa um ofuscador, está se enganando. Pior, você também está impedindo seus usuários de corrigir bugs ou fazer modificações.

As empresas de música e cinema ainda não chegaram a um acordo com isso, ainda gastam milhões em DRM.

Em linguagens interpretadas como PHP e Perl, é trivial. O Perl costumava ter muitos ofuscadores de código, então percebemos que você pode descompilá-los trivialmente.

perl -MO=Deparse some_program

O PHP tem coisas como DeZender e Show My Code .

Meu conselho? Escreva uma licença e procure um advogado. A única outra opção é não fornecer o código e executar um serviço hospedado.

Veja também a entrada perlfaq sobre o assunto .


220
Eu concordo principalmente com você, mas o OP pediu uma recomendação do produto, não uma palestra sobre os méritos do código aberto.
Eli

36
Não tem nada a ver com o código-fonte aberto, que consiste em misturar o código e não apenas ser capaz de vê-lo. A realidade é que qualquer código ou dado que é executado na máquina do usuário é transparente em última análise, independentemente de como você o compila, ofusca ou criptografa, ponto final. O OP precisa entender isso.
214 Schwern

7
@ JamShady: Ofuscação não significa que você não pode consertar bugs ou fazer modificações. Se você estupidamente ofuscar o código-fonte, jogue fora o original e insistir em manter o resultado ofuscado, sim, você não poderá fazer nada. Bons ofuscadores insistem em que você retenha seu código e o mapeamento para o resultado obsoleto; você pode depurar / modificar seu código original, enviar patches ofuscados para seus clientes e até diagnosticar os problemas dele usando o mapa para converter as reclamações ofuscadas em legíveis. Ele não tem o mapa, o que torna isso seguro.
Ira Baxter

34
Pergunta: Como, Resposta: Você não deve = não é útil
cmc

26
@cmc Estou confiante de que muitas pessoas responderão diretamente à pergunta, portanto não há perda em adotar uma abordagem diferente. Metade do ponto de perguntar a um especialista é que eles sabem quando você está fazendo a pergunta errada para resolver o problema real. Esta é uma aplicação dos "5 porquês". pt.wikipedia.org/wiki/5_Whys O verdadeiro problema / pergunta é "como faço para impedir que as pessoas possam ler / roubar meu código PHP". A resposta é se você enviar o código que não puder, mas poderá perder muito tempo e dinheiro tentando e obter uma falsa sensação de segurança. Isso não foi mais útil do que uma lista de ofuscadores?
Schwern 15/07

31

Nada será perfeito. Se você quer apenas algo para parar os não programadores, aqui está um pequeno script que escrevi, você pode usar:

<?php
$infile=$_SERVER['argv'][1];
$outfile=$_SERVER['argv'][2];
if (!$infile || !$outfile) {
    die("Usage: php {$_SERVER['argv'][0]} <input file> <output file>\n");
}
echo "Processing $infile to $outfile\n";
$data="ob_end_clean();?>";
$data.=php_strip_whitespace($infile);
// compress data
$data=gzcompress($data,9);
// encode in base64
$data=base64_encode($data);
// generate output text
$out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>';
// write output text
file_put_contents($outfile,$out);

19
Impressionante? Cada página vem com a solução completa para obter a fonte: execute "gzuncompress (base64_decode ($ a))". Sim, isso interromperá os não programadores. Mas o código fonte original interromperá os não programadores, quem precisa de codificação para isso? A única pessoa que vai analisar isso com a intenção de fazer engenharia reversa é um programador PHP.
Ira Baxter

2
Na maioria das vezes, os não programadores tentam pesquisar algumas seqüências de código-fonte que desejam alterar. Também estou procurando uma solução que só impeça a mudança de código-fonte de não-programadores, por exemplo, nome de domínio, nome do banco de dados, usuários etc.
Asad kamran

Esta é uma resposta muito útil para mim. Estou interessado apenas em impedir que o usuário abra facilmente meu "database.php" no bloco de notas e veja meu nome de usuário e senha do banco de dados.
TimH - Codidact

20

Não tenho certeza se você pode rotular a ofuscação de um idioma interpretado como inútil (não consigo adicionar um comentário à postagem de Schwern, então aqui vai uma nova entrada).

Eu acho que é um pouco míope supor que você conhece todos os cenários possíveis em que alguém gostaria de ofuscar código, e você pressupõe que alguém estará realmente disposto a fazer o possível para ver esse código depois de ofuscado. Considere o meu cenário atual:

Eu trabalho para uma empresa de consultoria que está desenvolvendo um site grande e bastante sofisticado, baseado em PHP. O projeto será hospedado no servidor de um cliente que hospeda outros sites desenvolvidos por outras consultorias. Tecnicamente, qualquer código que escrevemos é de propriedade do cliente, portanto não podemos licenciá-lo. No entanto, qualquer outra consultoria (concorrente) com acesso ao servidor pode copiar nosso código sem obter permissão do cliente primeiro. Portanto, temos um motivo genuíno de ofuscação - fazer o esforço necessário para que um concorrente compreenda nosso código mais do que o esforço de criar uma cópia de nosso trabalho do zero.


16

Veja o nosso SD Thicket PHP Obfuscator para obter um ofuscador que funcione bem com conjuntos de páginas arbitrariamente grandes. Ele opera principalmente codificando nomes de identificadores. Com aplicativos modestos a grandes, isso pode tornar o código extremamente difícil de entender, que é o objetivo todo.

Ele não desperdiça energia em esquemas "eval (decodificar ( código de programação codificado ))", que muitos "ofuscadores" do PHP fazem [estes são "codificadores", não "ofuscadores"], porque qualquer torrão pode encontrar essa chamada e execute o eval-decode ele mesmo e obtenha o código decodificado.

Ele usa um analisador preciso da linguagem para processar o PHP; ele informará se o seu programa é sintaticamente inválido. Mais importante, ele conhece toda a linguagem com precisão; ele não ficará perdido ou confuso e não quebrará seu código (exceto o que acontece se você ofuscar "incorretamente", por exemplo, falha em identificar a API pública do código corretamente).

Sim, ofusca identificadores de forma idêntica nas páginas; se não fizesse isso, o resultado não funcionaria.


1
Sinalizador: você pode ter a cortesia de dizer por que sinalizou isso. Responde diretamente à pergunta do OP, incluindo sua questão específica.
Ira Baxter

Pelo que posso dizer, é um EXE que roda apenas no Windows? Pelo menos o eval é um arquivo .exe ...
Craig Jacobs

O arquivo eval é um instalador baseado em .exe. A verdade complicada é que o produto instalado geralmente é executado a partir de um script .cmd porque há uma linguagem de programação paralela por baixo, mas você nunca verá isso. Ele foi projetado principalmente como um produto Windows; no entanto, se você instalá-lo no Linux com Wine, ele será executado com scripts .sh instalados como se fosse uma ferramenta nativa do Linux. Se você usar a parte da GUI (opcional, a maioria das pessoas deseja executá-la como um script em um processo de construção de produção), ela usa o Java nativo no Windows e o Java nativo no Linux.
Ira Baxter

É verdade que o Thicket exige complementos no espaço de hospedagem? Se sim, como isso é instalado em uma hospedagem compartilhada?
Stephen Adelakun

@StephenAdelakun: O Thicket não requer alterações no servidor. Faça o download e verifique a documentação.
Ira Baxter

14

O melhor que eu vi é o Zend Guard .


2
O SD PHP Obfuscator é igualmente bom e custa cerca de 1/5.
Ira Baxter

1
@SalmanPK E a razão para isso deve ser óbvia?
The Pellmeister

@SalmanPK Requer um addon para o espaço de hospedagem na web. Zend Guard provavelmente também. Não tenho certeza qual é o mais popular. Enfim, o problema é que reduz o seu público potencial.
James P.

1
O PHP Obfuscator da SD converte tudo para minúsculas. Isso será um problema se você estiver usando uma estrutura.
Amil Waduwawara

1
@ JamesPoulson: Não está claro se sua observação está apontada para o ofuscador SD PHP. Só para deixar claro, ele não requer nenhum complemento para o espaço de hospedagem na web.
Ira Baxter

10

Experimente este: http://www.pipsomania.com/best_php_obfuscator.do

Recentemente, escrevi em Java para ofuscar meus projetos PHP, porque como não encontrei nenhum bom e compatível pronto escrito na rede, decidi colocá-lo online como saas, para que todos o usassem gratuitamente. Ele não altera nomes de variáveis ​​entre scripts diferentes para obter compatibilidade máxima, mas os ofusca muito bem, com lógica aleatória, todas as instruções também. Cordas ... tudo. Eu acredito que é muito melhor do que esse codeeclipse de buggy, que é a propósito escrito em PHP e muito lento :)


Parece bom ... mas é seguro? Quero dizer, outras pessoas podem descriptografá-lo facilmente?
Shasi kanth

Posso garantir que, neste momento, NINGUÉM pode ofuscar o código ofuscado por esse ofuscador.
precisa saber é o seguinte

3
[citação necessário] - a criptografia de homebrew é segurança através da obscuridade, o que não é absolutamente nenhuma segurança.
22611 Chris Baker

8
"Posso garantir que, neste momento, ninguém pode ofuscar o código" Até PHP? Se o PHP puder fazer isso, alguém também poderá. Olhando como o código de exemplo no seu site, em algum lugar você terá uma declaração de avaliação que despeja o código, altere para um eco e seu código será exibido.

3
AVISO: Este método pode ser trivialmente decodificado volta para os nomes das variáveis originais, consulte: lombokcyber.com/en/detools/decode-pipsomania
Zane Hooper

3

Ofuscador Thicket ™ para PHP

A ferramenta PHP Obfuscator embaralha o código-fonte PHP para dificultar a compreensão ou a engenharia reversa (exemplo). Isso fornece proteção significativa para a propriedade intelectual do código-fonte que deve ser hospedada em um site ou enviada a um cliente. É um membro da família de SD de Ofuscadores de Código Fonte.


TrueBug.com está inacessível. Sei que estou postando um comentário após mais de três anos, mas você pode ajudar com o novo URL do trueBug, se houver?
Stephen Adelakun

@StephenAdelakun Você só precisa do TrueBug? Use isto: TruBug PHP Obfuscator .
Praveen Kumar Purushothaman

Desculpe, o link não está funcionando. Ou eu estou esquecendo de alguma coisa?
Stephen Adelakun 8/03/16

@StephenAdelakun Acabei de verificar agora, ele funciona.
Praveen Kumar Purushothaman

1
@StephenAdelakun Por que apenas isso? :(Isso é software morto de qualquer maneira. Existem melhores e impressionantes agora, certo?
Praveen Kumar Purushothaman /

2

O uso do SourceGuardian é bom, pois vem com uma GUI legal e fácil de usar.

Mas esteja ciente:

Preste atenção aos seus termos de licenciamento - bastante engraçados.

  • Você só pode executar 1 por máquina, até que seja aceitável
  • Se você deseja executar a interface da linha de comando em outra máquina, diga seu servidor da Web, VOCÊ PRECISA DE OUTRA LICENÇA (Sim, é engraçado e também posso ouvi-lo rindo).

2
Isso parece normal para mim! 2 máquinas = 2 licenças! Geralmente, o que as pessoas fazem é codificar tudo em uma máquina e depois enviá-lo para as outras.
David Newcomb

@davidnewcomb você parece não entender o ponto. Você geralmente criptografa o código em sua máquina de desenvolvimento antes de enviá-lo. Caso você precise fazer isso online, a interface da linha de comandos também requer uma licença adicional, o que obviamente não está certo. Você costuma colocar a interface da linha de comando no servidor da Web e não na sua caixa local.
Herr

2
TL; DR boa proteção, termos estúpidos de licenciamento.
Herr

1
Deve ter 1 licença por usuário, não por máquina.
precisa saber é o seguinte

@ beppe9000 Concordo totalmente!
Herr

-16

A ofuscação está apenas adicionando outra camada de possíveis bugs e vulnerabilidades de segurança ao seu programa. Por favor, não faça isso.

O tipo de pessoa que escreve software de ofuscação geralmente parece muito superficial e pouco qualificado.

Se o seu código for "ótimo", os crackers se esforçarão muito para difundi-lo, independentemente de estar oculto ou não. Se ninguém sabe / se importa com o seu código, provavelmente também não.


7
Não qualificado? Com base em quais evidências? Eu os escrevo. Confira minha biografia antes de fazer generalizações abrangentes. semanticdesigns.com/Company/People/idbaxter
Ira Baxter

5
@Ira: Minha declaração ainda é válida. O código mais ofuscado pode ser quebrado em poucos minutos. Eu quis dizer especificamente que a maioria das pessoas que faz isso não é qualificada, nem todas . A primeira coisa que veio à mente foi o Ioncube e, com certeza, tinha uma vulnerabilidade publicada: osvdb.org/show/osvdb/41708 . Por outro lado, você provavelmente poderia culpar parcialmente os obscuros requisitos de segurança do PHP.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

3
A ofuscação, se feita com uma ferramenta confiável, nada muda na confiabilidade de um programa. A compilação binária é uma espécie de ofuscação extrema e, no entanto, acho que você está confiante de que o mecanismo PHP do Zend é confiável. (Ocultação ou compilação feita com ferramentas ruins não deve contar).
Ira Baxter

1
qualquer pessoa com meio cérebro sabe que o php está com dificuldades (leia-se "inexistente") no mercado de software corporativo do mundo real, porque não é ofuscado pelo asp.net. Estou tão cansado de evangelistas de mente fraca dizendo qualquer outra coisa. (e sim, é isso que a ignorância voluntária é) O código-fonte aberto existe há muito tempo e foi experimentado e encontrado com muita freqüência, para que exista outra conclusão além desta: hobby? Código aberto. Trabalho? Criptografar. Somente tolos / idiotas / pessoas que vivem em uma bolha / têm um rico pai sempre podem pensar em algo diferente.
Conners

2
Esse comentário é quase incompreensível para mim, mas parece estar implicando que não faz sentido vender software de código aberto ou software baseado em software de código aberto. Caso você não tenha notado, o Java é "corporativo", de código aberto e com o mesmo sucesso que o .NET. minha empresa ganha milhões de dólares e nunca tivemos que usar ofuscação. Pergunte a si mesmo: qual a vantagem de vender software se você não pode apoiá-lo / melhorá-lo (ou seja: você acabou de quebrar o software de outra pessoa e revendê-lo)?
31712 #
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.