Hace un año que estuve buscando un ofuscador php gratuito y bueno, pero solo encontre el de raizalab y otros demos, el problema con el ofuscador de railzab es que no ofuscaba clases. Entonces decidi probar hacer mi propio ofuscador php.
El ofuscador php que desarrolle es de facil uso, en un solo paso carga toda la carpeta que contiene al sitio web. Esta es la version 1.2.
MODO DE USO
- Solo hay que establecer la carpeta que contiene el sitio web y la aplicacion se encarga de cargar todos los archivos de cualquier extension, pero por defecto solo los archivos de extension .php estaran habilitados para ser ofuscados.
- Luego hay que establecer la carpeta de salida. Aqui el ofuscador colocara todos los archivos y subcarpetas en el mismo orden de la carpeta original.
- Establecemos las variables u funciones que no seran ofuscadas, o que tendran un nombre personalizado.
- Establecemos las opciones del projecto, aqui la mas importante podria ser si se va habilitar ofuscar los nombres de las funciones. Luego esta el prefijo que es una cadena que se utilizara para generara todos los nombres.
- Por ultimo solo hacemos click en el boton GENERAR ARCHIVOS. Una vez que nos muestre un mensaje del final del proceso vamos a la carpeta de salida, luego copiamos la carpeta al servidor para ver los resultados.
CARACTERISTICAS
- La aplicacion trabaja sobre proyectos, se puede guardar, abrir, renombrar y crear nuevos projectos rapidamente.
- Ofusca clases, funciones y variables.
- Soporta dependencias de funciones y variables entre archivos (includes y requires).
- Es un aplicacion hecha en lenguaje c#.Net 2.0.
- Viene con su propio instalador.
- Ofusca cadenas encerradas entre comillas dobles.
- Arregla algunos errores de las versiones anteriores.
- Genera un mapa de todas las variables y funciones de un archivo ofuscado, para ser utilizados posteriormente en otros projectos para no volver a ofuscarlos.
OTROS
No soporta las variables funciones y pueden haber problemas con la funcion extract().
Este ofuscador fue probado con joomla 1.5.
REQUISITOS
Los requisitos de la aplicacion son:
Windows 98/Xp/Vista/7.
Net Framework 2.0.
El ofuscador php lo pueden descargar de :
Código:
https://skydrive.live.com/redir.aspx?cid=c3316392af8466c7&resid=C3316392AF8466C7!109
Pruebas con el ofuscador de codigo php
Se utilizaron tres archivos de codigo fuente: TestA.php, TestFuncs.php, TestVars.php. El archivo TestA.php utiliza variables y funciones de los otros dos archivos.
Archivo TestA.php
Código
<?php function ShowInfo($name,$cod) { echo $name.' '.$cod; include 'TestVars.php'; require "TestFuncs.php"; $maxsize= GetMaxSize($name); for($i=1;$i<$maxsize;$i++) { $size=$i*$base; echo "valor".$i.' = '.$cod.$prev.$size; } } $figure1 = 'tow'; $figure2 = "tank"; class Info { private $name; private $cod; private $maxSize=0; public function __construct($name,$cod,$maxSize) { $this->name=$name; $this->cod = $cod; $this->maxSize = $maxSize; } public function Show() { echo $this->name.$this->cod; $this->ShowValues(); } function showB() { echo "function showB "; return $this->uvar; } private function ShowValues() { require "./TestVars.php"; for($i=1;$i<$this->maxSize;$i++) { echo "<p>"; echo "valor".$i." = ".$this->cod.$prev.$i.$base; echo "</p>"; } } } ShowInfo("hunter", "ht", 12); $Informacion = new Info("Hierro","he",11); echo "coment ?> >"; echo " cadena de prueba //no". "ex1"; echo "cadena de //co varias lineas"; ?> <table class="uTable"> <tr><td> tabla 1 empire <?php echo $figure1 ?> </td></tr> </table> <?php echo $figure2.' <hr>'; $Informacion->Show(); ?>
Archivo TestVars.php
Código
<?php $base=1; $prev = "dom"; ?>
Archivo TestFuncs.php
Código
<?php function GetMaxSize($name) { if ($name!="unk") { return 10; } else { return 1; } } ?>
A continuacion se muestran los resultados al ofuscar los tres archivos en el mismo proyecto. Estos tres archivos funcionan igual que los originales
Archivo TestA.php ofuscado
Código
<?php function x11x2x31s155 ($x11x2x31s3235,$x11x2x31s3236){echo $x11x2x31s3235.' '.$x11x2x31s3236;include 'TestVars.php';require "\x54\x65\x73t\x46\x75\x6ec\x73\x2e\x70\x68p"; $x11x2x31s3237= x11x2x32s155($x11x2x31s3235);for($x11x2x31s3238=1;$x11x2x31s3238<$x11x2x31s3237;$x11x2x31s3238++) {$x11x2x31s3239=$x11x2x31s3238*$x11x2x33s2235;echo "\x76\x61\x6co\x72".$x11x2x31s3238.' = '.$x11x2x31s3236.$x11x2x33s2236.$x11x2x31s3239; }} $x11x2x31s4235 = 'tow';$x11x2x31s4236 = "\x74\x61\x6ek"; class Info public function __construct ($x11x2x31s5235,$x11x2x31s5236,$x11x2x31s5237){$this->x11x2x31s156=$x11x2x31s5235;$this->x11x2x31s157 = $x11x2x31s5236; $this->x11x2x31s159 = $x11x2x31s5237;} public function Show (){echo $this->x11x2x31s156.$this->x11x2x31s157;$this->x11x2x31s163();} function showB (){echo "\x66\x75\x6ec\x74\x69\x6fn\x20\x73\x68\x6fw\x42\x20";return $this->uvar;} private function x11x2x31s163 (){require "\x2e\x2f\x54e\x73\x74\x56a\x72\x73\x2e\x70h\x70";for($x11x2x31s8235=1;$x11x2x31s8235<$this->x11x2x31s159;$x11x2x31s8235++) {echo "\x3c\x70>";echo "\x76\x61\x6co\x72".$x11x2x31s8235."\x20\x3d\x20".$this->x11x2x31s157.$x11x2x33s2236.$x11x2x31s8235.$x11x2x33s2235; echo "\x3c\x2f\x70>";}}} x11x2x31s155("\x68\x75\x6et\x65\x72", "\x68\x74", 12);$x11x2x31s9235 = new Info("\x48\x69\x65r\x72\x6f","\x68\x65",11); echo "\x63\x6f\x6de\x6e\x74\x20?>\x20>"; echo "\x20\x63\x61d\x65\x6e\x61 \x64\x65\x20\x70r\x75\x65\x62a\x20\x2f\x2fn\x6f". "\x65\x78\x31"; echo "\x63\x61\x64e\x6e\x61\x20d\x65\x20\x2f\x2fc\x6f v\x61\x72\x69a\x73\x20\x6ci\x6e\x65\x61\x73" ; ?> <table class="uTable"> <tr><td> tabla 1 empire <?php echo $x11x2x31s4235 ?> </td></tr> </table> <?php echo $x11x2x31s4236.' <hr>';$x11x2x31s9235->Show(); ?>
Archivo TestVars.php ofuscado
Código
<?php $x11x2x33s2235=1;$x11x2x33s2236 = "\x64\x6f\x6d"; ?>
Archivo TestFuncs.php ofuscado
Código
<?php function x11x2x32s155 ($x11x2x32s3235){if ($x11x2x32s3235!="\x75\x6e\x6b") {return 10;}else { return 1; }} ?>