Aquí podría ser tu PUBLICIDAD


Herramientas / estrategia de ofuscación de .NET

votos
146

Mi producto tiene varios componentes: ASP.NET, la aplicación Windows Forms y el servicio de Windows. 95% más o menos del código está escrito en VB.NET.

Por razones de Propiedad Intelectual, necesito ofuscar el código, y hasta ahora he estado usando una versión de dotfuscator que ahora tiene más de 5 años. Estoy pensando que es hora de pasar a una nueva herramienta de generación. Lo que estoy buscando es una lista de requisitos que debería considerar al buscar un nuevo ofuscador.

Lo que sé que debería buscar hasta ahora:

  • Serialización / Deserialización . En mi solución actual, simplemente le digo a la herramienta que no ofusque a los miembros de datos de clase porque el dolor de no poder cargar los datos que se serializaron anteriormente es simplemente demasiado grande.
  • Integración con el proceso de compilación
  • Trabajando con ASP.NET . En el pasado, he encontrado esta problemática debido a los nombres .dll cambiantes (a menudo uno por página), que no todas las herramientas manejan bien.
Publicado el 05/08/2008 a las 17:20
fuente por usuario csmba
En otros idiomas...        العربية       

31 respuestas

votos
49

Hemos probado varios ofuscadores. Ninguno de ellos trabaja en una gran aplicación cliente / servidor que usa la comunicación remota. El problema es que el cliente y el servidor comparten algunos dlls, y no hemos encontrado ningún ofuscador que pueda manejarlo.

Hemos probado DotFuscator Pro, SmartAssembly, XenoCode, Salamander y varias aplicaciones pequeñas cuyos nombres se me escapan.

Francamente, estoy convencido de que la ofuscación es un gran truco.

Incluso los problemas que aborda no son del todo un problema real. Lo único que realmente necesita proteger son las cadenas de conexión, los códigos de activación, cosas sensibles a la seguridad como esa. Esta tontería de que otra empresa va a realizar ingeniería inversa en toda la base de código y crear un producto competidor a partir de ella es algo de la pesadilla de un administrador paranoico, no de la realidad.

Respondida el 07/08/2008 a las 07:15
fuente por usuario Judah Himango


Aquí podría ser tu PUBLICIDAD


votos
39

Estoy 'Knee Deep' en esto ahora, tratando de encontrar una buena solución. Aquí están mis impresiones hasta ahora.

Xenocode : tengo una licencia anterior para Xenocode2005 que solía usar para ofuscar mis ensamblados .net 2.0. Funcionó bien en XP y fue una solución decente. Mi proyecto actual es .net 3.5 y estoy en Vista, el soporte me dijo que lo probara, pero la versión 2005 ni siquiera funciona en Vista (bloqueos), así que ahora tengo que comprar 'PostBuild2008' en un punto de precio gobsmacking de $ 1900. Esta podría ser una buena herramienta pero no voy a averiguarlo. Muy caro.

Reactor.Net : este es un punto de precio mucho más atractivo y funcionó bien en mi Standalone Executeable. El módulo de Licencias también fue agradable y me habría ahorrado un montón de esfuerzo. Desafortunadamente, falta una característica clave y esa es la capacidad de Excluir cosas de la ofuscación. Esto hace que sea imposible lograr el resultado que necesitaba (combinar varios ensambles, ofuscar algunos, no ofuscar otros).

SmartAssembly : descargué el Eval para esto y funcionó a la perfección. Pude lograr todo lo que quería y la interfaz era de primera clase. El punto de precio sigue siendo bastante elevado.

Dotfuscator Pro : no se pudo encontrar el precio en el sitio web. Actualmente en conversaciones para obtener una cotización. Suena ominoso

Confuser : un proyecto de código abierto que funciona bastante bien (para confundir a personas, tal como lo implica su nombre). https://confuser.codeplex.com/
(agregado por jgauffin)

Nota: ConfuserEx está supuestamente "roto" de acuerdo con el Issue # 498 en su repositorio de GitHub.

Respondida el 11/05/2009 a las 07:04
fuente por usuario Michael Dausmann

votos
39

Volver con la ofuscación de .Net 1.1 era esencial: el código de descompilación era fácil, y podía pasar de ensamblar, a IL, a código C # y hacer que compilara nuevamente con muy poco esfuerzo.

Ahora con .Net 3.5 no estoy del todo seguro. Intente descompilar un ensamblado 3.5; lo que obtienes está muy lejos de compilarse.

Agregue las optimizaciones desde 3.5 (mucho mejor que 1.1) y la manera en que los tipos anónimos, los delegados, etc. son manejados por reflexión (son una pesadilla para recompilar). Agregue expresiones lambda, compilador 'magic' como Linq-syntax y var, y C # 2 funciones como yield(que da como resultado nuevas clases con nombres ilegibles). Su código descompilado termina lejos de compilable.

Un equipo profesional con mucho tiempo aún podría revertir la ingeniería de nuevo, pero lo mismo puede decirse de cualquier código ofuscado. De qué código sacaron eso sería inmanejable y muy probable que sea muy defectuoso.

Recomendaría la firma de claves de sus asambleas (lo que significa que si los piratas informáticos pueden recompilar una tienen que volver a compilar todas), pero no creo que la ofuscación valga la pena.

Respondida el 12/08/2008 a las 01:19
fuente por usuario Keith

votos
21

Si busca uno gratuito, puede probar DotObfuscator Community Edition que viene con Visual Studio o Eazfuscator.NET .


Desde el 29 de junio de 2012 , Eazfuscator.NET ahora es comercial. La última versión gratuita disponible es 3.3.

Respondida el 05/08/2008 a las 05:30
fuente por usuario Sam

votos
18

He estado usando smartassembly. Básicamente, eliges un dll y lo vuelve ofuscado. Parece funcionar bien y hasta ahora no he tenido problemas. Muy, muy fácil de usar.

Respondida el 05/08/2008 a las 05:21
fuente por usuario Shawn

votos
10

He probado casi todos los ofuscadores en el mercado y SmartAssembly es el mejor en mi opinión.

Respondida el 07/08/2008 a las 11:44
fuente por usuario Andrew Peters

votos
8

También he estado usando SmartAssembly. Encontré que Ezrinz .Net Reactor es mucho mejor para mí en aplicaciones .net. Ofusca, admite Mono, fusiona ensamblajes y también tiene un módulo de licencia muy agradable para crear una versión de prueba o vincular la licencia a una máquina en particular (muy fácil de implementar). El precio también es muy competitivo y cuando necesitaba ayuda, era rápido. Eziriz

Solo para ser claro, solo soy un consumidor al que le gusta el producto y no está relacionado de ninguna manera con la empresa.

Respondida el 22/08/2008 a las 06:41
fuente por usuario Ronnie

votos
7

La respuesta corta es que no puedes.

Hay varias herramientas que dificultarán que alguien lea su código, algunas de las cuales han sido señaladas por otras respuestas.

Sin embargo, todo esto hace que sea más difícil de leer: aumentan la cantidad de esfuerzo requerido, eso es todo. A menudo, esto es suficiente para disuadir a los lectores ocasionales, pero alguien que esté decidido a profundizar en su código siempre podrá hacerlo.

Respondida el 16/07/2009 a las 10:45
fuente por usuario Bevan

votos
6

Tenemos una aplicación de varios niveles con una interfaz asp.net y winform que también admite la comunicación remota. No he tenido problemas con el uso de cualquier ofuscador, con la excepción del tipo de encriptación que genera un cargador que puede ser problemático en todo tipo de formas inesperadas y que, en mi opinión, no lo vale. En realidad, mi consejo sería más como "Evite encriptar los ofuscadores del tipo cargador como la peste". :)

En mi experiencia, cualquier ofuscador funcionará bien con cualquier aspecto de .net incluyendo asp.net y remoto, solo tienes que intimar con la configuración y aprender qué tan lejos puedes empujarla en qué áreas de tu código. Y tómese el tiempo para intentar la ingeniería inversa de lo que obtiene y ver cómo funciona con las diversas configuraciones.

Usamos varios a través de los años en nuestras aplicaciones comerciales y decidimos en el obfuscator de especias de 9rays.net porque el precio es el correcto, hace el trabajo y tienen un buen soporte aunque realmente no hemos necesitado el soporte en años, pero para ser honestos No creo que importe realmente qué ofuscador utilizas, los problemas y la curva de aprendizaje son los mismos si quieres que funcione correctamente con remoting y asp.net.

Como otros han mencionado, todo lo que realmente está haciendo es el equivalente a un candado, lo que hace que las personas que de otra manera son sinceros lo hagan o dificulten la simple recompilación de una aplicación.

El licenciamiento es generalmente el área clave para la mayoría de las personas y, sin embargo, definitivamente debe utilizar algún tipo de sistema de certificado firmado digitalmente para obtener licencias. Su mayor pérdida vendrá de compartir casualmente las licencias si no tiene un sistema inteligente en su lugar, las personas que rompen el sistema de licencias nunca van a comprar en primer lugar.

Es muy fácil llevar esto demasiado lejos y tener un impacto negativo en sus clientes y su negocio, hacer lo que es simple y razonable y luego no preocuparse.

Respondida el 16/11/2008 a las 08:57
fuente por usuario JohnC

votos
5

Crypto Obfuscator aborda todas sus preocupaciones y escenarios. Eso :

  1. Excluye automáticamente tipos / miembros de ofuscación basados ​​en reglas. Los tipos / campos serializados son uno de ellos.
  2. Se puede integrar en el proceso de compilación utilizando MSBUild.
  3. Admite proyectos ASP.Net.
Respondida el 09/10/2009 a las 10:42
fuente por usuario logicnp

votos
5

Durante los últimos dos días he estado experimentando con Dotfuscator Community Edition advanced (una descarga gratuita después de registrar el CE básico que viene incluido con Visual Studio).

Creo que la razón por la que más personas no usan la ofuscación como opción predeterminada es que es una molestia grave en comparación con el riesgo. En proyectos de prueba más pequeños, pude obtener el código ofuscado ejecutándose con mucho esfuerzo. La implementación de un proyecto simple a través de ClickOnce fue problemática, pero alcanzable luego de la firma manual de los manifiestos con mage. El único problema era que, por error, el seguimiento de la pila volvía a estar oculto y el CE no tenía un desobfuscator o clarificador empaquetado.

Traté de ofuscar un proyecto real que está basado en VSTO en Excel, con integración de Virtual Earth, muchas llamadas a servicios web y un contenedor de IOC y mucho de reflexión. Fue imposible.

Si la ofuscación es realmente un requisito crítico, debe diseñar su aplicación teniendo esto en cuenta desde el principio, probando las construcciones ofuscadas a medida que avanza. De lo contrario, si se trata de un proyecto bastante complejo, vas a terminar con una gran cantidad de dolor.

Respondida el 04/02/2009 a las 11:40
fuente por usuario burnside

votos
3

He encontrado el Agile.Net proporcionan muy buena protección para su ensamblado de .NET, ya que ofrecen no sólo la ofuscación, sino también el cifrado. Descargar una prueba gratuita.
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx

Respondida el 03/09/2013 a las 04:26
fuente por usuario user2743618

votos
3

Evitar el reactor. Es completamente inútil (y sí he pagado por una licencia). Xenocode era el mejor que encontré y compró una licencia para también. El apoyo fue muy bueno, pero yo no lo necesitaba más que sólo funcionó. He probado todos los Ofuscador que pude encontrar y mi conclusión es que Xenocode era de lejos el más robusto e hizo el mejor trabajo (también posibilidad de procesar su exe .NET a un exe nativa que no he visto en ningún otro puesto.).

Hay dos diferencias principales entre el reactor y Xenocode. La primera de ellas es que Xenocode realmente funciona. La segunda es que la velocidad de ejecución de sus asambleas no es diferente. Con el reactor era de aproximadamente 6 millones de veces más lento. También me dio la impresión de que el reactor era una operación de un solo hombre.

Respondida el 04/05/2011 a las 10:43
fuente por usuario Michael Finlan

votos
3

Puede usar "Dotfuscator Community Edition": viene de manera predeterminada en Visual Studio 2008 Professional. Puedes leer sobre esto en:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

La versión "profesional" del producto cuesta dinero, pero es mejor.

¿De verdad necesitas tu código ofuscado? Por lo general, hay muy poco mal con la descompilación de su aplicación, a menos que se utilice con fines de seguridad. Si le preocupa que la gente "robe" su código, no lo haga; la gran mayoría de las personas que buscan su código será para fines de aprendizaje. De todos modos, no existe una estrategia de ofuscación totalmente efectiva para .NET: alguien con suficiente habilidad siempre podrá descompilar / cambiar tu aplicación.

Respondida el 16/07/2009 a las 10:47
fuente por usuario Callum Rogers

votos
3

No he tenido problemas con Smartassembly.

Respondida el 16/09/2008 a las 12:12
fuente por usuario Geoff Appleford

votos
3

Recientemente he intentado conectar la salida de un ofuscador libre en el otro ofuscador libre, a saber, Dotfuscator CE y el nuevo ofuscador de Babel en CodePlex. Más detalles en mi blog .

En cuanto a la serialización, he movido ese código a una DLL diferente y lo incluí en el proyecto. Pensé que no había ningún secreto que no estuviera en el XML de todos modos, por lo que no necesitaba ofuscación. Si hay algún código serio en esas clases, el uso de clases parciales en el ensamblaje principal debe cubrirlo.

Respondida el 11/09/2008 a las 12:53
fuente por usuario harriyott

votos
3

Debería usar lo que sea más barato y mejor conocido para su plataforma y llamarlo un día. La ofuscación de los lenguajes de alto nivel es un problema difícil, porque los flujos de código de operación de máquina virtual no sufren los dos mayores problemas que tienen los flujos de opcode nativos: identificación de función / método y aliasing de registro.

Lo que debes saber sobre la reversión de bytecode es que ya es una práctica estándar para los evaluadores de seguridad revisar el código X86 directo y encontrar vulnerabilidades en él. En X86 sin procesar, no puede encontrar funciones válidas, y mucho menos rastrear una variable local a lo largo de una llamada de función. En casi ninguna circunstancia, los reversibles de códigos nativos tienen acceso a funciones y nombres de variables, a menos que estén revisando el código de Microsoft, para lo cual MSFT brinda dicha información al público.

"Dotfuscation" funciona principalmente por la función de aleatorización y nombres de variables. Probablemente sea mejor hacerlo que publicar código con información de nivel de depuración, donde el reflector literalmente está renunciando a su código fuente. Pero cualquier cosa que haga más allá de esto es probable que obtenga rendimientos decrecientes.

Respondida el 10/09/2008 a las 10:38
fuente por usuario tqbf

votos
2

Aquí hay un documento de Microsoft. Espero que ayude ..., es de 2003, pero aún podría ser relevante.

Respondida el 16/07/2009 a las 10:38
fuente por usuario nullArray

votos
2

He estado ocultando código en la misma aplicación desde .Net 1, y ha sido un gran dolor de cabeza desde una perspectiva de mantenimiento. Como mencionó, se puede evitar el problema de la serialización, pero es muy fácil cometer un error y ofuscar algo que no quería ofuscar. Es fácil romper la construcción, o cambiar el patrón de ofuscación y no poder abrir archivos viejos. Además, puede ser difícil averiguar qué salió mal y dónde.

Nuestra elección fue Xenocode, y si volviera a tomar la decisión hoy, preferiría no ofuscar el código ni usar Dotfuscator.

Respondida el 21/08/2008 a las 09:31
fuente por usuario Jon Dewees

votos
1

Hay una buena versión de código abierto llamado Obfuscar. Parece que funciona bien. Tipos, propiedades, campos, métodos pueden ser excluidas. El original se encuentra aquí: https://code.google.com/p/obfuscar/ , pero ya que parece que no se actualizará más, alguien se bifurcó a aquí: https://obfuscar.codeplex.com/

Respondida el 19/12/2013 a las 05:24
fuente por usuario erict

votos
1

Tuve que usar una protección ofuscación / recurso en mi última rpoject y encontré Crypto Obfuscator como una agradable y sencilla herramienta a utilizar. La cuestión de serialización es sólo una cuestión de ajustes de esta herramienta.

Respondida el 22/04/2011 a las 12:18
fuente por usuario Pavel Turčín

votos
1

la forma gratuita sería usar dotfuscator desde Visual Studio, de lo contrario tendrías que salir y comprar un ofuscador como Postbuild ( http://www.xenocode.com/Landing/Obfuscation.aspx )

Respondida el 16/07/2009 a las 10:38
fuente por usuario Russ Bradberry

votos
1

Todo depende del lenguaje de programación que uses. Lea el artículo: Código ofuscado

Respondida el 16/07/2009 a las 10:31
fuente por usuario Michał Ziober

votos
1

Estamos utilizando SmartAssembly en nuestro cliente de Windows. Funciona bien

Agrega algunos problemas adicionales también. La impresión de sus nombres de clase en archivos de registro / excepciones debe ser desactivada. Y, por supuesto, no puede crear una clase a partir de su nombre. Por lo tanto, es una buena idea echar un vistazo a su cliente y ver qué problemas puede obtener ofuscando.

Respondida el 04/04/2009 a las 12:28
fuente por usuario Carra

votos
0

Smartassembly es grande, yo estaba acostumbrado en la mayoría de mis proyectos

Respondida el 01/12/2010 a las 05:49
fuente por usuario guaike

votos
0

También uso smartassembly. Sin embargo, no sé cómo funciona para una aplicación web. Sin embargo, me gustaría señalar que si su aplicación utiliza protección de tipo shareware, asegúrese de que no verifique una licencia con un retorno booleano. es muy fácil byte crackear. http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx

Respondida el 04/04/2009 a las 11:53
fuente por usuario Rick Ratayczak

votos
0

También es posible que desee examinar las nuevas tecnologías de protección de códigos, como Metaforic y ViLabs, y las nuevas tecnologías de protección contra copia de software, como ByteShield . Divulgación: trabajo para ByteShield.

Respondida el 03/01/2009 a las 07:56
fuente por usuario Christian Olsson

votos
-1

Ofuscación no es una protección real.

Si usted tiene un archivo ejecutable .NET hay una FAR mejor solución.

Yo uso Themida y puedo decir que funciona muy bien.

El único inconveniente de Themida es que no puede proteger .NET Dlls. (También protege código C ++ en exe y DLL)

Themida es, con mucho más barato que los ofuscadores aquí mencionadas y es el mejor en la lucha contra la piratería de protección en el mercado. Se crea una máquina virtual se se ejecutan las partes críticas de su código y se ejecuta varios hilos que detectan la manipulación o puntos de corte establecidos por una galleta. Convierte el .NET Exe en algo que Reflector ni siquiera reconoce como un ensamblado de .NET más.

Por favor, lea la descripción detallada en su página web: http://www.oreans.com/themida_features.php

Respondida el 06/03/2014 a las 04:03
fuente por usuario Elmue

votos
-1

Probé la versión demo de Eziriz ... Me gustó. Pero nunca trajo el software.

Respondida el 04/09/2009 a las 04:21
fuente por usuario Kalpak

votos
-2

Trate de usar este servicio http://morpher.com/

Lo utilicé para un proyecto.

Respondida el 27/12/2013 a las 11:22
fuente por usuario Johan

votos
-2

He probado un producto llamado Revolver y lo hace un buen trabajo en la que le da un cierto control ... Aunque carece de muchas cosas que ofrece Eziriz pero el precio de artículos usados ​​es demasiado bueno ...

Respondida el 06/09/2013 a las 06:27
fuente por usuario DotOftheDotNet


Aquí podría ser tu PUBLICIDAD