FreeObfuscator.NET protection

.NET · C# · DLL · EXE

Firma de nombre seguro y ofuscación: prepara el lanzamiento

Evita identidades de ensamblado incompatibles y mantén las claves privadas fuera del servicio.

Abrir el ofuscador

La carga de archivos, la cuenta y el pago utilizan la interfaz en inglés.

Identidad no significa secreto

Un nombre seguro identifica un ensamblado mediante nombre, versión, cultura y clave pública. No cifra el IL ni evita descompilarlo. Microsoft advierte que no debe usarse como frontera de seguridad. Authenticode es otro mecanismo: identifica al editor. Determina qué firma exige tu distribución antes de modificar el binario.

Prepara una entrada sin firma

FreeObfuscator rechaza ensamblados firmados con nombre seguro o con firma retrasada. Crea una configuración Release sin firma y conserva la distribución original. El comando de ejemplo sirve para proyectos SDK sencillos; los targets importados y las referencias pueden exigir una configuración específica. No borres metadatos de firma de un archivo publicado ni subas .snk, .pfx o contraseñas.

Comprueba cómo volver a firmar

Confirma que tu herramienta pueda firmar correctamente la salida transformada. Un archivo sin firma puede no tener reservado el espacio que necesita un comando sencillo de nueva firma; sn -R no es una receta universal. Firmar una dependencia también puede cambiar la identidad que esperan sus consumidores. Gestiona firma, referencias y empaquetado dentro de tu entorno local de confianza.

Prueba el paquete final

Compara identidades y verifica la firma con herramientas apropiadas para tu plataforma. Ver un token de clave pública no demuestra una firma válida. Ejecuta un consumidor existente, el cargador de complementos y el instalador contra el resultado final. Guarda un paquete de recuperación. Si no puedes conservar el contrato de firma, no entregues un sustituto sin firma solo porque se pueda cargar.

dotnet build MyLibrary.csproj -c Release -p:SignAssembly=false -p:DelaySign=false -o ./unsigned-check
# Inspect identity only; this is NOT signature validation:
[System.Reflection.AssemblyName]::GetAssemblyName((Resolve-Path './unsigned-check/MyLibrary.dll')).FullName

Guías de protección