Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

D2th3

[Resolvido] É possível remover espações e Comentários de Código F

Recommended Posts

Amigos,

 

É possível eu remover os espaços e comentários dos fontes do PHP?

Alguém pode me dar uma idéia por onde procurar?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, mas não entendi.

 

<?
echo 1; //ISSO EH UM COMENTARIO
echo 2; #ISSO TAMBEM
echo 3; /* ISSO TAMBEM */
?>

Resultado: 123.

 

Removendo, o resultado será o mesmo.

 

<?
echo 1;
echo 2;
echo 3;
?>

Resultado: 123.

 

Era essa sua dúvida?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no estilo obfuscador ?

 

online agora, não encontrei nenhum... mas dá uma pesquisada por este termo..

o Zend faz algo semelhante.. e tem mais alguns pagos por ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, sim... Agora entendi!

 

Você pode utilizar o sistema de 'search and replace' do seu editor de texto, criando expressões regulares para fazer o serviço.

Criar a expressão é chatinho, mas depois fica tudo automatizado, daí é só correr pro abraço. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

É algo assim:

 

<?
echo 1; //ISSO EH UM COMENTARIO
echo 2; #ISSO TAMBEM
echo 3; /* ISSO TAMBEM */
?>

Fica

<? echo 1;echo 2;echo 3;?>

 

Já fiz alguns testes com o ZEND e não funcionou, fora que o software é muito caro e eu não gostei do resultado.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça com ERs como eu disse acima.

Você precisará de uma ER para retirar os comentários e espaços, e outra para alterar as variáveis, caso queira deixar ainda mais ofuscado.

 

Links que recomendo a leitura:

 

http://www.raizlabs.com/software/phpobfuscator/

http://www.htmlstaff.org/ver.php?id=2142

http://www.codeeclipse.com/index.php (esse faz o q você quer, online)

http://www.profissionaisti.com.br/2008/11/proteja-seu-codigo-fonte-php/

 

A minha ideia é fazer como nesse codeeclipse. A diferença é que automatizado. Daria inclusive para utilizar o próprio PHP para varrer determinados diretorios e gerar um sistema completamente novo, mas "encriptografado". Acho isso interessante.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só utilizar Tokenizer:

 

Código com comentários

Teste.php

<?php
/**
* Teste de remoção de comentários
*/
class Test {
/**
 * Uma propriedade qualquer que terá um valor de teste
 * @var mixed
 */
private $property;

/**
 * Construtor do objeto que irá definir o valor base da propriedade
 * @param $value mixed Um valor qualquer
 */
public function __construct( $value ){
	$this->property = $value;
}

/**
 * Recupera o valor da propriedade
 * @return mixed
 */
public function getPropertyValue(){
	return $this->property;
}
}

// Criando o objeto
$teste = new Test( 'some value' );

// Exibe o valor da propriedade
var_dump( $teste->getPropertyValue() );

 

Exemplo de remoção de comentários

testar.php

<?php
foreach ( token_get_all( file_get_contents( 'teste.php' ) ) as $token ){
if ( !is_int( $token[ 0 ] ) ) echo $token[ 0 ];
else {
	switch ( $token[ 0 ] ){
		case T_COMMENT:
		case T_DOC_COMMENT:
			break;
		default:
			echo $token[ 1 ];
	}
}
}

 

Saída:

<?php

class Test {

private $property;


public function __construct( $value ){
	$this->property = $value;
}


public function getPropertyValue(){
	return $this->property;
}
}

$teste = new Test( 'some value' );

var_dump( $teste->getPropertyValue() );

 

Exemplo de remoção de comentários, quebras de linha e espaços:

testar.php

<?php
foreach ( token_get_all( file_get_contents( 'teste.php' ) ) as $token ){
if ( !is_int( $token[ 0 ] ) ) echo $token[ 0 ];
else {
	switch ( $token[ 0 ] ){
		case T_COMMENT:
		case T_DOC_COMMENT:
			break;
		case T_WHITESPACE:
			echo preg_replace( "/(\r\n|\r|\n|\s)+/" , ' ' , $token[ 1 ] );
			break;
		default:
			echo $token[ 1 ];
	}
}
}

 

Saída:

<?php
class Test { private $property; public function __construct( $value ){ $this->property = $value; } public function getPropertyValue(){ return $this->property; } } $teste = new Test( 'some value' ); var_dump( $teste->getPropertyValue() );

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://br.php.net/manual/en/book.tokenizer.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal... agradecido pelas várias idéias.

 

Testei o Obfuscador da Raizlab e não funcionou legal... ele criptografa o código muito bem, porém quando entra banco de dados e sessões ele dificulta um pouco e a programação começou a dar mensagens de erro e não comportar conforme foi programado. Pode ser necessário eu fazer mais testes, ler manual etc...

 

O codeEclipse torna-se inviável por ser on-line, quando trabalhamos com uma aplicação grande.

 

O ZEND é totalmente inviável pelo valor, mesmo porque testei um trial e deu vários erros.

 

Gostei do Tokenizer, pois talvez criptografar o código não seja tão interessante, mas tirar os comentários que é o pulo do gato nos scripts o que ajuda na manutenção, correções de problemas e melhorias no código, já seria o suficiente para atrapalhar muito a vida de quem quiser roubar o script. Analisem comigo. O trabalho que o programador terá para estudar meu código, entender o que eu quero de resultado (sem ajuda dos comentários que eu coloco), re-diagramar verticalmente o script de uma aplicação grande... ele já merece um prêmio e ficar com o sistema para ele. Pois ele levará mais tempo para isso do que escrever o seu próprio e o empresário pagará uma nota para alguém estudar isso.

 

Mesmo porque os obfuscadores tem a engenharia reversa e de nada adiantaria.

 

Obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.