2008-09-20 29 views
14

Por un tiempo estábamos usando una herramienta llamada CodeVeil. Me pregunto si hay mejores alternativas.¿Qué usa para proteger su código .NET de ingeniería inversa?

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

Respuesta

5

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.

-2

He oído que Obfusticator es bueno; se usa en .Net Reflector.

3

Honestamente, no hay mucho que pueda hacer además de algunas ofuscaciones con las herramientas que usted mencionó. .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.

4

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

.NET es realmente un movimiento de fuente transparente grande. 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.

+0

¿Y cuando exporta su software a un país que no cumple las mismas reglas que su propio país? (china f.ex). Por favor, no mencione perogrulladas que obviamente no son ciertas. –

+0

Casper, el punto es que ninguna de estas herramientas protegerá su software del folk determinado para realizar ingeniería inversa/crackearlas. Estoy de acuerdo en que hay muchos países que no hacen cumplir/respetar ninguna ley de PI, pero como señalé, estas herramientas tampoco te protegerán mejor.En el mejor de los casos, impiden la inspección casual. – stephbu

+0

Una vez más con los perogrullos: un conjunto ofuscado correctamente será de orden de magnitud más difícil de aplicar ingeniería inversa que los conjuntos no ofuscados. Ese es un hecho que puedes examinar tú mismo. Si cree que tiene alguna idea de por qué este no es el caso, proporcione argumentación, en lugar de expresar perogrulladas. Sin embargo, comparto tu opinión de que no deberíamos desperdiciar nuestro tiempo y dinero con la ofuscación, pero eso no cambia el hecho de que hacerlo dificultará la ingeniería inversa. –

2

Existen 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 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 complicó un poco para que sea más difícil de leer y asimilar el flujo lógico del software.

Otra técnica es utilizar 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 pirata informático ocasional y hacer que la ingeniería inversa sea tan costosa como sea posible, por lo que la ingeniería inversa tiene un costo en tiempo 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 el uso de 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.

4

La compilación de sus resultados de aplicaciones .NET en conjuntos 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 desea que a la gente le resulte fácil ver su código costoso 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'.

Por lo tanto, el uso de 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 utiliza. Sin embargo, no lo hace imposible. De la misma forma en que el código C++ aún puede ser entendido por un experto ensamblador que está dispuesto a pasar el tiempo trabajando a través de su binario, un experto en MSIL puede eventualmente descifrar su código ofuscado. Pero aumenta la barrera hasta el punto en que pocos se molestarán en intentarlo.

2

Lamento resucitar una publicación anterior, pero creo que el Reactor .NET de Eziriz funciona de forma brillante.

De hecho, yo mismo lo uso para todas mis aplicaciones .net y aparentemente no existe una herramienta existente que pueda descompilar un programa protegido con .net reactor. Más detalles se pueden encontrar 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.

+0

El precio definitivamente parece ser más atractivo que CodeVeil – ilitirit

+0

Sí vale cada centavo, y viene con un administrador de licencias básico :) – GONeale

-1

Otro es Crypto Obfuscator - es más asequible que algunos otros, y tiene varios métodos de ofuscación y protección para obstaculizar a los piratas informáticos causales y no tan informales.

1

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?

Cuestiones relacionadas