Hola a todos
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.
OTROSNo 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 :
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
<?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;
var $uvar=array(true, false);
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
<?php
$base=1;
$prev = "dom";
?>
Archivo TestFuncs.php
<?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
<?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
{private $x11x2x31s156;private $x11x2x31s157;var $uvar=array(true, false);private $x11x2x31s159=0;
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
<?php
$x11x2x33s2235=1;$x11x2x33s2236 = "\x64\x6f\x6d";
?>
Archivo TestFuncs.php ofuscado
<?php
function x11x2x32s155
($x11x2x32s3235){if ($x11x2x32s3235!="\x75\x6e\x6b") {return 10;}else { return 1; }}
?>
se ve interesante !! ... tengo q correlo haber q tal !!
Si tienen alguna sugerencia o duda. Tal vez alguna funcionalidad para el ofuscador puedo hacerle algunas modificaciones.
Para los que utilizan Linux con mono 2.0.1 como minimo, he añadido añadido una version del ofuscador para que corra en mono.
Primero descomprimen el archivo descargado luego para ejecutar el ofuscador solo tipean en la terminal de Linux.
Mono <CARPETA DEL OFUSCADOR PHP>/MyPhpGuard.exe.
tu proyecto esta interesante, pero seria bueno que tambien ofuscara codigo que este en archivos html
por ejemplo tengo una web y por alla dentro del body tengo una llamada a una funcion o algun codigo de php, tu proyecto solo se detiene al terminar el php superior, seria bueno le le agregaras eso. y usa base 64 para lo k esta en comillas
bueno es solo un aporte.
Citartu proyecto esta interesante, pero seria bueno que tambien ofuscara codigo que este en archivos html
por ejemplo tengo una web y por alla dentro del body tengo una llamada a una funcion o algun codigo de php, tu proyecto solo se detiene al terminar el php superior, seria bueno le le agregaras eso. y usa base 64 para lo k esta en comillas
La verdad no entendi la primera parte de tu comentario, me gustaria que colocaras un ejemplo de codigo html con php.
Este ofuscador puede procesar cualquier bloque de codigo php encerrado entre los tags <?php ?> dentro de cualquier archivo. Por defecto la aplicacion solo habilita la ofuscacion para archivos de extension .php pero podrias habilitarla para cualquier otro archivo del proyecto.
tu proyecto solo ofusca aquello que es solo php
pero si tivieramos esto:
<?
include ('cfg.php');
$cfg=array(readcfg());
if (cfg==true) {
$var=1;
}else {
$var=0;
}
?>
<html>
<title></title>
<body>
hola bueno tienes <? echo $var; ?>
</body>
</html>
ese codigo que esta dentro del cuerpo del html no lo reconoce tu proyecto, asi que no lo codifica. solo ofusca aquello que esta antes del <html>, seria bueno que le agraras eso tambien.
Una solucion a tu problema es que inicies los bloques con el tag "<?php" en vez de "<?"
Asi los dos bloques de codigo serian reconocidos por el ofuscador.
<?php
include ('cfg.php');
$cfg=array(readcfg());
if (cfg==true) {
$var=1;
}else {
$var=0;
}
?>
<html>
<title></title>
<body>
hola bueno tienes <?php echo $var; ?>
</body>
</html>
El ofuscador solo reconoce bloques que inicien con <?php para no confundirse con otros tipos de scripts que podrian incluirse en el mismo archivo.
esa seria una solucion para MI, pero la idea es ayudarte a mejorar el sw que hicisteis,
igual solo el
<? lo toma php, no he visto ningun lenguaje para servers y que este en un archivo .php que tenga este iniciador de lenguaje.
mira el obfuscador de raizlabs, muy bueno por cierto.
Y si kieres puedes incluirle una codificacion en base64 para los textos que estan en comillas.
Aqui esta la ultima version del ofuscador php Myphpguard, esta es la version 1.35 "BETA".
Ahora el ofuscador oculta y codifica las cadenas y nombres de variables especialmente las variables predefinidas de php (SUPERGLOBALS) de varias maneras:
- El ofuscador utiliza base 64 para codificar las cadenas y despues puede generar estas cadenas con caracteres hexadecimales.
- Opcion para ocultar nombres de variables despues de renombrarlas, en esta opcion todas las SuperGlobals($_GET,$_POST,...) son ocultadas y codificadas en base 64 (Si la opcion de codificacion en base 64 esta habilitada).
Aqui esta el enlace actualizado para descargar el ofuscador php Myphpguard:
https://skydrive.live.com/redir.aspx?cid=c3316392af8466c7&resid=C3316392AF8466C7!109
Aqui muestro un ejemplo con el ofuscador php Myphpguard 1.3.54 para que vean los resultados con todas las opciones activadas, todos los archivos php de este ejemplo junto con el archivo de projecto estan incluido en el zip que contiene el ofuscador:
Archivo Alltest.php
<?php
include "exfuncs.php";
include "./exvars.php";
echo "<HTML><HEAD><TITLE>$title</TITLE></HEAD><BODY>";
echo getElementH2($title);
//*** String Test
//$cadena1="String Test";
$cadena2='Multiple Line:
-$cadena1
-$cadena2';
$cadena3="\"$test1\" $cadena2";
addElementH3($test1);
echo "$cadena3.</br>";
function AddTestForm()
{
echo '<form method="post" action="#" >
<p>Texto:</p>
<input id="Texto" type="text" style="width: 250px" name="Texto" />
<input id="subEnviar" type="submit" value="Send" name="subMsg" />
</form>';
}
//*** Class Test
/*
*
*
* Class Lista
*/
class Lista
{
private $myList;
private $cadena;
private $style;
public function Lista($uLista,$style="")
{
$this->myList=$uLista;
$this->style=$style;
}
public function ShowLista()
{
if(!isset($this->myList) )
{
return;
}
//
$this->cadena="<ol style='$this->style' >";
$this->AddElements();
$this->cadena.="</ol>";
echo $this->cadena;
}
private function AddElements()
{
if(count($this->myList)>10)
{
return;
}
foreach ($this->myList as $item)
{
$this->cadena.="<li>$item</li>";
}
}
}
addElementH3($test2);
$style="color: #cccccc;";
$colorLista=new Lista($elementos,$style);
$Lista=new Lista($elementos);
?>
<div><?php $colorLista->ShowLista(); ?> </div> <div><?php echo "<hr>";
$Lista->ShowLista(); ?> </div>
<?php
//*** Form Test
addElementH3($test3);
AddTestForm();
if( isset($_POST["subMsg"]) )
{
if(!empty($_POST["Texto"]))
{
$texto=$_POST["Texto"];
echo "<div style='border: 1px solid gray' >
Texto:$texto
</div>";
}
}
echo '</BODY></HTML>';
?>
Archivo Alltest.php ofuscado con Myphpguard 1.3.540
<?php ${"GL\x4fBA\x4cS"} ["xl1\x732\x31"]= array( "xl1s282"=>"Z\x58hm\x64W5\x6acy\x35w\x61HA\x3d", "xl1s383"=>"Li9\x6ceHZ\x68c\x6eMuc\x47hw", "xl1s484"=>"P\x45\x68\x55\x54U\x77+\x50EhF\x51\x55\x51+\x50F\x52JV\x45x\x46Pg=\x3d", "xl1s585"=>"PC9\x55S\x56RM\x52\x5448L\x30h\x46Q\x55Q+\x50\x45JP\x52\x46k+",
"xl1s688"=>"T\x58Vsd\x47l\x77b\x47\x55\x67TGl\x75\x5aT\x6f\x74JGN\x68Z\x47Vu\x59\x54Et\x4aGNh\x5aG\x56uY\x54\x49\x3d", "xl1s789"=>"Ljw\x76\x59\x6eI+", "xl1s180"=>"x\x6c1\x7376", "xl1s890"=>"PGZ\x76cm\x30gb\x57\x560a\x479k\x50\x53Jw\x623N\x30\x49\x69Bh\x593Rp\x6224\x39IiM\x69ID4\x67IC\x41g\x49\x43\x41gIC\x41\x38\x63D5U\x5aXh0\x62z\x6f8\x4c\x33A\x2bIC\x41\x67IC\x41\x67I\x43A\x67\x50Glu\x63\x48V0\x49Gl\x6bPSJ\x55ZX\x68\x30b\x79I\x67d\x48lw\x5aT\x30i\x64G\x564d\x43\x49gc3\x525\x62\x47U9I\x6edp\x5aHR\x6f\x4fi\x41y\x4eTBw\x65\x43\x49\x67b\x6dFt\x5aT\x30\x69VG\x564dG\x38i\x49C8+\x49CA\x67I\x43A\x67\x49CA\x67PG\x6cuc\x48V0\x49\x47lk\x50\x53Jzd\x57\x4aFbn\x5apY\x58I\x69IH\x525c\x47\x55\x39I\x6e\x4e\x31Ym\x31pdC\x49g\x64mFs\x64WU\x39I\x6c\x4elb\x6dQ\x69I\x47\x35h\x62\x57U9\x49nN1\x59k1z\x5a\x79I\x67Lz4\x67I\x43\x41gIC\x41\x67ICA\x38L2\x5a\x76\x63m\x30\x2b",
"xl1s178"=>"ba\x73e\x364\x5f\x64e\x63od\x65", "xl1s991"=>"PG9\x73\x49HN0\x65Wx\x6cP\x53c\x3d", "xl1s1092"=>"Jy\x41+", "xl1s1193"=>"\x50C9v\x62D\x34=", "xl1s1295"=>"PG\x78\x70\x50\x67==", "xl1s1396"=>"\x50C\x39sa\x544\x3d",
"xl1s1498"=>"Y2\x39sb\x33I\x36IC\x4ejY\x32NjY\x32\x4d\x37", "xl1s1499"=>"e\x47wx\x63z\x63y\x4dzc\x3d", "xl1s1601"=>"PG\x68y\x50g==", "xl1s181"=>"X\x31\x42PU\x31\x51=", "xl1s1702"=>"c3\x56iTX\x4e\x6e", "xl1s179"=>"\x78\x6c1s4\x34",
"xl1s1803"=>"VG\x564\x64G8\x3d", "xl1s1904"=>"V\x47V4d\x478\x3d", "xl1s2005"=>"PGR\x70\x64iBz\x64H\x6cs\x5aT0n\x59m9y\x5a\x47Vy\x4fiA\x78\x63H\x67\x67c\x329\x73\x61WQg\x5a3Jh\x65Sc\x67\x50iAg\x49CAg\x49CB\x55\x5aX\x680bz\x6f=",
"xl1s2106"=>"I\x43A\x67IC\x41g\x49Dwv\x5aGl\x32P\x67==", "xl1s2207"=>"PC9\x43T0\x52Z\x50jw\x76S\x46RN\x54D4\x3d", "h1lI"=>"r1256");eval("e\x76\x61l\x28\x62a\x73e\x36\x34_\x64e\x63\x6f\x64e\x28\x27Zn\x56uY\x33Rp\x62\x324\x67eG\x77xcz\x632K\x43R4b\x44\x46zOT\x63pe\x79\x527\x49nhs\x4d\x56x4\x4ezMx\x4dFx4\x4dzgi\x66\x540k\x65yJc\x65\x44Q3\x58H\x670\x591\x784N\x47Z\x63eDQ\x79XHg\x30M\x56x4N\x47NT\x49n\x31\x62In\x68\x73MV\x78\x34NzM\x79\x4dSJd\x57yJc\x65\x44c4b\x44\x46\x63eD\x63\x7aMT\x64ce\x44M4\x49\x6c07c\x6dV0d\x58Ju\x49C\x52\x37\x49n\x68ceD\x5ajM\x58\x4dxXH\x67z\x4d\x44gi\x66S\x67key\x4a\x48TF\x78\x34NG\x5aC\x58Hg\x30MUx\x54\x49n1\x62I\x6e\x68c\x65\x44\x5a\x6aX\x48gz\x4dVx4\x4ezM\x79XH\x67z\x4d\x53\x4ad\x57yR7\x49nhc\x65D\x5ajM\x58\x4ece\x44M5N\x79J\x39XS\x6b7f\x51\x3d\x3d\x27\x29\x29\x3be\x76\x61\x6c\x28\x62\x61s\x656\x34_\x64\x65\x63\x6f\x64\x65\x28\x27ZnV\x75Y\x33Rpb\x324\x67eGw\x78czQ\x30KC\x524b\x44Fz\x4e\x6a\x55p\x653\x4al\x64\x48Vyb\x69\x41ke\x79Jce\x44\x513TF\x78\x34NGZ\x43\x51\x55\x78c\x65\x44U\x7a\x49\x6e1b\x49nhs\x58\x48gz\x4dVx4\x4e\x7aNc\x65\x44\x4dyMS\x4ad\x57y\x527\x49\x6cx\x34Nzh\x73\x4dXN\x63e\x44M2N\x53J\x39\x58Tt9\x27\x29\x29\x3b");
include ${"G\x4c\x4f\x42A\x4c\x53"}["x\x6c1\x732\x31"]["xl1\x7318\x30"]("x\x6c1s2\x382");include ${"G\x4cO\x42A\x4cS"}["x\x6c1\x73\x321"]["xl1\x73180"]("x\x6c\x31s\x3383");
echo ${"G\x4cO\x42A\x4cS"}["xl\x31s2\x31"]["\x78l1s\x3180"]("xl\x31\x734\x384")."$xl3s2235".${"\x47L\x4fB\x41L\x53"}["xl\x31s21"]["\x78\x6c1\x731\x380"]("xl\x31s\x35\x385");
echo xl2s155($xl3s2235);$xl1s2236=${"\x47\x4c\x4f\x42\x41\x4cS"}["xl\x31s21"]["\x78l\x31\x731\x38\x30"]("xl\x31s6\x388");
$xl1s2237="\"$xl3s2236\" "."$xl1s2236";xl2s156($xl3s2236);echo "$xl1s2237".${"\x47\x4c\x4f\x42\x41L\x53"}["xl1\x73\x32\x31"]["x\x6c1\x73180"]("xl1\x7378\x39");
function xl1s155
(){echo ${"\x47\x4cO\x42\x41L\x53"}["xl1\x73\x321"]["x\x6c1s\x318\x30"]("xl1\x73890");}
class Lista
{private $xl1s156;private $xl1s157;private $xl1s158;
public function Lista
($xl1s4235,$xl1s4236=""){$this->xl1s156=$xl1s4235;$this->xl1s158=$xl1s4236;}
public function xlz11
(){if(!isset($this->xl1s156) ){return;}$this->xl1s157=${"\x47L\x4f\x42\x41L\x53"}["xl1\x732\x31"]["x\x6c1s\x318\x30"]("xl1\x73991")."$this->xl1s158".${"\x47L\x4f\x42\x41\x4cS"}["\x78l1\x732\x31"]["xl\x31s18\x30"]("\x78\x6c1s1\x309\x32");
$this->xl1s161();$this->xl1s157.=${"G\x4cO\x42\x41\x4c\x53"}["\x78l1s\x32\x31"]["xl\x31\x73180"]("\x78l\x31s1\x31\x393");
echo $this->xl1s157;}
private function xl1s161
(){if(count($this->xl1s156)>10){return;}foreach ($this->xl1s156 as $xl1s6235){$this->xl1s157.=${"G\x4c\x4fB\x41L\x53"}["\x78l1s\x321"]["xl\x31\x7318\x30"]("x\x6c1s\x312\x395")."$xl1s6235".${"G\x4c\x4fB\x41L\x53"}["x\x6c\x31s21"]["xl1\x731\x380"]("x\x6c1s\x31\x3396");
}}}
xl2s156($xl3s2237);$xl1s7236=${"G\x4c\x4f\x42A\x4cS"}["x\x6c1\x7321"]["xl1\x7318\x30"]("x\x6c1s1\x3498");$xl1s7237=new Lista($xl3s2240,$xl1s7236);
$xl1s7239=new Lista($xl3s2240);
?>
<div>
<?php ${${"G\x4cOB\x41LS"}["x\x6c1\x732\x31"]["\x78l1\x73\x318\x30"]("xl\x31\x73149\x39")}->xlz11(); ?>
</div> <div>
<?php echo ${"\x47L\x4f\x42\x41\x4cS"}["xl\x31s2\x31"]["\x78l1s\x3180"]("xl\x31\x7316\x301");
$xl1s7239->xlz11(); ?>
</div>
<?php
xl2s156($xl3s2238);xl1s155();if( isset(${${"G\x4c\x4fB\x41L\x53"}["xl\x31s21"]["\x78\x6c1s\x31\x380"]("xl\x31s\x318\x31")}[${"\x47\x4cO\x42\x41L\x53"}["xl1\x7321"]["x\x6c1\x731\x380"]("xl1\x7317\x30\x32")]) )
{if(!empty(${${"GL\x4fB\x41\x4c\x53"}["xl1\x73\x321"]["x\x6c1\x73\x3180"]("xl1\x7318\x31")}[${"\x47\x4c\x4fB\x41\x4cS"}["xl1\x732\x31"]["x\x6c1s\x31\x380"]("xl1\x73180\x33")]))
{$xl1s10236=${${"GL\x4fBA\x4cS"}["\x78l\x31\x73\x321"]["xl\x31s18\x30"]("\x78\x6c1s\x3181")}[${"G\x4cO\x42A\x4c\x53"}["\x78l1\x7321"]["xl\x31s18\x30"]("\x78l\x31s\x3190\x34")];
echo ${"G\x4cO\x42A\x4c\x53"}["\x78l1s\x321"]["xl\x31\x731\x38\x30"]("x\x6c1\x73\x320\x30\x35")."$xl1s10236".${"G\x4c\x4f\x42\x41L\x53"}["x\x6c\x31s2\x31"]["xl1\x731\x38\x30"]("x\x6c1s\x32106")
;}}echo ${"G\x4c\x4f\x42\x41L\x53"}["x\x6c\x31s\x321"]["xl1\x731\x38\x30"]("x\x6c1s2\x3207");
?>
Hola, puedo hacer un deofuscador solo por entretención? xD
buena idea
Seria interesante un des-ofuscador del codigo ofuscado para ver si puede generar el codigo php original.
Por lo menos veo que seria imposible adivinar los nombres originales de las variables, funciones, metodos y campos.
Cita de: Fred en 18 Noviembre 2011, 21:07 PMPor lo menos veo que seria imposible adivinar los nombres originales de las variables, funciones, metodos y campos.
Y quien dijo que era imposible?
Hay un programa lamado phpCB y lo probé con este código ofuscado y te ordena todo el código de una ves.
Con otro script puedes descifrar los hexadecimales que estén en comillas dobles y reemplazar el nombre de las funciones por nombres mas legibles como funcion1 funcion2 variable1 variable2
Podrias mostrarnos un ejemplo probando con los archivos ofuscados de alltest.php, exvars.php y exfuncs.php.
estuve probando y tengo este error:
Parse error: syntax error, unexpected '(', expecting ')'
Este es parte del codigo generado por el programa
function FechaRevez($mystr9s15235,$mystr9s15236=mystr9s220("my\x73t\x729s9\x3318"))
{
$mystr9s15237=split($mystr9s15236,$mystr9s15235);
${mystr9s220("mystr9s9217")}=$mystr9s15237[2].mystr9s220("\x6dys\x74r\x39\x739\x342\x31").${mystr9s220("mystr9s9320")}[1].mystr9s220("my\x73\x74\x72\x39s95\x322").${mystr9s220("mystr9s9320")}[0];
return ${mystr9s220("mystr9s9217")};
}
Al pasar los parametros a la funcion está llamando a otra que le devueleve el valor por defecto a esa variable, pero eso me da el error :(
Espero q me puedas ayudar.
Cita de: Kmilo7 en 2 Enero 2012, 22:21 PM
estuve probando y tengo este error:
Parse error: syntax error, unexpected '(', expecting ')'
Este es parte del codigo generado por el programa
function FechaRevez($mystr9s15235,$mystr9s15236=mystr9s220("my\x73t\x729s9\x3318"))
{
$mystr9s15237=split($mystr9s15236,$mystr9s15235);
${mystr9s220("mystr9s9217")}=$mystr9s15237[2].mystr9s220("\x6dys\x74r\x39\x739\x342\x31").${mystr9s220("mystr9s9320")}[1].mystr9s220("my\x73\x74\x72\x39s95\x322").${mystr9s220("mystr9s9320")}[0];
return ${mystr9s220("mystr9s9217")};
}
Al pasar los parametros a la funcion está llamando a otra que le devueleve el valor por defecto a esa variable, pero eso me da el error :(
Espero q me puedas ayudar.
El problemas esta en:
$mystr9s15236=mystr9s220("my\x73t\x729s9\x3318")
Bueno este es un problema que se presenta con la version beta del ofuscador pero que en la version PORTABLE PARA .NET MONO Myphpguard 1.3.54b esta corregida.
Si habilitas la ofuscacion avanzada para cadenas debes tener en cuenta algunas limitaciones que el ofuscador php tiene todavia.
El codigo generado no funcionara cuando se utilizan cadenas estaticas por ejemplo:
static $cadena="unacadena";
Luego si ofuscamos habilitando la ocultacion de cadenas tenemos un codigo que no funcionara porque PHP no permite iniciar variables estaticas de este modo:
static $mystrd434=lfhf121333("my\x73t\x729s9\x322");
Por tanto si tu codigo contiene muchas cadenas estaticas podrias deshabilitar las opciones avanzadas y no tendras problemas.