2011-07-19 10 views
5

He intentado aplicar la protección de código utilizando el ofuscador SmartAssembly a una aplicación WPF Prism, pero la aplicación se niega a funcionar correctamente cuando se ofusca.
Obfuscator Opción "Prevenir que Microsoft Desensamblador IL abra mi ensamblaje"

La única opción que funciona para él es: Prevenir Microsoft IL desensamblador de la apertura de mi montaje.

El rojo de la ayuda de Gates-describe como: Smartassembly puede añadir un atributo a su asamblea que impide Lenguaje Intermedio Común de Microsoft (IL) desensamblador (ildasm.exe) a partir de la apertura de su ensamblaje.

Me pregunto qué tan seria es esta protección, vale la pena aplicarla si el código no está realmente ofuscado. O, en otras palabras, ¿qué es esto Desensamblador de Lenguaje Intermedio Común (IL) de Microsoft (ildasm.exe)? ¿Es la parte principal de todas las herramientas de ingeniería inversa .NET conocidas o es solo una de las muchas de esas herramientas?

Respuesta

9

ildasm.exe es el desensamblador de IL que viene con .Net Framework. Es la única herramienta que todos tienen si tienen .Net. No es un componente, por lo que otros desensambladores no se basan ni nada.

El atributo en cuestión es el SuppressIldasmAttribute. No sé si otros desensambladores como Reflector o ILSpy respetan este atributo, pero lo dudo. Una búsqueda rápida en Google sugiere que no es el caso, y que el SuppressIldasmAttribute solo afecta a ildasm.exe.

Como tal, realmente no protege su ensamblaje y no es de mucha utilidad como herramienta de ofuscación. Pero si se está ofuscando de todos modos, no veo ninguna razón por la cual no aplique este atributo, ya que al menos bloquea el método de desensamblaje más fácil (más comúnmente disponible) y no creo que cause ningún daño.

+1

El atributo es 'System.Runtime.CompilerServices.SuppressIldasmAttribute', y no detiene Reflector. –