チェックの概要
チェックは、既存のメソッドに差し込まれた特定の条件を調べるコード部分です。 その条件がトリガーされた場合(つまり、true と判断された場合)に、アプリケーションが対応するさまざまな方法を構成できます。
PreEmptive Protection - DashO では、アプリケーションに次のチェックを差し込むことができます。
- デバッグ - アプリケーションがデバッグされているか、あるいはデバッグを許可するように設定されているか。
- エミュレーター - アプリケーションがエミュレーターで実行されているか。
- フック - フックが検出されているか。
- ルート - ルート化されたデバイスでアプリケーションが実行されているか。
- Shelf Life - このアプリケーションは有効期限が切れているか(あるいは、間もなく切れるか)。
- 改ざん - アプリケーションは改ざんされているか。
Shelf Life を除き、さまざまなチェックやレスポンスはすべて同じように動作します。 チェックはさまざまな方法で、直ちに、あるいは後で別のレスポンスを介して対応することができます。 これらのチェックとレスポンスの構成は、Checks UI パネルを使って、またはコード アノテーションを追加することにより行えます。 Shelf Life には個別のレスポンスはありません。
さまざまなチェックとレスポンスの使用法を示すいくつかのサンプルがあります。
チェック
チェックが実行されているとき、任意でカスタム動作を実行できます。
- メソッドを呼び出すか、またはフィールドを設定する - 単一の
boolean
を取るメソッドを呼び出すか、またはboolean
型のフィールドを設定することによって、チェックの状態をアプリケーションに渡し返すことができます。チェックがトリガーされた場合のboolean
値はtrue
です。 チェックがトリガーされていない場合は、false
が使用されます。 アプリケーションは、この情報に基づいて直ちに行動するか、あるいは後でレスポンスとやり取りするために格納しておくことができます。 詳細については、ソースおよび操作の指定を参照してください。
メモ:Shelf Life チェックは、
boolean
ではなくToken
引数を取るメソッドを必要とします。
チェックがトリガーされたら、さまざまな方法でそれに対応することができます。次のうちの一方または両方を選択できます。
- レスポンスを実行する - 即時に実行できるレスポンスがいくつかあります。
exit
- ランダムなゼロ以外のリターン コードを生成してアプリケーションを終了する。hang
- 現在のスレッドをハングさせる。error
-java.lang.Error
の、ランダムに選択されたサブクラスをスローする。exception
-java.lang.Exception
の、ランダムに選択されたチェックされていないサブクラスをスローする。none
- 何もしない(既定)。
メモ:
リターン コードのランダム化およびThrowable
の選択は、チェックが差し込まれた時点で実行されます。 エラーと例外は、その出所を隠すために、空のスタック トレースを伴ってスローされます。
Android では、exit
はアクティビティ スタックの最上にあるActivity
のみを閉じます。 スタックにActivity
が 1 つしかない場合は、アプリケーションが閉じます。
レスポンスの動作とカスタム動作を両方選択すると、カスタム動作が呼び出されてから、レスポンスの動作が実行されます。 どちらの動作も要求しない場合は、チェックは省かれ、DashO が警告メッセージを生成します。
アプリケーションには、さまざまな用途のチェックをさまざまな構成で含めることができます。 複数のチェックを使用したり、レスポンスを混合したりすることにより、アタッカーの侵入を妨げられるでしょう。
レスポンス
チェックとレスポンスを分離すると、アタッカーにとってより困難になります。 複数の異なるレスポンスをアプリケーション中に散在させることで、アプリケーションの困難さが増します。 それらのレスポンスが場合によってのみ発生するようにすると、プロセスをイライラさせるものにすることができます。DashO では、レスポンスを単純にでも複雑にでも望みどおりに構成することができます。
Response
は、チェックとレスポンスのコードを分離するために Check
とやりとりするコードを追加します。同じ Check
に多数の Responses
を追加できます。
Response
は、boolean
値を介して Check に合わせられます。Check
の動作
を使用する値セットは、Response
のソース
を使って取得されます。 取得された値がtrue
であれば、レスポンスが実行されます。詳細については、ソースおよび操作の指定を参照してください。
Check
の場合と同様に、Response
では、あらかじめ用意されたレスポンスを行うことができます。さらに、レスポンスには、0.0
(なし)から 1.0
(常時)までの確率係数に基づいて条件を付けることができます。既定値は 1.0
です。