PreEmptive Protection - DashO v8.2 User Guide

ルート チェックとレスポンス

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

ルート チェック

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

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

private static boolean rootedFlag;
private static Properties myProps;

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

}

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

}

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

ルート チェックは、エミュレーターまたはセキュリティ保護されていないカスタム ROM 上で実行しているときにトリガーされることもあります。

ルートのレスポンス

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

private static boolean rootedFlag;

private Properties customData(){...}

@RootCheck(sendMessage=true, action="@rootedFlag")
public void onCreate(Bundle state){

}

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

}

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

}

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