デバッグ チェックとレスポンス
PreEmptive Protection - DashO は、Java および Android アプリケーションにチェックを差し込むことによって、これらのアプリケーションがデバッグ可能モードで実行されているかどうか、またはアクティブにデバックされているかどうかを検出することができます。 デバッグ チェックとレスポンスの構成は、Debug Check パネルを使って、またはコード アノテーションを追加することにより行います。
デバッグ チェック
アプリケーションがデバックされているかどうかを検出するには、アプリケーション内の 1 つ以上のメソッドに DebuggingCheck を設定します。 DashO は、デバッグされているかどうかを判断するための、ランタイム チェックを実行するコードを追加します。 このチェックは、概要の説明に従って構成できます。
アプリケーションには、さまざまな用途の DebuggingCheck
をさまざまな構成で含めることができます。
複数のチェックを使用したり、レスポンスを混合したりすることにより、アタッカーの侵入を妨げられるでしょう。
private static boolean debuggingFlag;
@DebuggingCheck(action="@debuggingFlag")
public void onCreate(Bundle check){
}
@DebuggingCheck(response=ResponseType.Hang)
private int computeResult(){
}
メモ:Android 以外のプラットフォームの場合、アプリケーションが開始した後にデバッガーがアタッチされると正しく検出されません。
デバッグのレスポンス
DebuggingResponse アノテーションは、DebuggingCheck と情報をやり取りします。このレスポンスは、概要の説明に従って構成できます。
private static boolean debuggingFlag;
@DebuggingCheck(action="@debuggingFlag")
public void onCreate(Bundle state){
}
@DebuggingResponse(source="@debuggingFlag", response=ResponseType.Exit, probability=0.05f)
private int computeResult(){
}
@DebuggingResponse(source="@debuggingFlag", response=ResponseType.Error, probability=0.1f)
private FileInputStream readInput(){
}
デバッグ有効化チェック
アプリケーションがデバッグ可能であるかどうかを検出するには、アプリケーション内の 1 つ以上のメソッドに DebugEnabledCheck を設定します。 DashO は、デバッグ可能かどうかを判断するための、ランタイム チェックを実行するコードを追加します。 このチェックは、概要の説明に従って構成できます。
メモ:Android 用のデバッグ有効化チェックが発生するのは、USB デバッグがデバイスまたはエミュレーターで有効になっている場合です。 エミュレーターの多くが USB デバッグをデフォルトで有効にしています。 USB デバッグは、開発者向けオプションで有効または無効にすることができます。
アプリケーションには、さまざまな用途の DebugEnabledCheck
をさまざまな構成で含めることができます。
複数のチェックを使用したり、レスポンスを混合したりすることにより、アタッカーの侵入を妨げられるでしょう。
private static boolean debuggingFlag;
@DebugEnabledCheck(action="@debuggingFlag")
public void onCreate(Bundle check){
}
@DebugEnabledCheck(response=ResponseType.Hang)
private int computeResult(){
}
メモ:Android のデバッグ有効化チェックは、アプリケーションのコンテキストへのアクセスを必要とし、チェックが差し込まれるクラスに
getApplicationContext()
メソッドの存在が必要です。Application
やService
クラスのようなandroid.context.Context
を拡張するクラスにデバッグ有効化チェックを差し込むのであれば、問題ありません。 そうでない場合は、getApplicationContext()
メソッドを追加して、適切なContext
が返されることを確認してください。
デバッグ有効化のレスポンス
DebugEnabledResponse アノテーションは、DebugEnabledCheck と情報をやり取りします。 このレスポンスは、概要の説明に従って構成できます。
private static boolean debuggingFlag;
@DebugEnabledCheck(action="@debuggingFlag")
public void onCreate(Bundle state){
}
@DebugEnabledResponse(source="@debuggingFlag", response=ResponseType.Exit,
probability=0.05f)
private int computeResult(){
}
@DebugEnabledResponse(source="@debuggingFlag", response=ResponseType.Error,
probability=0.1f)
private FileInputStream readInput(){
}