wolf proteger inversa ingenieria ilspy gray descompilar como codigo .net obfuscation reflector

.net - proteger - ilspy



¿Qué usas para proteger tu código.NET de ingeniería inversa? (9)

Por un tiempo estábamos usando una herramienta llamada CodeVeil. Me pregunto si hay mejores alternativas.

Editar: Antes de que más personas malinterpreten la pregunta, soy consciente de que un cracker determinado probablemente podría vencer a cualquiera de estas herramientas. Aunque no estoy demasiado preocupado por ellos. Estas herramientas están destinadas a detener el "cracker ocasional" y evitar que las personas roben la IP de nuestra compañía. Si son lo suficientemente buenos como para pasar una herramienta decente, probablemente no estén interesados ​​en robar nuestro código malicioso :-P


Escuché que Obfusticator es bueno; se usa en .Net Reflector.


Hay varias herramientas populares para la ofuscación, incluida Dotfuscation, que tiene una versión "ligera" que se incluye con Visual Studio 2005 y 2008. Tienen una versión Pro que hace mucho más que simplemente cambiar el nombre y el nombre de la función. Sin embargo, el código aún se puede ver, simplemente se ha mezclado un poco para dificultar la lectura y asimilar el flujo lógico del software.

Otra técnica es usar otros programas que encriptarán el programa y lo desencriptarán en tiempo de ejecución. Sin embargo, esta tampoco es una solución perfecta. De hecho, no existe una solución perfecta de la que tenga conocimiento que impida que un ingeniero determinado realice ingeniería inversa del software, si se le aplica el tiempo y el esfuerzo suficientes.

Lo que realmente se reduce a determinar el nivel de protección que hará que sea lo suficientemente difícil disuadir al hacker casual, y que sea tan costoso realizar ingeniería inversa como sea posible, por lo que al menos la ingeniería inversa tiene un costo en cualquier momento o dinero, o idealmente, ambos. Cuanto más costosos sean los costos de ingeniería inversa, menos personas estarán dispuestas a esforzarse. Y ese es el gran punto de ofuscación.

Algunos piensan que usar un compilador como el compilador de C ++ que se compila en código nativo evitará este tipo de ingeniería inversa, pero no es así. Un buen desensamblador permitirá que incluso los ejecutables binarios puros sean de ingeniería inversa, por lo tanto, no existe una solución perfecta. Si la computadora puede leerlo y ejecutarlo, entonces se puede escanear y rastrear la memoria que está usando la computadora, eludiendo todos los intentos de encriptar, ofuscar o cualquier otro medio para mantener su código fuera de las manos de un ingeniero determinado.


He tenido mucho éxito con Xenocode Postbuild. La herramienta puede oscurecer los ensamblados .NET, proteger el desensamblaje del reflector, combinar ensamblajes .NET en un solo ejecutable ("virtualización") e incluso compilar aplicaciones .NET para ejecutables independientes que no necesitan el tiempo de ejecución .NET instalado.


Honestamente, no hay mucho que puedas hacer además de una ofuscación con herramientas como las que mencionaste. .NET está un paso por encima de los lenguajes de scripting, excepto que los comandos de scripts son binarios y se llaman IL. Eso es un poco más de simplificación, pero no está muy lejos de la realidad. Cualquier buen programa escrito usando Reflection se puede usar para aplicar ingeniería inversa a las aplicaciones .NET, o si tiene suficiente conocimiento, un buen editor hexadecimal.


La compilación de sus resultados de aplicaciones .NET en ensambles de salida que contienen una gran cantidad de metainformación. Esta información hace que sea muy fácil reconstruir algo muy parecido al código original. Se puede utilizar una excelente herramienta gratuita llamada .NET Reflector para hacer exactamente eso y es una forma popular de examinar cómo funcionan las bibliotecas de la clase base. Descargue y use esa herramienta para ver las versiones reconstruidas de C # / VB.NET del contenido del ensamblaje.

Si usted es una organización comercial, entonces no quiere que a la gente le resulte fácil ver su código caro de producir. Un método popular es utilizar Obfuscation para mezclar los contenidos de una manera que no altere la forma en que se ejecuta, pero que hace que sea difícil de entender. La ofuscación usa técnicas como cambiar el nombre de variables y métodos. El propósito de los métodos ''a1'', ''a2'', ''a3'' es mucho más difícil que el original ''GetName'', ''UpdateInterestRate'' y ''SetNewPassword''.

Así que usar ofuscación hace que sea mucho más difícil para las personas entender lo que está haciendo el código y los algoritmos que usa. Sin embargo, no lo hace imposible. De la misma forma en que el código C ++ aún puede ser entendido por un experto en ensamblaje que está dispuesto a pasar el tiempo trabajando a través de su binario, un experto en MSIL eventualmente puede descifrar su código ofuscado. Pero aumenta la barrera hasta el punto en que pocos se molestarán en intentarlo.


No estoy convencido del valor de estas herramientas. Ninguna de las soluciones tecnológicas impide la ingeniería inversa mejor que las protecciones legales, como licencias, marcas comerciales, patentes, derechos de autor, etc.

.NET realmente es un gran movimiento de fuente transparente. Es mucho mejor que, en cambio, defina los términos de uso en torno a su IP, como las licencias y los derechos de autor.


Perdón por resucitar una publicación anterior, pero creo que el Reactor .NET de Eziriz funciona brillantemente.

De hecho, lo uso para todas mis aplicaciones .net y aparentemente no existe una herramienta existente que pueda descompilar un programa protegido con .net reactor. Se pueden encontrar más detalles en la página de información allí, http://www.eziriz.com/dotnet_reactor.htm . Pruébalo con la versión de prueba y el reflector .net y puedes verlo por ti mismo.


Otro es Crypto Obfuscator : es más asequible que otros, y tiene varios métodos de ofuscación y protección para obstaculizar a los hackers ocasionales y no tan informales.


DESCARGO DE RESPONSABILIDAD: No trabajo para RedGate los fabricantes de SmartAssembly. Solo soy un cliente muy feliz que encontró una buena solución asequible.

La elección es muy simple, elija SmartAssembly! No pierda su tiempo o dinero con los otros ofuscadores en el mercado. Gasté más dinero en términos de horas no facturables evaluando productos de la competencia. Todos tenían defectos fatales y eran casi imposibles de depurar. SmartAssembly es una aplicación pulida, fácil de usar, bien documentada y con excelente soporte. Publique una pregunta en su foro y espere una respuesta razonablemente rápida por parte de los desarrolladores reales.

SmartAssembly es más que un obsfuscator. Tiene una serie de características, incluido un generador de informes de fallas altamente personalizable e incorporado que sus clientes pueden enviarle automáticamente por correo electrónico. Puede ver estos informes en su propio servidor o en servidores de puertas rojas. No puedo decirte lo útil que es esto cuando pruebas beta o lanzas el producto a los clientes. También genera archivos de depuración para que pueda depurar cualquier problema posterior a la publicación que pueda encontrar con su producto obstruido.

Si está entregando una aplicación comercial, tiene sentido gastar el dinero en un obsfuscator decente. Una mala elección aquí puede comprometer su propiedad intelectual o peor llevarlo a días de depuración horrible. ¿Cuánto costaría esto en comparación con lo que cuesta SmartAssembly?