PreEmptive Protection - DashO v8.2 User Guide

デバッグ チェックとレスポンス

PreEmptive Protection - DashO は、Java および Android アプリケーションをインストルメントすることによって、これらのアプリケーションがデバッグ可能モードで実行されているかどうか、またはアクティブにデバックされているかどうかを検出することができます。デバッグ チェックとレスポンスの構成は、Debug Check パネルを使って、またはコード アノテーションを追加することにより行います。

デバッグ チェック

アプリケーションがデバックされているかどうかを検出するには、アプリケーション内の 1 つ以上のメソッドに DebuggingCheck を設定します。DashO は、デバッグされているかどうかを判断するための、ランタイム チェックを実行するコードを追加します。このチェックは、概要の説明に従って構成できます。

アプリケーションには、さまざまな用途の DebuggingCheck をさまざまな構成で含めることができます。複数のチェックを使用したり、レスポンスを混合したりすることにより、アタッカーの侵入を妨げられるでしょう。

private static boolean debuggingFlag;
private static Properties myProps;

@DebuggingCheck(sendMessage=true, customDataSource="@myProps", action="@debuggingFlag")
public void onCreate(Bundle check){

}

@DebuggingCheck(response=ResponseType.Hang)
private int computeResult(){

}

メモ:Android 以外のプラットフォームの場合、アプリケーションが開始した後にデバッガーが添付されると正しく検出されません。

デバッグのレスポンス

DebuggingResponse アノテーションは、DebuggingCheck と情報をやり取りします。このレスポンスは、概要の説明に従って構成できます。

private static boolean debuggingFlag;

private Properties customData(){...}

@DebuggingCheck(sendMessage=true, action="@debuggingFlag")
public void onCreate(Bundle state){

}

@DebuggingResponse(source="@debuggingFlag", sendMessage=true,
    customDataSource="customData()", response=ResponseType.Exit, probability=0.05f)
private int computeResult(){

}

@DebuggingResponse(source="@debuggingFlag", sendMessage=true,
    response=ResponseType.Error, probability=0.1f)
private FileInputStream readInput(){

}

デバッグ有効化チェック

アプリケーションがデバッグされるようにセットアップされているかどうかを検出するには、アプリケーション内の 1 つ以上のメソッドに DebugEnabledCheck を設定します。DashO は、デバッグを許可するようにセットアップされているかどうかを判断するための、ランタイム チェックを実行するコードを追加します。このチェックは、概要の説明に従って構成できます。

アプリケーションには、さまざまな用途の DebugEnabledCheck をさまざまな構成で含めることができます。複数のチェックを使用したり、レスポンスを混合したりすることにより、アタッカーの侵入を妨げられるでしょう。

private static boolean debuggingFlag;
private static Properties myProps;

@DebugEnabledCheck(sendMessage=true, customDataSource="@myProps", action="@debuggingFlag")
public void onCreate(Bundle check){

}

@DebugEnabledCheck(response=ResponseType.Hang)
private int computeResult(){

}

メモ:Android のデバッグ有効化チェックは、アプリケーションのコンテキストへのアクセスを必要とし、チェックが差し込まれるクラスに getApplicationContext() メソッドの存在が必要です。ApplicationService クラスのような android.context.Context を拡張するクラスにデバッグ有効化チェックを差し込むのであれば、問題ありません。そうでない場合は、getApplicationContext() メソッドを追加して、適切な Context が返されることを確認してください。また、メッセージを送信する予定で、オフライン メッセージのサポートが必要な場合には、追加した getApplicationContext() メソッドを名前の変更対象から除外する必要が生じます。

デバッグ有効化のレスポンス

DebugEnabledResponse アノテーションは、DebuggingCheck と情報をやり取りします。このレスポンスは、概要の説明に従って構成できます。

private static boolean debuggingFlag;

private Properties customData(){...}

@DebugEnabledCheck(sendMessage=true, action="@debuggingFlag")
public void onCreate(Bundle state){

}

@DebugEnabledResponse(source="@debuggingFlag", sendMessage=true,
    customDataSource="customData()", response=ResponseType.Exit, probability=0.05f)
private int computeResult(){

}

@DebugEnabledResponse(source="@debuggingFlag", sendMessage=true,
    response=ResponseType.Error, probability=0.1f)
private FileInputStream readInput(){

}

PreEmptive Protection - DashO Version 8.2.0. Copyright © 2017 PreEmptive Solutions, LLC