ルート チェック
ルート チェックは、アプリケーションがルート化された Android デバイスで実行されているかどうかを検出するタイプのチェックです。
ルート化されたデバイスは、複数の理由から問題になる可能性があります。 攻撃者は、ルート化されたデバイスでアプリケーションを実行して、アプリケーションのバイナリへのアクセス、アプリケーションのリバース エンジニアリング、機密データの抽出、またはアプリケーションの動作の操作を行う可能性があります。 一般ユーザーは、あなたのアプリケーションとは無関係な理由で自身のデバイスをルート化している可能性があります。ルート化することによって、Android オペレーティング システムが提供する安全な環境を壊し、その結果、ユーザーのデータやアカウントを攻撃の影響を受けやすい状態にしているかもしれません。 機密データを処理するアプリケーションや、データ処理の規制の対象となるアプリケーションの場合、ルート化されたデバイスでの操作は受け入れ難いリスクになる可能性があります。
ルート チェックは、デバイスがルートされていることを検出し、アプリケーションに通知したり、攻撃者を妨害したりして対応することができます。
ルート チェックの構成
Dotfuscator で Xamarin.Android アプリケーションにルート チェックを差し込むには、まずコードの差し込みを有効にします。
次に、構成エディターを使用するか、RootCheckAttribute を使ってソース コードにアノテーションを付けることにより、チェックを構成します。
これらのどちらの方法でも、チェックの動作を決めるさまざまなプロパティを指定できます。詳細な一覧については、「チェック属性」ページの RootCheckAttribute
セクションを参照してください。
サポートされるアプリケーションの種類
Dotfuscator は、Xamarin.Android アセンブリにルート チェックを差し込むことができ、他のプラットフォーム用の Xamarin アセンブリへの差し込みをできなくします。 Xamarin 固有でないアセンブリ(PCL、.NET Standard ライブラリなど)に差し込むことはできますが、それを行うと、アセンブリが Xamarin Android フレームワーク依存になります。 この依存関係は通常、共有ライブラリを使用する他の(Xamarin)プラットフォームでは問題にならないことに留意してください。これは、ほとんどのビルド シナリオにおいて、ルート チェックはライブラリの Android 固有のコピーにのみ差し込まれるためです。
テスト
ほとんどのエミュレーターによりルート チェックはトリガーされるので(エミュレーターは効果的にルート化されたデバイスであるため)、通常、ルート化された動作はエミュレーターで、ルート化されていない動作は(未ルート化の)デバイスでテストできます。 ルート チェックを入れた場所を実行して、利用できるルート ユーザーに対してアプリケーションがどのように対応するかを観察します。