Blog dedicado a la programación .NET y la informática en general

En cierta ocasión he necesitado asociar un StrongName a un proyecto para luego publicarlo en la GAC. El caso es que en ese momento no pude porque tenía referenciada una librería que no tenía asociada otro StrongName. ¿Qué puede hacerse cuando no se tiene el código fuente?. Una posible solución, aunque no infalible es desemsamblar el fichero y luego volverlo a ensamblar asociándole un nombre fuerte. ¿No se puede firmar de otra forma el ensamblado?, pues yo no he encontrado otra forma. Y OJO, porque firmar digitalmente un ensamblado que no es nuestro puede ser ilegal a menos que lo autorice el propietario.
 
Los contras son que probablemente lo podáis desemsamblar con normalidad pero luego no lo podáis reensamblar, si alguno lo prueba ya me contará.
 
Los comandos son los siguientes:
  1. Primero desemsamblar: ildasm libreria.dll  /out:libreria.il
  2. Se puede comprobar que se genera un fichero .il y puede haber generado un fichero de recursos .res
  3. Ahora toca reensamblar el fichero asociándole un nombre fuerte para firmarlo digitalmente: ilasm libreria.il  /res:libreria.res  /dll  /key:nombreFuerte.snk  /out:libreria.dll
  4. Y por último se puede comprobar que efectivamente tiene el nombre fuerte asociado con el siguiente comando: sn -vf libreria.dll

Dejo un vínculo a información más detallada sobre la herramienta ilasm.

Espero que sea de utilidad.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: