ドキュメント
/
VM 難読化
/

Browser Environment

Browser Environment

Pro
v7.9.0+

本番ビルドがどのように配信されるかを宣言し、保護されたコードがその完全性を結び付けられるようにします。

視聴する

Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock

YouTube で視聴

browserEnvironment オプションは、本番ビルドが配信される環境に関する事実を宣言し、保護されたコードがそれらに自身を結び付けたり反応したりできるようにします。小さなオブジェクトで、各フィールドは特定の保護と組み合わせた場合にのみ有効です。このオプション単独では何もしません。

JavaScript

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.1 以降が必要です。

'remote' を指定すると、ローカルの開発ホストから配信されたコピーは実行環境の不一致として扱われ、自動化対策の防御が vmDefenseReaction の設定に従って反応します(VM 防御のテレメトリと反応を参照)。'local' または未設定の場合、この保護は追加されません。

hosting: 'remote' を宣言したビルドは、リモートホストから読み込まれた場合にのみ正しく動作します。ローカルの開発サーバーから開かれたバンドルは意図的に不一致として扱われます。そのため、本番ビルドを読み込むすべてのコンテキストがリモートから配信される場合にのみ宣言し、ローカル開発・テスト・CI に使うビルドには含めないでください。

hookedBuiltins

本番ビルドが動作するランタイムが、ネイティブの組み込み関数を正当な理由で JavaScript のラッパーに置き換えている(アプリ自身の改ざん対策、ホストページ、同じ realm を共有する他のブラウザー拡張機能など)ことを宣言するには true に設定します。vmSelfDefending と併用した場合に有効です。難読化ツールのバージョン 7.15.0 以降が必要です。

通常、Self Defending は置き換えられたネイティブ組み込み関数を改ざんとみなし、ビルドの実行を停止します。hookedBuiltins: true を設定すると、そのような環境を許容し、保護されたコードは引き続き動作します。false または未設定のフィールドは厳格な動作を維持します。

JavaScript

hookedBuiltins は組み込み関数のフック検知を意図的に緩めます。設定すると、コードを調べるために同じ組み込み関数をラップする解析者も止められなくなります。VM の仮想化、デバッグ対策、整合性保護には影響しません。本番ランタイムが組み込み関数をフックすることが分かっていて、その弱い保証が許容できる場合にのみ有効にしてください。

対応ターゲット

browserEnvironment は browser、browser-no-eval、service-worker ターゲットにのみ適用されます。node、userscript、bytenode では効果がありません。hosting はさらに範囲が狭く、service worker では受け付けられますが、そこでは何も結び付けません。

ダッシュボードでは、Transport、Hosting、Hooked Builtins のコントロールは 高度な防御 セクションにあります。それぞれ、対応する保護(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.1 以降、hookedBuiltins は 7.15.0 以降。

例

JavaScript