Cómo ofuscar un ensamblado de .NET (paso a paso, 2026)
Una guía práctica para ofuscar ensamblados de .NET — qué proteger, cómo hacerlo con Nebula.NET, y cómo verificar que tu aplicación sigue ejecutándose de forma idéntica después.
Los ensamblados de .NET son fáciles de decompilar. Herramientas como ILSpy, dnSpy y dotPeek pueden convertir tu DLL compilada de vuelta a un C# casi original en segundos, exponiendo tus algoritmos, comprobaciones de licencia, claves de API y lógica de negocio. La ofuscación eleva el coste de eso reescribiendo el IL compilado para que sea difícil de leer — sin cambiar cómo se ejecuta tu programa.
Esta guía recorre la ofuscación de un ensamblado de .NET de la forma correcta, usando Nebula.NET.
Antes de empezar
Ofusca tu compilación de release, no la de debug, y guarda una copia del original. Decide qué debe conservar sus nombres públicos — para bibliotecas y plugins, tu API pública y cualquier miembro alcanzado por reflexión o serialización deberían preservarse.
Paso 1 — Instala la herramienta
Descarga el instalador de Windows desde la página de descargas y ejecútalo. Instala tanto una herramienta de línea de comandos (nebula) como una GUI de escritorio. No se requiere ningún runtime de .NET en la máquina que la ejecuta.
Paso 2 — Crea una configuración
Nebula se controla mediante un pequeño archivo JSON. Crea nebula.config.json junto a la salida de tu compilación:
{
"schemaVersion": 1,
"inputs": ["bin/Release/net8.0/MyApp.dll"],
"outputDirectory": "protected",
"preservePublicApi": true,
"encryptStrings": true,
"controlFlowObfuscation": true
}
- preservePublicApi mantiene los tipos/miembros públicos con su nombre — esencial para las bibliotecas.
- encryptStrings cifra las cadenas literales para que las claves y los mensajes no queden en texto plano.
- controlFlowObfuscation reescribe tus métodos para que la lógica original quede oculta.
Paso 3 — Ejecútala
nebula --config nebula.config.json
Verás un resumen de lo que se renombró, aplanó y cifró, y una copia protegida de tu ensamblado aparece en protected/.
Paso 4 — Verifica que sigue funcionando
Este es el paso que la mayoría de la gente se salta — y es el más importante. La ofuscación nunca debe cambiar el comportamiento. Ejecuta tu aplicación o tu conjunto de pruebas completo contra la compilación protegida y confirma que todo se comporta exactamente igual que antes. Nebula valida la salida automáticamente y está probado para preservar el comportamiento en tiempo de ejecución en .NET Framework 4.8 y .NET 6–10, pero siempre deberías ejecutar también tus propias pruebas.
Qué hace cada transformación
- El renombrado de identificadores reemplaza nombres de tipos/métodos/campos con significado por otros sin sentido, preservando a la vez cualquier cosa que deba conservar su nombre.
- El aplanado del flujo de control reescribe los métodos en máquinas de estado dirigidas por un despachador, de modo que un decompilador no pueda mostrar tu estructura original.
- El cifrado de cadenas cifra los literales con una clave por compilación, descifrada en tiempo de ejecución por una rutina insertada.
- La anti-manipulación y la anti-depuración detectan un ensamblado modificado o un depurador adjunto y reaccionan según configures.
Lee más en cómo funciona.
Cuidado con la reflexión y la serialización
Si tu código busca tipos o miembros por nombre de cadena (reflexión, inyección de dependencias, serialización JSON/XML, algunos ORM), renombrar esos miembros lo romperá. Presérvalos con preservePublicApi y las reglas de inclusión/exclusión de Nebula. Cuando algo se comporta mal tras la ofuscación, esta es casi siempre la causa — acota qué transformación está implicada y excluye los miembros afectados.
Automatízalo en CI
Una vez que funciona localmente, protege en cada compilación. Nebula devuelve códigos de salida significativos y admite un resumen --json, así que encaja en cualquier pipeline:
nebula --config nebula.config.json --json nebula-summary.json
Consulta MSBuild y CI para más detalles.
Resumen
Para ofuscar un ensamblado de .NET: instala una herramienta, escribe una configuración que preserve tu API pública, activa las transformaciones que necesites, ejecútala, y — crucialmente — verifica que tu aplicación sigue ejecutándose de forma idéntica. Empieza con la edición gratuita; es suficiente para proteger proyectos pequeños y evaluar la suite completa.
Prueba Nebula.NET
Endurece tu código .NET en minutos — empieza con la edición gratuita.