Pregunta

Estoy seguro de que muchos lectores de SO han utilizado Lutz Roeder's reflector .NET para descompilar su código .NET.Me sorprendió la precisión con la que se podía reconstruir nuestro código fuente a partir de nuestros ensamblajes compilados.

Me interesaría saber cuántos de ustedes utilizan la ofuscación y para qué tipo de productos.

Estoy seguro de que este es un tema mucho más importante para, digamos, una aplicación .NET que se ofrece para descargar a través de Internet, en lugar de algo creado a medida para un cliente en particular.

¿Fue útil?

Solución

No me preocuparía demasiado por eso.Prefiero concentrarme en lanzar un producto increíble, conseguir una buena base de usuarios y tratar bien a tus clientes que preocuparme por el porcentaje mínimo de usuarios preocupados por robar tu código o mirar la fuente.

Otros consejos

Recuerde, la ofuscación no es cifrado.En mi humilde opinión, si alguien percibe valor en la ingeniería inversa de su código, lo hará.Esto es cierto para el código administrado o el código nativo, ofuscado o no.Claro, la ofuscación disuade al observador casual, pero ¿su negocio está realmente amenazado por esas personas?Cada método de ofuscación de .NET que he visto hace que tu vida como desarrollador sea más difícil.

Hay servicios que ofrecen verdadero cifrado, como SLPS de Microsoft.Ver http://www.microsoft.com/slps/default.aspx

Actualmente ocultamos toda nuestra producción, a pesar de que somos una empresa pequeña que vende software especializado a un pequeño número de clientes.

Tomamos esta decisión por una simple razón: descubrimos que un ex empleado descontento se estaba acercando activamente a nuestros clientes solicitando archivos binarios; había cierta preocupación de que tuviera la intención de realizar ingeniería inversa en características más nuevas para ofrecer funcionalidades competitivas.

Por supuesto, todavía puede hacerlo si utiliza el software, pero no hay ninguna razón para ponérselo fácil.

No hay nueva ofuscación, pero sí muchos trucos de compilación desde la versión 1.1.

Por ejemplo, cada vez que usa un tipo anónimo obtiene IL que se compila con un nombre bastante oscuro.Cada vez que usas rendimiento obtienes una clase completamente nueva que implementa tanto IEnumerable como IEnumerator (optimización inteligente, código ilegible).Cada vez que usas un delegado anónimo obtienes un nuevo método con un nombre que no es válido en todos los lenguajes .Net que conozco, pero eso está bien en IL.

@RobCooper

Habiendo tenido algunas discusiones con mi gerente en el trabajo, dijo que no se ofusca, pero que hace NGEN en la instalación, aparentemente eso debería ser suficiente para evitar que el reflector funcione en sus asambleas, pero no tengo idea de si esto es cierto y en qué medida , así que no lo tomes como evangelio :)

Este no ofrece ningún tipo de protección contra el desmontaje.Primero, imagino que es muy posible extraer archivos sin formato de cualquier paquete de instalación, como un archivo MSI o CAB.

Pero lo más importante es que Ngen se ejecuta en la máquina cliente después de que se haya instalado el ensamblaje.Ngen simplemente obliga al ensamblado a compilarse ahora en lugar de usar JIT más adelante.El ensamblado original permanece y no se modifica y debe permanecer porque es posible que Ngen no pueda compilar el ensamblado completo.

Ngen es para el rendimiento, no para la seguridad, y no hace nada para evitar el desmontaje ni hacerlo un poco más difícil.

fácil para mí: si necesita proteger la propiedad intelectual, ofuscarse, si no, no hacerlo.

Fácil de hacer con las herramientas adecuadas.

Creo que hasta cierto punto TODOS deberíamos preocuparnos por nuestra IP :)

Buena pregunta, ya que es algo sobre lo que me gustaría saber más (actualmente hago no ofuscar).

Después de haber tenido algunas conversaciones con mi gerente en el trabajo, dijo que no ofusca, pero que hace NGEN durante la instalación, aparentemente eso debería ser suficiente para evitar que Reflector trabaje en sus ensamblajes, pero no tengo idea de si esto es cierto y en qué medida. , así que no lo tomes como un evangelio :)

Buena pregunta :) +1

No utilizamos la ofuscación para aplicaciones "no públicas", pero la utilizamos para aplicaciones públicas disponibles.La aplicación ofuscada contiene una gran cantidad de código altamente sofisticado que nos llevó una cantidad exorbitante de tiempo escribir y esa es la razón que me permite pensar que la ofuscación es imprescindible, al menos en ese caso.

La obsfucación tiene una efectividad limitada, puede mantener alejado al tipo casual.La ocultación más eficaz es poner a disposición del usuario sólo la menor cantidad de código.Si puede, haga que la ejecución de su aplicación dependa en gran medida de un servidor pesado.

De acuerdo, la mayoría de las personas que saben codificar aunque sea un poco no necesitan robar su código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top