Skip to main content

 

 

 

 
Language:
 
モバイルアプリにのみ適用されます
Service Studioバージョン :
 
 
OutSystems

AppShieldを使用したモバイルアプリの保護の強化

OutSystems AppShieldを使用すると、ネイティブAndroidアプリやiOSアプリの保護を強化することができます。OutSystems AppShieldはMobile Apps Build Service(MABS)バージョン6のビルドと連携し、実行時や保存時の保護を追加します。サポート対象のモバイルオペレーティングシステムとスタックの詳細については、「MABSとモバイルオペレーティングシステムのライフサイクル」をご覧ください。

OutSystems AppShieldを使用するには、ライセンスが必要です。ライセンスをまだ取得していない場合は、Salesチームまでお問い合わせください。

前提条件

AppShieldを使用してアプリを保護するには、以下の要件を満たしている必要があります。

  • AppShieldプラグインを環境にインストールしていること。プラグインをダウンロードするには、ForgeのOutSystems AppShieldをご覧ください。
  • AppShieldのライセンスを保有していること。
  • MABS 6.1以降を使用していること。

また、以下のことに留意する必要があります。

  • 保護するモバイルアプリを再作成し、再配布する必要があります。
  • セキュリティを強化するとアプリのファイルサイズが増えるため、MABSでビルドを作成する時間が長くなります。

サポートされる機能

AppShieldプラグインの現在のリリースで使用できる機能を以下に示します。

Android

Androidビルドでは以下の保護を利用できます。

  • ルート検出
  • 再パッケージ化検出
  • コード難読化
  • コードインジェクション保護
  • デバッガ保護
  • エミュレータ検出
  • キーロガー保護
  • スクリーンショット保護
  • タスクハイジャック保護

iOS

iOSビルドでは以下の保護を利用できます。

  • 脱獄検出
  • 再パッケージ化検出
  • コードインジェクション保護
  • デバッガ保護
  • スクリーンショット保護

OutSystems AppShieldを使用する方法

AppShieldを使用してモバイルアプリビルドを作成し、セキュリティを強化するには、以下の手順を実行します。

  1. AppShieldコンポーネントをインストールします。
  2. アプリにAppShieldの依存関係を追加します。Ctrl+Qを押して[Manage Dependencies]ウィンドウを開きます。プロデューサ検索フィールドに「OutSystemsAppShieldPlugin」と入力し、右ペインで要素をすべて選択します。[Apply]をクリックして参照をアプリに追加し、ウィンドウを閉じます。

    Manage Dependencies

  3. アプリをパブリッシュします。

  4. アプリのネイティブモバイルビルドを作成します。

構成

AppShieldとその機能は、インストールするとデフォルトで有効になります。テストのために1つまたは複数の環境でAppShieldを無効にすることがあります。

  • 1つまたは複数の環境でAppShieldを無効にするには、その環境のLifeTimeで拡張構成設定を編集します。開発環境でプラグインを無効にすると、たとえば、アプリをエミュレータで実行したりアプリをデバッグしたりすることができます。
  • AppShieldの機能を全体的に無効にするには、Service Studioで拡張構成設定を編集します。デプロイ中に、LifeTimeによってService Studioから環境に構成がコピーされます。

拡張構成のためにAppShieldのJSONを操作する場合は、以下に留意します。

  • 拡張構成の特定の設定は、グローバルな拡張構成設定を上書きします。
  • LifeTimeの拡張構成設定は、Service Studioの拡張構成を上書きします。

拡張構成のJSONの例を以下に示します。iOSとAndroidで異なるセクションを使用できます。

{
    "preferences": {
        "global": [
            {
                "name": "DisableAppShielding",
                "value": "false"
            },
            {
                "name": "AllowJailbrokenRootedDevices",
                "value": "false"
            }
        ],
        "android": [
            {
                "name": "AllowJailbrokenRootedDevices",
                "value": "true"
            },
            {
                "name": "AllowScreenshot",
                "value": "false"
            }
        ],
        "ios": [
            {
                "name": "AllowJailbrokenRootedDevices",
                "value": "true"
            },
            {
                "name": "AllowScreenshot",
                "value": "false"
            }
        ]
    }
}

構成のリファレンス

AppShieldの構成JSONでは、以下の値を使用できます。

OS 説明
DisableAppShielding Boolean型 iOS、Android App Shieldを有効または無効にします。
AllowScreenshot Boolean型 iOS、Android trueに設定すると、アプリのスクリーンショットの撮影をユーザーに許可します。
AllowJailbrokenRootedDevices Boolean型 iOS trueに設定すると、脱獄したデバイスでのアプリの実行をユーザーに許可します。
global JSON値 iOS、Android このセクションの設定はAndroidビルドとiOSビルドの両方に適用されます。
android JSON値 Android Androidデバイスに適用される値を示すキー。
ios JSON値 iOS iOSデバイスに適用される値を示すキー。

難読化

現在のバージョンでは、シェルとサポート対象プラグインのネイティブコードが難読化されます。OutSystemsのコアコンポーネントがクラッシュすると、難読化されたスタックトレースが生成されます。

制限事項

AppShieldには以下の制限事項があります。

全般

以下のような全般的な制限事項があります。

  • iOSでは、ユーザーによるスクリーンショットの開始はプラグインによってブロックされません。スクリーンショットが撮影されたことがプラグインによってアプリに通知されるのみです。現在このイベントは、OutSystemsではサポートされていません。ただし、AppShieldはiOSのApp Switcherのスクリーンショットの撮影をブロックします。
  • MABSによってAppShieldプラグインがアクティブなビルドを作成し、ビルドに署名した場合、そのビルドに再度手動で署名することはできません。改ざんの兆候としてアプリで認識されるためです。

難読化

以下のような難読化に特有の制限事項があります。

OutSystemsは、JavaScriptの難読化の重要性を認識しています。AppShieldの今後のいずれかのバージョンでJavaScriptの難読化を提供できるように開発チームが取り組みを進めています。

  • プラグインによってサポート対象のOutSystemsモバイルプラグインのみが難読化されます。
  • プラグインによってService CenterのネイティブAndroidログが難読化されます。ログの難読化を解除するには、外部ツールを使用する必要があります。
  • JavaScriptファイルの難読化はサポートされていません。JavaScriptの難読化に関するガイドがOutSystemsによって提供されています。
  • ネイティブiOSビットコードの難読化はサポートされていません。
  • マッピングファイルの入手については、サポートにお問い合わせください。

難読化されたAndroidログを再トレースする方法

難読化の目的は、アプリをリバースエンジニアリングに対して強化することです。難読化プロセス中、メソッドとクラスの古い名前と新しい名前のマッピングが作成されます。

難読化されたアプリでは、エラースタックトレースが以下のようになります。

難読化の例

前提条件

ログの難読化を解除するための前提条件は以下のとおりです。

  • Mac、Linux、Windows上のAndroid Studio。
  • ビルドのmapping.txtファイル。マッピングファイルについては、サポートに連絡してリクエストしてください。
  • 難読化を解除して再トレースするスタックトレース。

手順

  1. マッピングファイルを準備します。
  2. Android SDKフォルダにあるProGuardツール(通常は$ANDROID_HOME/tools/proguard/bin内)を見つけます。
  3. その中に、retrace cliまたはproguardguiがあります。

    retrace cliを使用する場合。retraceコマンドを使用し、その後にマッピングファイルのパスとスタックトレースを含むファイルを指定します。または、スタックトレースファイルを指定せずにコマンドを実行した後、ログの内容を貼り付けます。

    proguardguiを使用する場合。左ペインの[ReTrace]ボタンをクリックし、マッピングファイルを見つけます。難読化されたスタックトレースを貼り付け、[ReTrace!]をクリックします。

    Proguard UI

既知の制限

解析対象の行には、logcatツールで通常生成されるタイムスタンプを含めることができません。代わりに、行の先頭は必ずatキーワードになります。

追加情報

詳細については以下をご覧ください。

  • Was this article helpful?