visual studio software que para ofuscar ofuscado codigo .net obfuscation

studio - ¿Debería preocuparme por ofuscar mi código.NET?



que es un codigo ofuscado (10)

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

Estoy seguro de que muchos lectores de SO han usado el reflector .NET de Lutz Roeder para descompilar su código .NET. Me sorprendió cuán exactamente nuestro código fuente podía ser reconstruido a partir de nuestros ensamblajes compilados.

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

Estoy seguro de que este es un problema mucho más importante para, por ejemplo, una aplicación .NET que ofreces para descargar a través de Internet en lugar de algo que está diseñado a medida para un cliente en particular.


@Rob Cooper

Tras mantener algunas conversaciones con mi gerente en el trabajo, dijo que no se ofusca, pero NGEN lo instala, aparentemente eso debería ser suficiente para evitar que Reflector trabaje en sus ensamblajes, pero no tengo idea si esto es cierto y en qué medida , así que por favor no lo tomes como un evangelio :)

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

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

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


Actualmente ofuscamos toda nuestra producción, a pesar de que somos un equipo pequeño 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 los clientes que solicitaban binarios. Había cierta preocupación de que intentara realizar una ingeniería inversa de las funciones más nuevas para ofrecer una funcionalidad competitiva.

Por supuesto, todavía puede hacerlo si usa el software, pero no hay razón para hacerlo fácil.


Creo que, en cierta medida, TODOS deberíamos preocuparnos por nuestra IP :)

Buena pregunta, aunque es algo de lo que me gustaría saber más (actualmente no me ofusco).

Tras mantener algunas conversaciones con mi gerente en el trabajo, dijo que no se ofusca, pero NGEN lo instala, aparentemente eso debería ser suficiente para evitar que Reflector trabaje en sus ensamblajes, pero no tengo idea si esto es cierto y en qué medida , así que por favor no lo tomes como un evangelio :)

Buena pregunta :) +1


La obstrucción es limitada en su efectividad, puede mantener alejado al hombre casual. La obstrucción más efectiva es hacer que solo la cantidad más pequeña de código esté disponible para el usuario. Si puede, haga que su aplicación funcione en gran medida en un servidor gordo.


No hay nueva ofuscación, pero muchos trucos de compilación desde 1.1

Por ejemplo, cada vez que utilizas un tipo anónimo obtienes IL que compila de nuevo con un nombre bastante oscuro. Cada vez que utilizas el rendimiento obtienes una clase completamente nueva que implementa tanto IEnumerable como IEnumerator (optimización inteligente, código ilegible). Cada vez que utilizas 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 el IL.


No me preocuparía demasiado. Prefiero concentrarme en publicar un producto excelente, obtener una buena base de usuarios y tratar a sus clientes de forma adecuada que preocuparme por el porcentaje mínimo de usuarios que se preocupan por robar su código o consultar la fuente.


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

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


fácil para mí, si necesita proteger la propiedad intelectual, obscurezca, si no, no lo haga.

Fácil de hacer con las herramientas adecuadas.


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