2010-01-08 60 views
57

Planeo lanzar una pequeña utilidad a bajo precio. Dado que esto es más un pasatiempo que un negocio, planeé usar Dotfuscator Community Edition que se envía con VS2008.¿Qué tan bueno es Dotfuscator Community Edition? ¿Qué es "suficientemente ofuscador"?

¿Qué tan bueno es?

También podría usar la definición de "suficientemente bueno ofuscador": qué características faltan en Dotfuscator Community Edition para que sea lo suficientemente bueno.

Editar:

he comprobado los precios en el número de ofuscadores comerciales y cuestan mucho. ¿Vale la pena?

¿Hay versiones comerciales que protejan mucho mejor a la ingeniería inversa?

No tengo mucho miedo de que se rompa mi aplicación (será decepcionante si la aplicación es tan mala que a nadie le interesa descifrarla). De todos modos, no está muy protegido, ni las claves de serie demasiado complejas ni los controles de licencia en algunos lugares del código. Simplemente me molesta que sin ofuscación, alguien pueda obtener fácilmente el código fuente, cambiarle la marca y venderlo como propio.

¿Esto sucede mucho?

Edición 2:

Puede alguien recomendar Ofuscador comercial. Encontré muchos de ellos, todos son caros, algunos incluso no tienen precio en el sitio web.

Característicamente, todos los productos parecen más o menos similares.

¿Cuál es el conjunto mínimo de características que debe tener el ofuscador?

Respuesta

49

En pocas palabras, la principal diferencia entre Dotfuscator Community Edition y las otras ediciones "profesionales" es que Community Edition solo ofuscará y cambiará sus espacios de nombre, nombres de métodos y otros aspectos accesibles "públicos" de sus clases. No profundizará en las funciones en sí y ofuscará el código "privado" dentro de la función.

Además, Community Edition no hace nada para ofuscar cosas como el flujo de control dentro de su aplicación, ni "combinará" el código de múltiples ensambles en un ensamblaje. Estas son características que están disponibles dentro de las versiones pagadas "profesionales".

La mejor comparación entre la Community Edition (el "libre" versión que viene con Visual Studio) y el "profesional", pagado por las ediciones se puede encontrar buscando en los siguientes dos enlaces:

Preemptive Dotfuscator Editions Comparison

Dotfuscator Community Edition 3.0 on MSDN

El enlace de MSDN está un poco fuera de fecha, sin embargo, da una mejor explicación de las características reales que están disponibles dentro de las distintas ediciones de Dotfuscator.

EDIT:

ofuscadores comerciales cuestan mucho dinero, y en cuanto al carnero que valen el dinero?Bueno, esa es una decisión que realmente solo tú puedes hacer. Personalmente, diría que no vale la pena en su escenario. En primer lugar, porque solo quiere proteger una aplicación ("Planeo lanzar una pequeña utilidad a bajo precio") y, en segundo lugar, dice que no le preocupa demasiado que la aplicación esté "agrietada" ("I"). No tengo mucho miedo de que se rompa mi aplicación ").

Entiendo cómo puede molestarle que las aplicaciones .NET compiladas, sin ninguna ofuscación, puedan modificarse fácilmente por ingeniería inversa a su código fuente original, y que alguien pueda usar esto para robar su software y venderlo como propio Sin embargo, el hecho es que la piratería de software sí existe y probablemente nunca la detenga.

Intentar detener la piratería de software se ha debatido ad-nausem tanto aquí (Stack Overflow) como a través de Internet.

El consenso general parece ser que necesita enfocar su tiempo y energías más en hacer que su producto sea lo mejor posible en lugar de usar este mismo tiempo tratando de proteger algo que, dado suficiente tiempo/dinero, un " el atacante "puede" crackear "/ robar su software de todos modos, a pesar de sus mejores esfuerzos para evitar que lo haga.

¿Esto sucede mucho?

Yo diría que probablemente pase mucho menos de lo que crees. Claro, el software se resquebraja, pero no creo que mucha gente robe el código fuente de otro y lo renombre completamente para venderlo como propio. No estoy diciendo que no, o que no haya sucedido, pero ciertamente no es algo común.

En resumen, yo diría que su mejor opción sería centrarse en hacer que su utilidad sea lo mejor posible y utilizar el ofuscador gratuito Dotfuscator, ya que requiere muy poca inversión de tiempo/dinero, para ocultar su código de las miradas indiscretas más obvias, pero no pierda el sueño sobre el hecho de que si alguien quiere crackear/robar su producto/código lo suficientemente mal, lo harán.

+0

Tenga en cuenta que el enlace PreEmptive hace referencia a las características de CE que están en la versión de envío con Visual Studio 2010. Que tiene una mayor funcionalidad de la que se suministra con VS2008. – mletterle

+0

Gracias por la información. Edité la pregunta. ¿Desea comentar preguntas adicionales? – zendar

+0

@mletterle - Muy buen punto. No había visto la mención de VS 2010 en la parte inferior de la página, pero sabía que PreEmptive había actualizado su sección "comparar ediciones" de su sitio web. – CraigTP

11

Creo que Dotfuscator Community Edition incluida con Visual Studio es una solución bastante ingenua. Proporciona solo el cambio de nombre de símbolo y no confunde el flujo de control en absoluto. Y si alguien decide robar su código, solo tendrá que refactorizar todos los nombres, lo cual es bastante fácil con una pequeña cantidad de clases.

También puede confiar en la descompilación no tan perfecta proporcionada por Reflector (por lo general, estropea los bloques de interruptores, genera muchos errores, no coincide con los bloques if-else, etc.).

Pero le sugiero que pruebe Eziriz .NET Reactor. Cuesta solo $ 179 (la mejor relación precio/características de AFAIK). Proporciona técnicas de ofuscación estándar, como el cambio de nombre de los símbolos, el cifrado de cadenas, la ofuscación del flujo de control. Como una buena ventaja, crea el iniciador nativo para su aplicación, que contendrá su ensamblaje principal y todas las referencias de terceros cifradas y cargadas a pedido. Además, proporciona algunas capacidades de licencia.

De todos modos, la inversión de la aplicación .NET no es tan difícil, lo hice por diversión y puedo decir que es solo cuestión de tiempo y dinero (y por supuesto, sentido común) qué tan rápido se ralentizará o revertirá su aplicación.

+0

Todo, excepto el cambio de nombre de símbolo puede ser reverenciado automáticamente. Ver https://bitbucket.org/0xd4d/de4dot/ – Console

+0

Estoy absolutamente de acuerdo. Pero esta es la parte más difícil. –

8

Como mínimo, un Ofuscador debe tener:

  1. cifrado cadena
  2. Símbolo cambio de nombre
  3. flujo de control de la ofuscación

bueno tener características son:

  1. Protección de recursos
  2. Asamblea fusión/incrustar
  3. externa llamada al método ocultar
  4. Capacidad de auto-signo asambleas ofuscado
  5. Soporte para ensamblados satélite
  6. Dead-código de eliminación
  7. reducción de metadatos
  8. Anti- descompilador (Reflector)
  9. Anti-tamper
  10. Anti-Depuración

Eche un vistazo a nuestro producto Crypto Obfuscator que admite todo esto.

+0

Estoy de acuerdo contigo Logicnp. Y la comunidad Dotfuscator no es compatible con el cifrado de cadenas. –

5

Otra forma de evitar el código de ingeniería inversa es cuando coloca su dll si no puede permitirse los ofuscadores que sí lo hacen. Y en sus ensamblajes antes del despliegue, indique al compilador dónde buscarlos, lo que era una práctica antigua que dificultaba la ingeniería inversa. Pero como ya se dijo, concéntrese principalmente en desarrollar un producto excelente y buenas prácticas de codificación, entonces podrá permitirse una buena aplicación ofuscadora en el futuro. Además, trate de no preocuparse demasiado por que otros descifren su código porque la mayoría de los piratas informáticos descifran el código, solo encuentran una manera de usar el producto sin pagarlo y no robar código o aprender de un programador principiante. Sí, desearía que JIT solo admitiera C# y vb.net, lo que realmente hubiera reducido la ingeniería inversa, pero dado que jit puede leer muchos debido a que .net es realmente amigable con el idioma, ese es el precio. Así que codifique y gane dinero, compre algunos valores adicionales.