Pregunta

Si se trata de un ensamblaje, ¿es normal que ILDASM todavía lo desmonte?

Está bien. Escribí una biblioteca de clase Helloworld y la dll siguiente se llama ngenildasmtest.dll. -> dirigido al .NET FW 4.

Desde el símbolo del sistema VS 2010, lo hice

gacutil -i NGenILDasmTest.dll

Pude ver el ensamblaje instalado en el GAC. Y corrí ililnas para poder ver la IL. Hasta aquí todo bien.

Entonces corro

ngen NGenILDasmTest.dll

(No especificé ninguna opción para NGEN). Y esta asamblea se compiló con éxito. Lo encontré con un nombre nGenildasmtest.ni.dll debajo de la carpeta

C:\Windows\Assembly\NativeImages_v4.0.30319_32\NGenILDasmTest\81d49dd4c7df22fb3df530402b58ffc9

Ahora, cuando ejecuto Ildasm como abajo

ildasm "C:\Windows\Assembly\NativeImages_v4.0.30319_32\NGenILDasmTest\81d49dd4c7df22fb3df530402b58ffc9\NGenILDasmTest.ni.dll"

Pude ver el contenido del ensamblaje NGEN-ED. ¿Esto es normal?.

Técnicamente hablando, NGEN genera instrucuciones de CPU nativas para la IL (y aparentemente la coloca en C: Windows Assembly NativeImages_V4. ##### 32 - En mi caso). Si ese es el caso, ¿cómo puedo ver el ensamblaje NGEN-ED como IL usando ILDASM?

Por favor, ayúdame a entender que 'poco algo' que me estoy perdiendo aquí.

¿Fue útil?

Solución

Un ensamblaje NGEN'ED es el código IL más nativo. La IL no está despojada. A menudo se confirma que los conjuntos de NGEN contienen solamente la imagen nativa. La información original todavía se necesita para metadatos.

Microsoft no parece tener información muy específica sobre las partes internas de un ensamblaje NGEN. La mayoría de la información que sabemos es de Ingeniería inversa.

EDITAR:

Después de instalar .NET Framework 1.1 (yay ..) - parece que .NET 1.1 NGEN lo hace Desplárese con la IL. Parece que comienza en V2: la IL se mantiene. Esta parece ser la razón por la cual hay información contradictor. La razón exacta por la que no se ha conocido este cambio.

Hay un buen artículo sobre algunas de las partes internas de NGEN (y cómo es una idea extremadamente mala para la ofuscación) aquí: http://www.woodmann.com/forum/entry.php?...

Ahora, lo interesante de NGEN es que no elimina la IL o los metadatos, porque si bien el código IL no es necesario para la ejecución, los metadatos son, porque todas las cadenas y otros datos relevantes que las necesidades del programa están contenidas dentro del metadatos. Entonces, NGEN copia todos los metadatos a la sección .il del exe nativo, y copia el código IL como una ocurrencia tardía

Otros consejos

Si observa una ofuscación rápida/fácil, escriba un ensamblaje de modo mixto en C ++, que será un cargador de arranque de su propio ensamblaje (cargará Legacy .NET FW 4.0 a través de com en código nativo y usará una interfaces públicas declaradas de gestionadas administradas Parte, Trough .TLB generado para su ensamblaje administrado) sostenido como un recurso cifrado (usando RSA) y cifre el código C ++ nativo, luego firme los dos ensamblados. Que evitará que el ILDASM su ensamblaje aún le permita depurar y construir un proyecto (utilizando eventos de compilación)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top