はじめに
Obfuscator.io は、読みやすいソースコードを、理解やリバースエンジニアリングが困難な保護されたバージョンへと変換します。独自アルゴリズム、ライセンスロジック、ビジネス上重要なコードの保護に最適です。
Obfuscator.io へようこそ
このガイドでは、最初のファイルを難読化し、プリセットを選び、オプションパネルを理解するまでの流れを説明します。さらに詳しく知りたい場合は、VM 難読化、基本的な難読化、ベストプラクティスの各セクションを参照してください。
クイックスタート
1. コードを貼り付ける
左のエディタパネルに JavaScript コードを入力します。コードを直接貼り付けるか、一括処理のためにファイルアップロード機能を使用できます。
2. プリセットを選ぶ
オプションパネルのドロップダウンからプリセットを選択します。変更を最小限にしたい場合は
Low Obfuscation、バランスの取れた保護を求める場合はMedium Obfuscationから始めましょう。VM プリセットは最も強力なセキュリティを提供します。3. 「Obfuscate」をクリックする
Obfuscate ボタンを押してコードを変換します。保護された出力が右のパネルに表示されます。
4. コピーまたはダウンロードする
Copy ボタンまたは Download を使って難読化されたコードを取得します。出力はそのまま本番環境で利用できます。
コードの互換性 Important
難読化(VM 版・非 VM 版のいずれも)は、特定の JavaScript ランタイムの挙動に影響する形でコードを変換します。コードは次の機能に依存していてはいけません:
function.toString()/class.toString()難読化はソースコードの表現を完全に変えてしまいます。関数のソースを解析または比較するコードは動作しなくなります。
function.name/class.name関数名やクラス名はランダムな識別子にリネームされます。ロギング、シリアライズ、リフレクションのために
.nameに依存しているコードは、難読化された名前を取得することになります。
// Before obfuscation
function calculatePrice() { return 100; }
console.log(calculatePrice.name); // "calculatePrice"
console.log(calculatePrice.toString()); // "function calculatePrice() { return 100; }"
// After obfuscation
console.log(calculatePrice.name); // "_0x1a2b3c" (random)
console.log(calculatePrice.toString()); // Completely transformed code
基本オプション
難読化を行う前に、対象環境に合わせてこれらの基本オプションを設定します。
Target target
難読化されたコードの実行環境を指定します:
browser(デフォルト) - 標準的な Web ページ環境。出力コードはnodeと同一ですが、一部のブラウザ固有オプションはnodeターゲットでは使用できません。browser-no-eval-browserと同じですが、出力はeval()を使用しません。対象ページの Content Security Policy がeval/unsafe-evalを禁止している場合に使用します。node- Node.js 環境。ブラウザ固有のオプションは無効になります(window/documentを必要とし、Node では何もしないか例外を投げるため)。ブラウザ専用 API に依存する一部のvmSelfDefending防御(ヘッドレスブラウザ検知、iframe を用いたクリーンレルム復元、インスペクタ / DOM チェック対策)は、このターゲットでは出力されません。service-worker- Service Worker のコンテキスト。windowもdocumentもなく、selfグローバルが異なります。userscript- ユーザースクリプトマネージャのサンドボックス(例: Tampermonkey)。vmSelfDefendingの防御はそれに応じて調整されます。難読化ツール v6.9.0 以降が必要です。bytenode- bytenode で.jscにコンパイルされるコード向け。難読化ツール v6.13.0 以降が必要です。
Strict Mode strictMode
難読化ツールが JavaScript の strict モードをどう扱うかを制御します:
Auto(デフォルト) - コードから strict モードを自動検出します。難読化ツールがコード内の"use strict"ディレクティブを解析しますEnable-"use strict"の有無にかかわらず、すべてのコードを strict モードとして扱うよう強制しますDisable- ソースコード内に明示的に記述された"use strict"ディレクティブのみを strict モードとして扱います
プリセットを理解する
プリセットとは、あらかじめ設定されたオプションの組み合わせです。2 つの独立したグループがあります:
VM プリセット Pro(バイトコード仮想化)
| プリセット | セキュリティ | パフォーマンス | 機能 |
|---|---|---|---|
VM Low | 良好 | ~10x | 基本的な VM、間接ディスパッチ |
VM Medium | 強力 | ~12-15x | + オペコードのシャッフル、エンコード、デコイ |
VM High | 非常に強力 | ~15-18x | + デッドコード、ステートフルオペコード、スタックエンコード |
VM Ultra High | Maximum | ~20x+ | + 非 VM の難読化レイヤー |
パフォーマンスの数値は平均値です。実際の影響はコードに大きく依存します(例えば、再帰が多いコードやホットループのコードは目に見えて遅くなります)。
非 VM プリセット(標準の難読化)
| プリセット | 保護 | パフォーマンス | 機能 |
|---|---|---|---|
Default | 基本 | Minimal | 文字列配列、簡略化 |
Low | 軽度 | ~1.1x | + セルフディフェンディング、コンソール無効化 |
Medium | 中程度 | ~1.5x | + 制御フロー、デッドコード、base64 |
High | 強力 | ~2x | + デバッグ保護、rc4 エンコード |
インターフェースの概要
- 入力エディタ - JavaScript のソースコードを貼り付けるか入力します。ファイルをドラッグ & ドロップするか、アップロードボタンを使用します。インラインスクリプトを含む HTML ファイルもサポートされています Pro。
- 出力パネル - 難読化された結果を表示します。Copy または Download ボタンで保護されたコードを取得します。
- プリセットセレクタ - VM または非 VM のプリセットを選択します。VM プリセットは上部にまとめられています。プリセットはカスタマイズ可能な基本オプションを決定します。
- オプションパネル - 難読化の設定を細かく調整します。各オプションの横にある
?アイコンをクリックすると、その説明が表示されます。 - Obfuscate ボタン - 選択したオプションでコードを変換します。VM プリセットはサーバー側で処理され、非 VM プリセットはブラウザ内で実行されます。
- 複数ファイルアップロード Pro - 複数のファイルを一度に処理し、ZIP としてダウンロードします。
- 履歴パネル Pro - 過去の難読化結果にアクセスし、入力 / 出力を復元します。
