コンテンツにスキップ

アプリを保護

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" をクリックします。

    モバイル 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. アプリをもう一度保護します。再度失敗する場合はサポートにお問い合わせください。