デバッグ保護
Babel Obfuscator は、アセンブリにデバッグ保護のコードを挿入することで、デバッガーがアタッチされたときに、アプリケーションの終了やカスタムロジックの実行といった対策を取れます。この機能は、リバースエンジニアリングやコードへの不正アクセスに対する重要な防御となり、ソフトウェアの整合性と機密性を守ります。
デバッグ保護の設定
Babel Obfuscator でデバッグ保護を有効にし、デバッガーの検出時に実行するカスタムアクションを設定するには、次の手順に従います。
コマンドライン
アセンブリを難読化するときに、Babel のコマンドラインに --antidebugging スイッチを追加します。たとえば、次のようにします。
babel myapp.exe --antidebuggingMSBuild の Babel タスク
Babel タスクを使用している場合は、構成に DebuggingProtection="true" 属性を追加します。たとえば、次のようにします。
<Babel InputFile="$(AppName).exe" DebuggingProtection="true" ... />デバッガー検出時のカスタムアクション
アセンブリ内でデバッガーが検出されたときの動作をカスタマイズするには、既存のクラスに次のメソッドを追加して、デバッガーの検出時に実行するカスタムアクションを定義します。
[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
}アプリケーションの実行中にデバッガーが検出されると、OnDebuggerDetected() メソッドが呼び出されます。このメソッドには、任意のカスタムロジックを記述できます。デバッガーが検出されると、OnDebuggerDetected() は異なるスレッドから複数回呼び出されることがあるため、その中のコードは必ずスレッドセーフにしてください。
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
// ...
}
}上の例では、デバッガーが検出されると、アプリケーションはコンソールに「Debugger detected! Terminating application…」というメッセージを表示し、終了コード 0 で終了します。このカスタムアクションは、ログの記録、エラーメッセージの表示、その他の防御策など、任意の動作に置き換えられます。