- モバイル ADR
- アプリを保護
アプリを保護
Android の APK または iOS の IPA は数ステップで保護できます。アップロードし、実行するチェックを選択して保護し、保護済みのコピーをダウンロードします。
モバイル ADR (モバイルアプリの検知と対応) は、Android または iOS アプリのコピーに RASP (実行時アプリケーション自己保護) を追加します。保護されたアプリは、ルート化やジェイルブレイク、デバッガー、Frida によるフックなどのセキュリティチェックをデバイス上で実行し、検知した内容をイベントとして報告します。実行するチェックはお客様が選択します。
始める前に
- アプリ: 公開するときと同じようにビルドした Android の APK または iOS の IPA。サイズは 2 GB までです。
- iOS: Xcode またはビルドパイプラインからエクスポートした IPA をアップロードしてください。App Store からダウンロードした IPA は暗号化されているため保護できません。アプリの実行ファイルは arm64 向けにビルドされている必要があります。保護されたアプリは iOS 12 以降に対応しています。
- Android: 保護されたアプリには Android 12 (API 31) 以降が必要です。最小バージョンが 31 より低い場合は 31 に引き上げられるため、それより古いデバイスにはインストールできなくなります。
- バージョンごとに 1 ファイル: アプリの各バージョン (
android:versionNameまたはCFBundleShortVersionString) は、1 つのファイルからのみ保護できます。アプリを変更したら、新しいビルドに新しいバージョンを付けてください。 - 元のアプリ: すでに保護されたコピーではなく、ビルドしたままのアプリをアップロードしてください。
モバイル ADR を開く
report.ostorlab.co にアクセスし、次の操作を行います。
-
メニューを開き、"保護" の "モバイル ADR" をクリックします。

-
"アプリを保護" をクリックします。

アプリを選択
-
APK または IPA をアップロード領域にドロップするか、領域をクリックしてファイルを選択します。プラットフォームはファイルの拡張子から判断されます。

-
ファイルを確認し、"続行" をクリックします。右側の "保護の概要" に、プラットフォーム、アプリ、実行されるチェックが表示されます。

チェックを選択
-
このステップには、アプリのプラットフォームのチェックが一覧表示されます。既定ではすべてオンです。

-
"アプリの識別" は常にオンです。正規のビルドと再パッケージされたコピーを見分けるため、スイッチをオフにすることはできません。

-
ユーザーに合わないチェックをオフにします。ここでは "フックとインストルメンテーション" と "ネットワークの傍受" をオフにしており、"保護の概要" からも外れます。例:
- 会社の VPN は "ネットワークの傍受" を検知します。iOS ではプロキシも同様です。ユーザーがその内側で作業する場合はオフにします。
- QA チームがエミュレーターでテストする場合は、"エミュレーター" をオフにした別のビルドをそのチーム用に保護します。

-
"続行" の横のカウントに、オンになっているチェックの数が表示されます。"続行" をクリックします。

モバイル ADR のチェックは 9 つあり、アプリにはそのプラットフォームのチェックが適用されます:
| チェック | Android | iOS | 検知する内容 |
|---|---|---|---|
| ルート化 | ✓ | ルート化のファイル、書き込み可能なシステムパーティション、SELinux、ビルドプロパティ。 | |
| ジェイルブレイク | ✓ | ジェイルブレイクのファイル、サンドボックスの回避、プロセスの生成。 | |
| デバッガー | ✓ | ✓ | アプリに接続されたデバッガー。 |
| フックとインストルメンテーション | ✓ | ✓ | Frida など、アプリに注入されたライブラリ。 |
| コードの整合性 | ✓ | 保護後のアプリのコードの変更。 | |
| ネットワークの傍受 | ✓ | ✓ | VPN トンネル、および iOS ではプロキシ。 |
| アプリの識別 | ✓ | ✓ | 正規のビルドと再パッケージされたコピーを見分けます。 |
| エミュレーター | ✓ | ✓ | エミュレーターまたは iOS シミュレーターでのアプリの実行。 |
| 仮想化とアプリのクローン | ✓ | 別のアプリのコンテナ内でのアプリの実行。 |
保護されたアプリは、起動時にオンのチェックを実行し、その後は開いている間 1 分ごとに実行します。各チェックが報告する内容はイベントのページにまとめています。
保護する
-
"保護の概要" の "チェック" を確認します。オンのチェックだけが表示されます。

-
"保護" をクリックします。まずアプリがアップロードされます。アップロードが終わるまでページを開いたままにするか、"アップロードをキャンセル" をクリックして中止します。その後アプリが保護されます。これには 1 分ほどかかり、ページを離れてもかまいません。ビルドは続行され、"ビルド" タブに残ります。

-
"アプリは保護されました" と表示されたら、"ダウンロード" をクリックして保護済みのコピーを取得します。

保護されたアプリがデバイスで実行されると、そのイベントが "イベント" タブに表示されます。アプリの各ビルドは "アプリケーション" と "ビルド" に残り、そこから再度ダウンロードできます。
アプリを保護できない場合
理由はページと、"ビルド" タブのビルドのステータスの下に表示されます。"別のアプリを保護" をクリックしてやり直します。サーバーからのメッセージは英語で、コンソールのメッセージはお使いの言語で表示されます。
| メッセージ | 対処 |
|---|---|
| APK または IPA ファイルを選択してください。 | 名前が .apk または .ipa で終わるファイルをアップロードします。 |
| ファイルが大きすぎます。上限は 2 GB です。 | より小さいアプリのビルドをアップロードします。 |
| The file is not a valid APK. / The file is not a valid app archive. | 名前を変えたり再パッケージしたりせず、ビルドで生成されたままの APK または IPA をアップロードします。 |
| The app's AndroidManifest.xml cannot be read. | APK をビルドし直してアップロードします。 |
| The app's executable cannot be protected: it must be an unencrypted arm64 binary. | App Store からダウンロードしたものではなく、Xcode またはビルドパイプラインからエクスポートした arm64 向けの IPA をアップロードします。 |
| The app's executable has no room for the runtime. | リンカーフラグ -headerpad_max_install_names を付けてアプリをビルドし直し、アップロードします。 |
| The app is already protected. | 保護済みのコピーではなく、元のアプリをアップロードします。 |
| Version … of … is already protected from another file. | 新しいビルドに新しいバージョンを付けてからアップロードします。 |
| ビルドをリクエストできませんでした | アプリはアップロード済みです。"もう一度リクエスト" をクリックします。 |
| The app could not be protected. Try again, or contact support if it fails again. | アプリをもう一度保護します。再度失敗する場合はサポートにお問い合わせください。 |