ドキュメント
/

はじめに

はじめに

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 のコンテキスト。windowdocument もなく、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 HighMaximum~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 - 過去の難読化結果にアクセスし、入力 / 出力を復元します。