127 votos

. NET herramientas de ofuscación / estrategia

Mi producto tiene varios componentes: ASP.NET, Windows Formularios de la Aplicación y el Servicio de Windows. el 95% del código está escrito en VB.NET.

Por razones de p.i., necesito para ofuscar el código, y hasta ahora he estado utilizando una versión de dotfuscator que ahora es de más de 5 años de edad. Estoy pensando es el momento de pasar a una nueva generación de la herramienta. Lo que estoy buscando es una lista de requisitos que debo considerar cuando se busca un nuevo obfuscator.

Lo que sé que debo buscar hasta el momento:

  • La serialización/De-la serialización. En mi actual solución, yo simplemente digo que la herramienta no para ocultar cualquier clase de datos de los miembros, porque el dolor de no ser capaz de cargar los datos que anteriormente fue serializado es simplemente demasiado grande.
  • Integración con el Proceso de construcción de
  • Trabajando con ASP.NET. En el pasado, me he encontrado esta problemática, debido a los cambios .dll nombres (suele haber uno por página) - que no todas las herramientas de manejar bien.

43voto

Judah Himango Puntos 27365

Hemos intentado un número de obfuscators. Ninguno de ellos trabajan en una gran aplicación de cliente/servidor que utiliza la comunicación remota. El problema es que el cliente y el servidor comparten algunos archivos dll, y no hemos encontrado ninguna obfuscator que pueden manejar.

Hemos intentado DotFuscator Pro, SmartAssembly, XenoCode, Salamandra, y varias de tiempo pequeñas aplicaciones cuyos nombres se me escapan.

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

Incluso los problemas que aborda no es del todo un problema real. La única cosa que usted realmente necesita para proteger las cadenas de conexión, los códigos de activación, sensibles a la seguridad y cosas así. Esto es una tontería que otra empresa se va a aplicar ingeniería inversa a toda su base de código y crear un producto de la competencia de que es algo de un paranoico administrador de la pesadilla, no de la realidad.

39voto

Keith Puntos 46288

De vuelta con .Net 1.1 ofuscación era esencial: la descompilación del código fue fácil, y se podría ir de la asamblea, a la IL, a código C# y tiene que compila de nuevo con muy poco esfuerzo.

Ahora, con .Net 3.5 no estoy del todo seguro. Intentar descompilar un 3.5 asamblea; lo que se obtiene es un largo, largo camino de la compilación.

Agregar las optimizaciones de 3.5 (mucho mejor que 1.1) y la forma en que los tipos anónimos, los delegados y los demás son manejados por la reflexión (que son una pesadilla para volver a compilar). Agregar las expresiones lambda, compilador de la 'magia' como Linq sintaxis y var, y C#2 funciones como yield (que se traduce en nuevas clases con nombres ilegibles). Su descompilar el código termina un largo, largo camino desde compilable.

Un equipo de profesionales con mucho tiempo aún podría realizar ingeniería inversa de nuevo, pero luego el mismo es verdad de cualquier código ofuscado. ¿Cuál código se levantó de que iba a ser tanto, y es altamente probable que sea muy buggy.

Yo recomendaría la clave de firma de sus asambleas (es decir, si los hackers pueden volver a compilar uno de ellos tiene que volver a compilar todos) pero no creo que la ofuscación de la pena.

29voto

Michael Dausmann Puntos 985

Yo soy " la Rodilla de Profundidad, en este ahora, tratando de encontrar una buena solución. Aquí están mis impresiones hasta el momento.

Xenocode - tengo una vieja licencia para Xenocode2005 que solía usar para camuflar mi .net 2.0 asambleas. Trabajó muy bien en XP y fue una solución digna. Mi proyecto actual es .net 3.5 y estoy en la Vista, el soporte me dijo para darle un ir, pero la versión 2005, no se siquiera funciona en Vista (se bloquea) así que yo y ahora tengo que comprar " PostBuild2008' en un gobsmacking punto de precio de $1900. Esta podría ser una buena herramienta, pero yo no voy a averiguar. Demasiado caro.

Reactor.Net - Este es un precio mucho más atractivo punto y funcionó muy bien en mi Independiente Executeable. La Licencia de módulo era también muy agradable y me habría ahorrado un montón de esfuerzo. Por desgracia, lo Que falta es una característica fundamental y que es la capacidad para Excluir a las cosas de la ofuscación. Esto hace que sea imposible para conseguir el resultado que necesitaba (Combinación de varios ensamblados juntos, ofuscar algunos, no-Ocultar otros).

SmartAssembly - he descargado la Eval para esto y funcionó a la perfección. Yo era capaz de lograr todo lo que yo quería y la Interfaz era de primera clase. Precio todavía es un poco fuerte.

Dotfuscator Pro - no Podría encontrar el precio en la web. Actualmente en conversaciones para obtener una comilla. Suena siniestro.

Confuser - un proyecto de código abierto que funciona bastante bien (para confundir a los ppl, como el nombre lo indica). https://confuser.codeplex.com/
(añadido por jgauffin)

20voto

Sam Puntos 2005

Si lo que buscas es un ser libre que usted podría intentar DotObfuscator Community Edition que viene con Visual Studio o Eazfuscator.NET .


Desde 29 de junio 2012 , el software es ahora comercial. La última versión disponible es libre 3.3.

18voto

Shawn Puntos 8120

He estado usando Smartassembly. Básicamente, usted escoge un dll y lo devuelve ofuscado. Parece que funciona bien y no he tenido ningún problema hasta ahora. Muy, muy fácil de usar.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: