Nebula.NET
Cómo funciona
Un recorrido por las transformaciones de protección de Nebula.NET y cómo mantienen intacto el comportamiento de tu app.
Nebula reescribe el IL (lenguaje intermedio) dentro de tus ensamblados usando varias transformaciones independientes. Puedes activar o ajustar cada una desde la configuración.
Renombrado de identificadores
Los tipos, métodos, campos y parámetros se renombran a identificadores cortos y sin significado. Nebula conserva todo lo que necesita mantener su nombre para funcionar:
- La superficie de API pública (cuando
preservePublicApiestá activado). - Los objetivos de reflexión y serialización que puede detectar.
- Los nombres referenciados por XAML, contenedores de inyección de dependencias y similares.
Aplanado del flujo de control
En lugar de dejar la lógica de tu método en un orden legible, Nebula reescribe los métodos elegibles en una máquina de estados dirigida por un despachador — un bucle while (true) { switch (state) { … } } donde cada bloque básico original se convierte en un caso. Un decompilador ya no puede mostrar tu estructura original. Los métodos con controladores de excepciones se tratan de forma conservadora para preservar la corrección.
Cifrado de cadenas
Las cadenas literales se cifran en tiempo de compilación con una clave nueva por compilación y se descifran en tiempo de ejecución mediante una rutina insertada con un nombre sin marca — de modo que el descifrador no anuncia qué herramienta lo produjo.
Anti-manipulación y anti-depuración
Unas protecciones de ejecución opcionales detectan un ensamblado modificado o un depurador adjunto. Tú eliges la reacción: lanzar una excepción, salir o invocar tu propio método de devolución de llamada.
Endurecimiento de recursos y metadatos
Los recursos incrustados pueden cifrarse, y los metadatos que revelan la intención pueden eliminarse u ocultarse.
Corrección
El objetivo de un ofuscador es cambiar cómo se lee el código, nunca cómo se ejecuta. Cada transformación se valida en .NET Framework 4.8 y .NET 6/8/9/10 mediante una suite automatizada que compara el comportamiento de la salida protegida con el del original. La verificación de la salida también se ejecuta de forma predeterminada como parte de cada trabajo de protección (verifyOutput).
La ofuscación eleva el coste de la ingeniería inversa — no es una garantía. Combínala con licenciamiento, firma y una buena higiene de publicación para una defensa en profundidad.