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?

user29593
fonte
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.

yossi
fonte
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 .

Schwern
fonte
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);
John
fonte
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.

tomfumb
fonte
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.

Ira Baxter
fonte
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 .

CMS
fonte
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 :)

PatlaDJ
fonte
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.

Praveen Kumar Purushothaman
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).
Herr
fonte
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.

L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳
fonte
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 #