Como firmar una dll no firmada
Hay ocasiones en las que contamos con una dll pero no con su código, y necesitamos que esta tenga nombre seguro, ¿Que hacemos...? simbolo de sitema de .NET Framework SDK. nos puede ayudar.
Nota: Les recomiendo que no cambien el nombre a la dll, usen su nombre original para todos los archivos, pues pueden fallar las referencias que se hagan al ensamblado que están firmando.
Paso 1: Desemsamblar la dll o ensamblado
ildasm myTest.dll /out:myTest.il
Paso 2: reensamblar usando tu clave de nombre seguro, (sino cuentas con un par de claves puedes ver como crearlas aqui).
ilasm myTest.il /res:myTest.res /dll /key:myTest.snk /out:myTest.dll
Para verificar que el ensamblado ha sido firmado correctamente puedes usar el siguiente comando
sn -vf myTest.dll
Nota: Les recomiendo que no cambien el nombre a la dll, usen su nombre original para todos los archivos, pues pueden fallar las referencias que se hagan al ensamblado que están firmando.
Me has salvado la vida! Gracias!!
ResponderEliminarthanks
ResponderEliminarlo hize tal cual y no me dejo
ResponderEliminarINVALID COMMAND LINE OPTION: /res:Utilerias.res
Usage: ildasm [options] [options]
y me saco las opciones
que versión del .net sdk estas usando?
Eliminareste ejemplo fue realizado con .net sdk 2.0 en windows xp profesional serpack 3.
Eliminares posible que lo estés ejecutando en un entorno con otras condiciones y por eso no obtengas los resultados esperados.
no me esta reconociento las opciones /res ni /dll
ResponderEliminarintente hacer con el archivo AxInterop.AcroPDFLib.dll pero me dice "not found o not PE file". como le hago ya que mi aplicacion C# de visual studio 2008 me dice que no tiene un nombre seguro
ResponderEliminarBuenas.
ResponderEliminarA mi me funciona en algunos casos, en otros no.
Por ejemplo al firmar la librería "ServiceStack.Interfaces.dll", agregarla y compilar, indica que no se puede encontrar un tipo que hay definido en ella, que agrege una referencia a esa misma dll (pero sin firmar).
El error es el siguiente:
Error 8 El tipo 'ServiceStack.Messaging.IMessageService' está definido en un ensamblado al que no se hace referencia. Debe agregar una referencia al ensamblado 'ServiceStack.Interfaces, Version=3.9.25.0, Culture=neutral, PublicKeyToken=null'. C:\Gnoss\version .1\pruebaFirmas2\GnossCore\ServiceStack.Redis\Messaging\RedisTransientMessageService.cs 19 15 ServiceStack.Redis
Grandioso!!!!
ResponderEliminar'nombreDLL.dll' has no valid CLR header and cannot be disassembled. Socorro xd
ResponderEliminar