Skip to Content
新しいバージョン 12 を公開しました 🎉
Obfuscatorデバッグ保護

デバッグ保護

Babel Obfuscator は、アセンブリにデバッグ保護のコードを挿入することで、デバッガーがアタッチされたときに、アプリケーションの終了やカスタムロジックの実行といった対策を取れます。この機能は、リバースエンジニアリングやコードへの不正アクセスに対する重要な防御となり、ソフトウェアの整合性と機密性を守ります。

デバッグ保護の設定

Babel Obfuscator でデバッグ保護を有効にし、デバッガーの検出時に実行するカスタムアクションを設定するには、次の手順に従います。

コマンドライン

アセンブリを難読化するときに、Babel のコマンドラインに --antidebugging スイッチを追加します。たとえば、次のようにします。

babel myapp.exe --antidebugging

MSBuild の 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 で終了します。このカスタムアクションは、ログの記録、エラーメッセージの表示、その他の防御策など、任意の動作に置き換えられます。

Last updated on