Browser Environment
本番ビルドがどのように配信されるかを宣言し、保護されたコードがその完全性を結び付けられるようにします。
browserEnvironment オプションは、本番ビルドが配信される環境に関する事実を宣言し、保護されたコードがそれらに自身を結び付けたり反応したりできるようにします。小さなオブジェクトで、各フィールドは特定の保護と組み合わせた場合にのみ有効です - このオプション単独では何もしません:
transport
本番環境がバンドルを配信するスキーム - 'http' または 'https'。vmSelfDefending と併用した場合に有効です。
'https' を指定すると、リバースエンジニアが素の HTTP で配信したコピーは正しく動作しません。'http' またはフィールド未設定の場合、そのような保護は追加されません。
transport: 'https' を宣言したビルドは、実際に https: で配信されている場所でのみ正しく動作します。それ以外のスキームではビルドが壊れるため、本番ビルドを読み込むすべてのコンテキストが HTTPS である場合にのみ宣言してください。除外されるのは次のとおりです:
- 素の
http://(開発時のhttp://localhostを含む); file://- Electron、Cordova、その他のパッケージ化されたアプリ;blob:およびabout:への埋め込み -about:blankやsrcdocの iframe 内で動作するバンドル。
クライアントサイドの HTTP→HTTPS リダイレクトでも最初に HTTP ページが描画されるため、リダイレクトが完了する前にバンドルを実行してはいけません。
hosting
本番バンドルの配信元 - 'remote' または 'local'。vmDebugProtection と併用した場合に、browser および browser-no-eval ターゲットでのみ有効です。難読化ツールのバージョン 7.14.0 以降が必要です。
'remote' を指定すると、リバースエンジニアが持ち出して自身のローカル環境で実行したコピーは実行環境の不一致として扱われ、自動化対策の防御が vmDefenseReaction の設定に従って反応します。'local' または未設定の場合、この保護は追加されません。
hosting: 'remote' を宣言したビルドは、リモートホストから読み込まれた場合にのみ正しく動作します。ローカル環境 - localhost、開発サーバー、file:// - から開かれたバンドルは意図的に不一致として扱われます。そのため、本番ビルドを読み込むすべてのコンテキストがリモートから配信される場合にのみ宣言し、ローカル開発・テスト・CI に使うビルドには含めないでください。
hookedBuiltins
本番ビルドが動作するランタイムが、ネイティブの組み込み関数を正当な理由で JavaScript のラッパーに置き換えている(アプリ自身の改ざん対策、ホストページ、同じ realm を共有する他のブラウザ拡張機能など)ことを宣言するには true に設定します。vmSelfDefending と併用した場合に有効です。難読化ツールのバージョン 7.15.0 以降が必要です。
通常、Self Defending は置き換えられたネイティブ組み込み関数を改ざんとみなし、ビルドの実行を停止します。hookedBuiltins: true を設定すると、そのような環境を許容し、保護されたコードは引き続き動作します。false または未設定のフィールドは厳格な動作を維持します。
hookedBuiltins は改ざん検知を意図的に緩めます。設定すると、コードを調べるために同じ組み込み関数をラップする解析者も止められなくなります。VM の仮想化、デバッグ対策、整合性保護には影響しません。本番ランタイムが組み込み関数をフックすることが分かっていて、その弱い保証が許容できる場合にのみ有効にしてください。
対応ターゲット
browserEnvironment は browser、browser-no-eval、service-worker ターゲットにのみ適用されます。node、userscript、bytenode ではオプションが拒否され、設定を黙って破棄するのではなくバリデーションエラーで難読化が失敗します。hosting はさらに範囲が狭く、service worker では受け付けられますが、そこでは何も結び付けません。
ダッシュボードでは、Transport、Hosting、Hooked Builtins のコントロールは Advanced Protection パネルにあります。それぞれ、対応する保護が有効 - Transport と Hooked Builtins は VM Self Defending、Hosting は VM Debug Protection - で、かつターゲットが対応している場合にのみ編集可能になります。
要件
transportとhookedBuiltinsはvmSelfDefendingと、hostingはvmDebugProtectionと併用した場合に有効です。それ以外ではいずれも何もしません。browser、browser-no-eval、またはservice-workerターゲット(hostingの場合はbrowserまたはbrowser-no-eval)。- 難読化ツールのバージョンが
transportは 7.9.0 以降、hostingは 7.14.0 以降、hookedBuiltinsは 7.15.0 以降。
