Skip to content
← Todas las publicaciones
· Delta1 Labs Guía.NETNuGetOfuscación

Cómo ofuscar un paquete NuGet antes de publicarlo

Distribuye una biblioteca .NET protegida en NuGet sin romper la API pública de la que dependen tus consumidores — una guía paso a paso con Nebula.NET.

Si distribuyes una biblioteca .NET comercial en NuGet, cualquiera que la instale puede abrir tu DLL en un decompilador y leer tu implementación. Puedes protegerla — el truco está en proteger los internos mientras mantienes intacta la API pública que llaman tus consumidores. Nebula se encarga de todo el paquete por ti.

La única regla: conserva tu API pública

Los consumidores referencian tu biblioteca por sus tipos y miembros públicos. Si la ofuscación los renombrara, su código no compilaría contra tu paquete. Así que para una biblioteca el ajuste de oro es preservar la API pública — los nombres públicos/protegidos se mantienen, todo lo interno se renombra, se aplana y se cifra.

Paso 1 — apunta Nebula al paquete

No tienes que desempaquetar nada. Dale a Nebula el .nupkg directamente y ofusca los ensamblados que contiene y vuelve a empaquetar un paquete protegido:

{
  "inputs": ["bin/Release/MyLib.1.2.3.nupkg"],
  "outputDirectory": "protected",
  "preservePublicApi": true,
  "controlFlowObfuscation": true,
  "encryptStrings": true
}
nebula --config nebula.config.json

El MyLib.1.2.3.nupkg protegido aterriza en protected/, listo para publicar.

Paso 2 — si distribuyes varias bibliotecas

Los productos suelen abarcar varios paquetes que se llaman unos a otros a través de sus miembros públicos. Si quieres renombrar entre ellos, ofúscalos juntos para que las referencias cruzadas se reescriban de forma coherente — de lo contrario, renombrar un miembro público en uno rompe los demás. Añade todos los ensamblados a inputs y habilita crossAssemblyRename. Consulta Varios ensamblados.

Paso 3 — ten en cuenta la reflexión y la serialización

La detección automática preserva los tipos y miembros referenciados por reflexión o que llevan atributos de serialización (System.Text.Json, Newtonsoft, DataContract, XML). Si tu biblioteca expone DTO que tus consumidores serializan, conserva esos atributos (o excluye los DTO) para que el formato de transmisión no cambie. Consulta Mantener tu aplicación funcionando.

Paso 4 — firma y verifica

La firma con nombre seguro debe volver a aplicarse después de la ofuscación — establece strongNameKeyFile y Nebula firma la salida protegida. Luego instala el paquete protegido en un proyecto consumidor desechable y ejecuta tus pruebas contra él: la API pública compila y se comporta exactamente igual que antes, pero los internos ahora son difíciles de leer.

Automatízalo en tu pipeline de versiones

Conecta esto a CI para que cada paquete publicado esté protegido, sin tocar tu código fuente. Consulta MSBuild y CI.

Descarga Nebula.NET gratis y protege tu próxima versión de NuGet.

Prueba Nebula.NET

Endurece tu código .NET en minutos — empieza con la edición gratuita.