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.

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.

Comentarios

  1. Me has salvado la vida! Gracias!!

    ResponderEliminar
  2. lo hize tal cual y no me dejo

    INVALID COMMAND LINE OPTION: /res:Utilerias.res

    Usage: ildasm [options] [options]
    y me saco las opciones

    ResponderEliminar
    Respuestas
    1. que versión del .net sdk estas usando?

      Eliminar
    2. este ejemplo fue realizado con .net sdk 2.0 en windows xp profesional serpack 3.
      es posible que lo estés ejecutando en un entorno con otras condiciones y por eso no obtengas los resultados esperados.

      Eliminar
  3. no me esta reconociento las opciones /res ni /dll

    ResponderEliminar
  4. intente 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

    ResponderEliminar
  5. Buenas.

    A 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

    ResponderEliminar
  6. 'nombreDLL.dll' has no valid CLR header and cannot be disassembled. Socorro xd

    ResponderEliminar

Publicar un comentario

Entradas populares