Protección contra depuración
Babel Obfuscator inyecta en el ensamblado código de protección contra depuración, con el que puede reaccionar cuando se conecta un depurador, por ejemplo finalizando la aplicación o ejecutando lógica personalizada. Esta capacidad es una defensa esencial contra la ingeniería inversa y el acceso no autorizado al código, y protege la integridad y la confidencialidad de su software.
Configuración de la protección contra depuración
Para activar la protección contra depuración con Babel Obfuscator y configurar una acción personalizada cuando se detecta un depurador, siga estos pasos.
Línea de comandos
Añada la opción --antidebugging a la línea de comandos de Babel al ofuscar el ensamblado. Por ejemplo:
babel myapp.exe --antidebuggingTarea Babel de MSBuild
Si usa la tarea Babel, añada el atributo DebuggingProtection="true" a su configuración. Por ejemplo:
<Babel InputFile="$(AppName).exe" DebuggingProtection="true" ... />Acción personalizada al detectar un depurador
Para personalizar la respuesta cuando se detecta un depurador en el ensamblado, añada a una clase existente el método siguiente, que define la acción personalizada que se ejecutará al detectarlo:
[Obfuscation(Feature = "on debugger detected method")]
static void OnDebuggerDetected()
{
// Custom logic to be executed when a debugger is detected
// This code must be thread-safe as it can be called by different running threads
}Cuando la aplicación se ejecuta y se detecta un depurador, se llama al método OnDebuggerDetected(). En este método puede colocar la lógica personalizada que desee. Es importante que el código de OnDebuggerDetected() sea seguro para subprocesos, porque puede llamarse varias veces y desde subprocesos distintos cuando se detecta un depurador.
Este es un ejemplo de cómo podría quedar el código en una aplicación de C#:
using System;
using System.Reflection;
public class Program
{
[Obfuscation(Feature = "on debugger detected method")]
static void OnDebuggerDetected()
{
// Custom action to be executed when a debugger is detected
Console.WriteLine("Debugger detected! Terminating application...");
Environment.Exit(0);
}
static void Main()
{
// Your application's main logic
// ...
}
}En el ejemplo anterior, cuando se detecta un depurador, la aplicación finaliza con el código de salida 0 y muestra en la consola el mensaje «Debugger detected! Terminating application…». Puede sustituir esta acción personalizada por el comportamiento que desee, como escribir en un registro, mostrar un mensaje de error o tomar otras medidas defensivas.