Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: yovaninu en 28 Octubre 2010, 06:52 am



Título: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: yovaninu en 28 Octubre 2010, 06:52 am
Hola a todos. Hace mucho tiempo he tenido la necesidad de ofuscar mis codigos en PHP y buscando por la red me encontre con ofuscadores on-line pero que requerian librerias extras.

Luego encontre un excelente ofuscador denominado PHP Processor, es shareware, pero tiene unas pequeñas limitantes como por ejemplo, no quita indentación de los archivos y tampoco permite definir las variables aleatorias puesto que les pone un solo patron y longitud. Sin embargo es un gran ofuscador.

Pero me he decidido a programar mi pequeño Ofuscador y me ha servido bastante, se trata de OfWiz y le he puesto algunas opciones interesantes, aunque aun falta muchas otras opciones como por ejemplo ofuscar todos los PHP de un directorio, aun asi me permito publicarlo aqui en esta parte del foro para quienes se animen a probarlo.

Aqui una breve explicación de su uso:

Interfaz:
(http://www.tecnosantalucia.edu.pe/screen.jpg)

Barra de Herr.
(http://www.tecnosantalucia.edu.pe/barra.jpg)

Explicación:
1. Permite configurar la generacion de variables aleatorias y algunas otras opciones
2. Backup de todo el directorio seleccionad (AUN NO FUNCIONA)
3. Colorea la sintaxis PHP
4. Oculta los comentarios de un archivo PHP
5. Resalta los comentarios de un archivo PHP
6. Elimina los comentarios de un archivo PHP
7. Elimina las lineas en blanco que se encuentre en un archivo PHP
8. Elimina la indentación de un archivo PHP
9. Reemplaza las variables que se encuentren por otras generadas aleatoriamente y de acuerdo a lo establecido en el punto 1
10. Aplica los puntos 6, 7, 8 y 9 de un solo paso al archivo mostrado
11. Guarda los cambios que se hizo al archivo mostrado.
12. Aplica los puntos 6, 7, 8 y 9 a todos los archivos del directorio seleccionado (YÁ FUNCIONA)


Ejemplo:
php original

Código
  1. <?php
  2.   /* Archivo PHP
  3.    de Pruebas*/
  4.  
  5.   include("conex.php"); //archivo de conezion a la BD
  6.   $link=Conectarse();
  7.   if($link){
  8.   $nombre=$_GET['nombre'];
  9.   $apellidos=$_GET['apellidos'];  
  10.   mysql_query("insert into prueba (Nombre,Apellidos) values ('$nombre','$apellidos')",$link);
  11.   }  
  12.  
  13.   /*Redireccionamos*/
  14.   header("Location: ejem07d.phtml");
  15.  
  16. ?>
  17.  


PHP Ofuscado, luego de aplicarle por ejemplo, el boton 10
(sin lineas en blanco, sin indentacion, sin comentarios y con variables ofuscadas[todo])
Código
  1. <?php
  2. include("conex.php");
  3. $_NIn25CptS3ZS=Conectarse();
  4. if($_NIn25CptS3ZS){
  5. $_WJFxXWL9FgN1=$_GET['nombre'];
  6. $_dGNZxmmoi090=$_GET['apellidos'];
  7. mysql_query("insert into prueba (Nombre,Apellidos) values ('$_WJFxXWL9FgN1','$_dGNZxmmoi090')",$_NIn25CptS3ZS);
  8. }
  9. header("Location: ejem07d.phtml");
  10. ?>
  11.  
  12.  


otro ejemplo con variables ofuscadas generadas con solo numeros [boton 1]
Código
  1. <?php
  2. include("conex.php");
  3. $_077443507825415429=Conectarse();
  4. if($_077443507825415429){
  5. $_535838837465153412=$_GET['nombre'];
  6. $_738018528184598387=$_GET['apellidos'];
  7. mysql_query("insert into prueba (Nombre,Apellidos) values ('$_535838837465153412','$_738018528184598387')",$_077443507825415429);
  8. }
  9. header("Location: ejem07d.phtml");
  10. ?>
  11.  

Esta hecho en Basic y probado en WinXP, el source lo publicare en el foro de Basic, de momento les dejo el exe y los OCX por si no les funciona.

El exe esta limpio y no desconfiar de él, aunque para mayor seguridad pasarle el antivirus.

Descargas:
Ofwiz (en ZIP) (http://www.tecnosantalucia.edu.pe/ofwiz.zip)
Los OCX (en ZIP) (http://www.tecnosantalucia.edu.pe/ocx.zip)

Descomprimir ambos zip en una sola carpeta, luego ejecutar el exe, a la primera puede salir un error, ejecutar otra vez y todo funcionará.

Saludos


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: Shell Root en 28 Octubre 2010, 19:55 pm
WTF! Solo en variables?


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: Kasi en 28 Octubre 2010, 22:48 pm
¿que sentido tiene ofuscar el nombre de las variables?

En realidad es mas lioso a la hora de programar, por que si en vez de acordarte que llamaste a una variable $variable la llamaste $adafnjtrj te puedes volver loco xD, seria mas util si lo que ofuscase fuesen los datos, pero aun así , buen trabajo  ;-)


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: xassiz~ en 28 Octubre 2010, 23:17 pm
Sería interesante poner todo sin saltos de línea :rolleyes:


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: [u]nsigned en 29 Octubre 2010, 05:43 am
Interesante!! puede serme util para darle a mis clintes los scripts ofuscados, luego de meterle un backdoor por si se hacen los locos y no pagan xDD

Creo que hace poco se toco ese tem en este mismo sub-foro  ;-)

Saludos


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: yovaninu en 29 Octubre 2010, 16:28 pm
Sería interesante poner todo sin saltos de línea :rolleyes:
Si pero al menos a mi me da un error cuando se pone esto en una sola linea (sesiones)
Código
  1. <?php session_start();echo "pruebas";?>
PHP Processor lo hace pero como repito da errores

He pensado en quitar los saltos de linea excepto a aquellas que contengan 'session_start()'. trabajare en ello.

Saludos.



Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: juancho77 en 2 Noviembre 2010, 05:50 am
Tendria que tener una funcion que llene todo de GOTO, que haga un buen revuelto de code jaj pensalo para el boton 11!

Buen trabajo amigo!


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: yovaninu en 2 Noviembre 2010, 06:49 am
WTF! Solo en variables?
Si pero imagina este codigo
Código
  1. <?php
  2.  
  3. function SaveFields($_395235877769193118,$_768412588487539682,$_622717084878451623,$_428524278336320264,$_443876177544517825){
  4. $_385704394318424627=conectar();
  5. $_515523638832940496=strrev($_395235877769193118);
  6. $_164524131018531184=0;
  7. $_509328683334354304[]="";
  8. $_524350488241242933=$_428524278336320264;
  9. for($_616163133412708775=0; $_616163133412708775<strlen($_395235877769193118); $_616163133412708775+=$_524350488241242933){
  10. $_509328683334354304[$_164524131018531184]=substr($_395235877769193118,$_616163133412708775,$_524350488241242933);
  11. $_164524131018531184++;
  12. }
  13. foreach ($_509328683334354304 as $_615960853591119343) {
  14. $_843153309815347106="insert into $_768412588487539682($_622717084878451623) values('$_615960853591119343')";
  15. if($_443876177544517825=="si")
  16. mysql_query($_843153309815347106,$_385704394318424627) or die(mysql_error());
  17. else
  18. echo "<br>".$_843153309815347106;
  19. }
  20. return 0;
  21. }
  22.  
  23. ?>
  24.  
Como que ya se hace dificil de leer no?, quiza no sea el objetivo en general pero un nivel mas de ofuscacion a quienes queremos proteger en algo nuestros scripts.

Gracias por los comentarios. Estoy depurando el codigo por que con mas de 200 archivos de un directorio como que a veces me salta errores, pero lo vengo tratando tambien ese punto.



Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: juancho77 en 2 Noviembre 2010, 07:44 am
Lo que pasa con las variables es que cualquier refactor incluso manual te lo vuelve a su estado original. Te sugiero mas cosas para seguir llevando esto a otros niveles:
  • agregar variables extra y luego usar estas variables para agregar condiciones extras por todos lados
  • lo de los gotos que dije antes
  • cambiar el nombre de los miembros privados


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: yovaninu en 2 Noviembre 2010, 14:35 pm
Lo que pasa con las variables es que cualquier refactor incluso manual te lo vuelve a su estado original. Te sugiero mas cosas para seguir llevando esto a otros niveles:
  • agregar variables extra y luego usar estas variables para agregar condiciones extras por todos lados
  • lo de los gotos que dije antes
  • cambiar el nombre de los miembros privados

El 'refactor' tendria que saber las variables originales, lo cual es imposible, a lo mucho podria reemplazarlas por variablesun poco mas entendibles, es decir n1,n2,etc.. aun asi el codigo sigue un tanto ilegible.

Más aún si pensamos que asi como puse en el ultimo ejemplo, asi iran todos los archivos del proyecto, por lo que seran miles de variables reemplazadas y 'refaccionar' eso pues suena muy lioso.

Entiendo que el nivel de ofuscacion es minimo y que puedo agregarle lo que me recomiendas, sobre los 'gotos' y 'miembros privados' te agradeceria alguna idea.

De momento he estado pensando tambien en cambiar el nombre de las funciones que puedan estar en archivos externos (includes) o en el mismo archivo php, esto por ejemplo si lo hace el PHP Processor.

Saludos.


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: Shell Root en 2 Noviembre 2010, 19:04 pm
Como que ya se hace dificil de leer no?,
De que es difícil, sí, pero en menos de 3 minutos pwned!


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: yovaninu en 2 Noviembre 2010, 21:20 pm
Como que ya se hace dificil de leer no?,
De que es difícil, sí, pero en menos de 3 minutos pwned!
3 minutos para una funcion, consideremos 50 funciones de muchas lineas de codigo, regadas en 200 archivos del proyecto.

Tan solo de tu parte críticas...

total sirve o es un tiro al vacio?... sugiere para poder hacer (aunque sea entre todos) algo mejor y que sirva a todos.

A propósito por ejemplo como protegerias tú, los script's de un proyecto si te tocaria hacerlo?...

A ver si por ahi te encamino.

Saludos


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: Shell Root en 2 Noviembre 2010, 22:10 pm
3 minutos para una funcion, consideremos 50 funciones de muchas lineas de codigo, regadas en 200 archivos del proyecto.
Quieres apostar? :p

A propósito por ejemplo como protegerias tú, los script's de un proyecto si te tocaria hacerlo?...
Prefiero intentar mantener el servidor y la aplicación seguras. No se para qué proteger esos archivos?


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: yovaninu en 3 Noviembre 2010, 00:54 am
3 minutos para una funcion, consideremos 50 funciones de muchas lineas de codigo, regadas en 200 archivos del proyecto.
Quieres apostar? :p

A propósito por ejemplo como protegerias tú, los script's de un proyecto si te tocaria hacerlo?...
Prefiero intentar mantener el servidor y la aplicación seguras. No se para qué proteger esos archivos?

Ok campeon hazlo, cuando tengas el codigo listo, yo te paso los 200 archivos revoloteados...

y no todos tenemos un servidor propio, a mi por ejemplo me toco subir mi aplicacion a un servidor que pertenecia a otros y tuve la curiosidad de en cierta manera proteger el codigo (la propiedasd intelectual, me entiendes verdad?, no quiero apologias de eso) entonces busque por la red y me enconre al ofuscador PHP Processor que es un shareware y que hace lo mismo que el mio y tiene muchas otras opciones.

Del porque reinvento la rueda?, por que la otra no me satisfacia por completo, lo explique al principio del post, por ejemplo los identificadores de las variables aleatorias eran muy cortas, mi ofuscador puede generar variables de hasta 18 caracteres y si quieres le pongo de hasta 500 caracteres, es igual a parte que no quitaba la indentacion de los scripts, salvo que las versiones actuales si lo hagan.

y como que para qué proteger los PHP, por lo mismo, entonces por que existen ENE erramientas de ofuscacion...?

Saludos, y respecto a la apuesta, si quieres demostrarte algo? anda hazlo tu puedes.


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: Shell Root en 3 Noviembre 2010, 02:43 am
Okas, dejadme termino un taller y estudio matemáticas para un examen y veré que puedo hacer.

Citar
yo te paso los 200 archivos revoloteados...
No importa, cual sea el numero de archivos, por algo existe la PROGRAMACIÓN!


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: Pazador en 3 Noviembre 2010, 03:50 am
Creo que tu software es una inspiracion/imitacion de PHP ofuscador (http://www.raizlabs.com/software/phpobfuscator/)  :rolleyes: lo usaba hace tiempo y a veces suelo usarlo cuando tengo un archivo con mas de 100 lineas de codigo  :P


Edito:
Aporte: seria maravilloso que al crear las variables solo se diferencien de las demas en 3 o 4 digitos de en medio de las mismas.. osea si se crea la variable

Código
  1. $_615960853591119343

que las demas solo cambien 3 numeros del medio quedando asi:

Código
  1. $_615960876591119343

y asi sucesivamente...

Código
  1. $_615960818391119343

asi se duplicaria la dificultad para diferencial cual es cual :xD que opinan


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: juancho77 en 3 Noviembre 2010, 15:13 pm
Buena idea esa, pero creo que ante un codigo ofuscado el primer intento seria DESofuscarlo,  las variables al menos, usando soft.


Título: Re: Pequeño Ofuscador de codigo PHP (Pruebenlo)
Publicado por: [u]nsigned en 3 Noviembre 2010, 19:18 pm
Mm..PHP ha sido concebido para ser transparente al quien tenga acceso al source, su alma es cien por ciento open source, creo que si quieres vender sistemas on web sin brindar el codigo mejor seria usar JSP (se compila), aunque tmb se puede descompilar..pero ya es otro tema  :P