¿Hay un ofuscador de código para PHP? [cerrado]


212

¿Alguien ha usado un buen ofuscador para PHP? He probado algunos pero no funcionan para proyectos muy grandes. No pueden manejar variables incluidas en un archivo y utilizadas en otro, por ejemplo.

¿O tienes algún otro truco para detener la propagación de tu código?


11
¿Estás seguro de que lo necesitas?
Alegre

55
@ StevenA.Lowe: tenga cuidado de burlarse de PHP. :-)
Marco Demaio

89
Otra pregunta relacionada con la programación constructiva realmente buena en formato de preguntas y respuestas perfectas que se cierra como no constructiva. Vergüenza por desbordamiento de pila ...
Petr

66
Eso es desbordamiento de pila. Lo único más prolífico que las preguntas cerradas que no deberían cerrarse son las llamas del usuario cuando un pobre vago viene y pide ayuda.
Mac

2
Si cree que esto no debería cerrarse, vote para volver a abrir.
Ira Baxter

Respuestas:


240

Puede probar PHP protect, que es un ofuscador PHP gratuito para ofuscar su código PHP.
Es muy agradable, fácil de usar y también gratis.
EDITAR: Este servicio ya no está en vivo.

En cuanto a lo que otros han escrito aquí acerca de no usar la ofuscación, ya que puede ser roto, etc:
Sólo tengo una cosa para responder a ellos - no bloquear la puerta de la casa, ya que cualquiera puede recoger su cerradura.
Este es exactamente el caso, la ofuscación no está destinada a prevenir el robo del código al 100%. Solo necesita que sea una tarea que requiera mucho tiempo, por lo que será más barato pagarle al codificador original. Espero que esto ayude.


105
+1 por señalar el hecho de que la ofuscación se trata de hacer que sea más difícil, no imposible.
Ashkan Kh. Nazary

3
tenga en cuenta que cifrar su código fuente en lugar de ofuscarlo tampoco hace que sea imposible descifrarlo, es realmente difícil hacerlo.
xorinzor

9
Lo probé, pero no me gustó. Solo cambia los nombres de las variables, no elimina ni elimina los comentarios ..
Pisu

1
@Schwern, deja la puerta abierta y luego contrata a Columbo y un muy buen abogado para que te cubras;)
David Newcomb

2
@David Newcomb - ¿Quién quiere pagarle a un abogado realmente bueno cuando puedes cerrar la puerta?
azoundria

109

Las personas le ofrecerán ofuscadores, pero ninguna cantidad de ofuscación puede evitar que alguien acceda a su código. Ninguna. Si su computadora puede ejecutarlo, o en el caso de películas y música si puede reproducirlo, el usuario puede acceder a él. Incluso compilarlo en código máquina hace que el trabajo sea un poco más difícil. Si usa un ofuscador, solo se está engañando a sí mismo. Peor aún, también está impidiendo a sus usuarios corregir errores o realizar modificaciones.

Las compañías de música y cine aún no han llegado a un acuerdo con esto, todavía gastan millones en DRM.

En lenguajes interpretados como PHP y Perl es trivial. Perl solía tener muchos ofuscadores de código, luego nos dimos cuenta de que puedes descompilarlos trivialmente.

perl -MO=Deparse some_program

PHP tiene cosas como DeZender y Show My Code .

¿Mi consejo? Escriba una licencia y obtenga un abogado. La única otra opción es no entregar el código y, en su lugar, ejecutar un servicio alojado.

Vea también la entrada perlfaq sobre el tema .


220
Principalmente estoy de acuerdo con usted, pero el OP solicitó una recomendación de producto, no una conferencia sobre los méritos del código abierto.
Eli

36
No tiene nada que ver con Open Source, que consiste en mezclar el código, no solo poder verlo. La realidad es que cualquier código o dato que se ejecute en la máquina de un usuario es, en última instancia, transparente, sin importar cómo lo compile, lo ofusque o lo encripte, punto y coma. El OP necesita entender eso.
Schwern

77
@JamShady: La ofuscación no significa que no pueda corregir errores o realizar modificaciones. Si estúpidamente ofusca el código fuente, tira el original e insiste en mantener el resultado ofuscado, sí, no podrás hacer nada. Los buenos ofuscadores insisten en que conserve su código y la asignación al resultado obstinado; puede depurar / modificar su código original, enviar parches ofuscados a sus clientes e incluso diagnosticar sus problemas utilizando el mapa para convertir las quejas ofuscadas en legibles. Él no tiene el mapa, lo que lo hace seguro.
Ira Baxter

34
Pregunta: Cómo, Respuesta: No deberías = no útil
cmc

26
@cmc Estoy seguro de que muchas personas responderán directamente a la pregunta, por lo que no hay pérdida si tomo una táctica diferente. La mitad del punto de preguntarle a un experto es saber cuándo estás haciendo la pregunta incorrecta para resolver el problema real. Esta es una aplicación de los "5 por qué". en.wikipedia.org/wiki/5_Whys El verdadero problema / pregunta es "¿cómo puedo evitar que las personas puedan leer / robar mi código PHP"? La respuesta es si envía el código que no puede, pero puede perder mucho tiempo y dinero intentando y obtener una falsa sensación de seguridad. ¿No fue más útil que una lista de ofuscadores?
Schwern

31

Nada será perfecto Si solo quieres algo para detener a los que no son programadores, aquí hay un pequeño script que escribí que puedes 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);

19
¿Increíble? Cada página viene con la solución completa para obtener la fuente: ejecute "gzuncompress (base64_decode ($ a))". Sí, esto detendrá a los no programadores. Pero entonces el código fuente original detendrá a los no programadores, ¿quién necesita codificación para eso? La única persona que analizará esta intención de realizar ingeniería inversa es un programador PHP.
Ira Baxter

2
La mayoría de las veces no programadores tratan de buscar algunas cadenas en el código fuente que desea cambiar, yo también estoy buscando una solución tal que sólo detener los no programadores de cambio en la fuente de código de nombre de dominio, por ejemplo, el nombre de la base de datos, usuarios, etc.
Asad kamran

Esta es una respuesta muy útil para mí. Solo me interesa evitar que el usuario abra fácilmente mi "database.php" en el bloc de notas y vea mi nombre de usuario y contraseña de la base de datos.
TimH - Codidact

20

No estoy seguro de que pueda etiquetar la ofuscación de un lenguaje interpretado como inútil (no puedo agregar un comentario a la publicación de Schwern, así que aquí va una nueva entrada).

Creo que es un poco miope asumir que conoces todos los escenarios posibles en los que a alguien le gustaría ofuscar el código, y asumes que cualquiera estará dispuesto a hacer todo lo necesario para ver ese código una vez ofuscado. Considere mi escenario actual:

Trabajo para una empresa de consultoría que está desarrollando un sitio grande y bastante sofisticado basado en PHP. El proyecto se alojará en el servidor de un cliente que aloja otros sitios desarrollados por otras consultoras. Técnicamente, cualquier código que escribamos es propiedad del cliente, por lo que no podemos licenciarlo. Sin embargo, cualquier otra consultoría (competidor) con acceso al servidor puede copiar nuestro código sin obtener primero el permiso del cliente. Por lo tanto, tenemos una verdadera razón para la ofuscación: hacer el esfuerzo requerido para que un competidor entienda nuestro código más que el esfuerzo de crear una copia de nuestro trabajo desde cero.


16

Vea nuestro SD Thicket PHP Obfuscator para un ofuscador que funciona bien con conjuntos de páginas arbitrariamente grandes. Funciona principalmente codificando nombres de identificadores. Con aplicaciones modestas a grandes, esto puede hacer que el código sea extremadamente difícil de entender, lo cual es todo el propósito.

No desperdicia energía en los esquemas "eval (decode ( codifiedprogramcode ))", que muchos "ofuscadores" de PHP hacen [estos son "codificadores", no "ofuscadores", porque cualquier terrón puede encontrar esa llamada y ejecuta el eval-decode y obtiene el código decodificado.

Utiliza un analizador de lenguaje preciso para procesar el PHP; le dirá si su programa es sintácticamente inválido. Más importante aún, conoce el idioma completo con precisión; no se perderá ni se confundirá, y no romperá su código (aparte de lo que sucede si se ofusca "incorrectamente", por ejemplo, no identifica correctamente la API pública del código).

Sí, ofusca los identificadores de forma idéntica en todas las páginas; Si no lo hiciera, el resultado no funcionaría.


1
Indicador: podría tener la cortesía de decir por qué lo marcó. Responde directamente a la pregunta del OP, incluido su problema específico.
Ira Baxter

Por lo que puedo decir, ¿es un EXE que se ejecuta solo en Windows? Al menos el eval es un archivo .exe ...
Craig Jacobs

El archivo eval es un instalador basado en .exe. La complicada verdad es que el producto instalado generalmente se ejecuta desde un script .cmd porque hay un lenguaje de programación paralelo debajo, pero nunca lo verá. Fue diseñado principalmente como un producto de Windows; sin embargo, si lo instala en Linux con Wine, se ejecutará con scripts .sh que se instalan con él como si fuera una herramienta nativa de Linux. Si usa la parte de la GUI (opcional, la mayoría de la gente quiere ejecutarla como un script en un proceso de compilación de producción), usa el Java nativo en Windows y el Java nativo en Linux.
Ira Baxter

¿Es cierto que Thicket requiere un complemento para el espacio de alojamiento? En caso afirmativo, ¿cómo se instala eso en un alojamiento compartido?
Stephen Adelakun

@StephenAdelakun: Thicket no requiere cambios en el servidor. Descárguelo y consulte la documentación.
Ira Baxter

14

Lo mejor que he visto es Zend Guard .


2
El SD ​​PHP Obfuscator es igual de bueno y cuesta aproximadamente 1/5.
Ira Baxter

1
@SalmanPK ¿Y se supone que la razón es obvia?
The Pellmeister

@SalmanPK Requiere un complemento para el espacio de alojamiento web. Zend Guard probablemente también lo haga. No estoy seguro de cuál es el más convencional. De todos modos, el problema es que reduce tu audiencia potencial.
James P.

1
El PHP Obfuscator de SD convierte todo a minúsculas. Eso será un problema si estás usando un framework.
Amil Waduwawara

1
@JamesPoulson: no está claro si su comentario apunta al ofuscador SD PHP. Para ser claros, no requiere ningún complemento al espacio de alojamiento web.
Ira Baxter

10

Pruebe este: http://www.pipsomania.com/best_php_obfuscator.do

Recientemente lo escribí en Java para ofuscar mis proyectos PHP, ya que no encontré nada bueno y compatible listo escrito en la red, decidí ponerlo en línea como saas, para que todos lo usen gratis. No cambia los nombres de las variables entre diferentes scripts para una máxima compatibilidad, pero los ofusca muy bien, con lógica aleatoria, también en cada instrucción. Cuerdas ... todo. Creo que es mucho mejor que este codeeclipse con errores, que por cierto está escrito en PHP y es muy lento :)


Se ve bien ... pero ¿es seguro? Quiero decir, ¿pueden otros descifrarlo fácilmente?
shasi kanth

Les puedo asegurar que en este momento NADIE puede des-ofuscar el código ofuscado por este ofuscador.
PatlaDJ

3
[cita requerida] - el cifrado homebrew es seguridad a través de la oscuridad, que no es seguridad en absoluto.
Chris Baker

8
"Les puedo asegurar que en este momento NADIE puede desofuscar el código" ¿Incluso PHP? Si PHP puede hacerlo, también puede hacerlo alguien más. Mirando como el código de muestra en su sitio, en algún lugar tendrá una declaración de evaluación que volcará el código, cámbielo a un eco y se mostrará su código.

3
ADVERTENCIA: Este método se puede volver a decodificar trivialmente a los nombres de variables originales, consulte: lombokcyber.com/en/detools/decode-pipsomania
Zane Hooper

3

Ofuscador Thicket ™ para PHP

La herramienta Obfuscator de PHP codifica el código fuente de PHP para que sea muy difícil de entender o realizar ingeniería inversa (ejemplo). Esto proporciona una protección significativa para la propiedad intelectual del código fuente que debe alojarse en un sitio web o enviarse a un cliente. Es miembro de la familia de ofuscadores de código fuente de SD.


TrueBug.com es inalcanzable. Sé que estoy publicando comentarios después de más de 3 años, pero ¿podría ayudarme con la nueva url de trueBug, si corresponde?
Stephen Adelakun

@StephenAdelakun ¿Solo necesitas TrueBug? Use esto: TruBug PHP Obfuscator .
Praveen Kumar Purushothaman

Lo sentimos, el enlace no funciona. ¿O me estoy perdiendo algo?
Stephen Adelakun

@StephenAdelakun Acabo de comprobar ahora, funciona.
Praveen Kumar Purushothaman el

1
@StephenAdelakun ¿Por qué solo eso? :(Eso es software muerto de todos modos. Hay mejores y mejores ahora ¿verdad?
Praveen Kumar Purushothaman

2

Usar SourceGuardian es bueno ya que viene con una GUI genial y fácil de usar.

Pero ten en cuenta:

Presta atención a sus términos de licencia, más bien divertidos.

  • Solo puede ejecutar 1 por máquina; hasta ahora, esto es aceptable
  • Si desea ejecutar la interfaz de línea de comandos en otra máquina, diga su servidor web, NECESITARÁ OTRA LICENCIA (Sí, es divertido y puedo escucharlo reír también).

2
¡Eso me parece normal! 2 máquinas = 2 licencias! Por lo general, lo que hace la gente es codificarlo todo en una máquina y luego subirlo a la (s) otra (s).
David Newcomb

@davidnewcomb parece que no entiendes el punto. Por lo general, codifica el código en su máquina de desarrollo antes de enviarlo. En caso de que necesite hacerlo en línea, la interfaz de línea de comandos también requiere una licencia adicional, lo que obviamente no es correcto. Tiende a colocar la interfaz de línea de comandos en el servidor web y no en su casilla local.
Sr.

2
TL; DR buena protección, estúpidos términos de licencia.
Sr.

1
Debe haber 1 licencia por usuario, no por máquina.
beppe9000

@ beppe9000 Totalmente de acuerdo!
Sr.

-16

La ofuscación solo agrega otra capa de posibles errores y vulnerabilidades de seguridad a su programa. Por favor no lo hagas.

El tipo de personas que escriben software de ofuscación por lo general parecen muy incompletos y poco cualificados de todos modos.

Si su código es "excelente", los crackers harán grandes esfuerzos para difundirlo, independientemente de si está ofuscado o no. Si nadie sabe / se preocupa por su código, probablemente tampoco lo sabrán.


77
¿No calificado? ¿Con base en qué evidencia? Los escribo Revisa mi biografía antes de hacer generalizaciones radicales. semanticdesigns.com/Company/People/idbaxter
Ira Baxter

55
@Ira: Mi declaración aún se mantiene. La mayoría del código ofuscado se puede romper en minutos. Me refería específicamente a que la mayoría de las personas que lo hacen no son calificadas, no todas . Lo primero que me vino a la mente fue Ioncube, y seguramente, tenía una vulnerabilidad publicada: osvdb.org/show/osvdb/41708 . Por otra parte, probablemente podría culpar parcialmente de eso a los oscuros requisitos de seguridad de PHP.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

3
La ofuscación, si se hace con una herramienta confiable, no cambia nada acerca de la confiabilidad de un programa. La compilación binaria es una especie de ofuscación extrema y, sin embargo, supongo que está seguro de que el motor PHP de Zend es confiable. (La ofuscación o compilación hecha con herramientas malas no debería contar).
Ira Baxter

1
cualquier persona con medio cerebro sabe que php está luchando (léase "no existente") en el mercado de software empresarial del mundo real porque no está ofuscado en y asp.net sí. Estoy harto de que los evangelistas de mente débil digan algo más. (y sí, eso es ignorancia deliberada) El código abierto ha estado fuera demasiado tiempo y ha sido probado y encontrado con demasiada frecuencia para que haya otra conclusión que no sea esta: ¿pasatiempo? Fuente abierta. ¿Trabajo? Cifrar Solo los tontos / idiotas / personas que viven en una burbuja / tienen un paterno rico pueden pensar alguna vez en algo diferente.
Conners

2
Ese comentario es casi incomprensible para mí, pero parece implicar que no tiene sentido vender software de código abierto o software que se basa en software de código abierto. En caso de que no lo haya notado, Java es "empresarial", de código abierto y tan exitoso como esa cosa .NET. mi empresa gana millones de dólares y nunca tuvimos que usar ofuscación. Pregúntese esto: ¿de qué sirve vender software si no puede soportarlo / mejorarlo (es decir: simplemente descifró el software de otra persona y lo volvió a vender)?
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.