SS ツールボックス
SS ツールボックス
すべてのデータはローカルで処理されます

JavaScript オブフスケーター — 読解コストを上げるもので、暗号化ではありません

ブラウザ内で javascript-obfuscator の既定プリセットを使って JavaScript を難読化します。文字列を回転する配列にまとめ、識別子を16進数名に変え、コードを圧縮・簡略化して読みづらくしますが、暗号化ではなく、コードを復元不能にはできません。アップロードもオプション切替もありません。

見た目は奇妙ですが、実際に実行できます。Devtool にコピーして試してみてください

この難読化ツールができること・できないこと

  1. 難読化は読解コストを上げるだけで、暗号化ではない

    出力は普通の JavaScript で、ブラウザで実行でき、開発者は整形して読めます。読む手間を増やすだけで、ロジックを隠したり秘密を守ったり、逆難読化を防いだりはできません。

  2. ライブラリの既定プリセットを使用

    有効: 文字列配列(ローテート・シャッフル・インデックスシフト、しきい値 0.75)、16進数の識別子、コンパクト出力、簡略化。無効: 制御フローの平坦化、デッドコード注入、デバッグ保護、自己防衛コード、グローバル名の変更、Unicode エスケープ。

  3. すべてブラウザ内で処理

    javascript-obfuscator をこのタブ内で実行します。コードはアップロードされず、非公開プロジェクトのソースは端末から出ません。

  4. ボタンは1つ、挙動は一定

    このページはあえてオプション切替を用意せず、常に同じ控えめなプリセットを適用します。出力が急に巨大化したり遅くなったりしないためです。

  5. そのまま貼り付けられる出力

    結果は普通の JavaScript です。DevTools、ビルド工程、ファイルにコピーできますが、公開前にテストを実行してください。

よくある質問

難読化でコードは安全になりますか?

いいえ。難読化は読む手間を増やすだけで、暗号化ではありません。鍵もなく、やる気のある人なら整形して追跡できます。API キー、パスワード、独自アルゴリズムをクライアント側 JavaScript に置かず、サーバー側の検証とアクセス制御を使ってください。

既定で有効なオプションは?

このページはカスタムオプションなしで javascript-obfuscator を呼びます。既定ではコンパクト出力、16進数の識別子、簡略化、しきい値 0.75 の文字列配列(ローテート・シャッフル・インデックスシフト)が有効です。制御フローの平坦化、デッドコード注入、デバッグ保護、自己防衛、renameGlobals、numbersToExpressions、transformObjectKeys、unicodeEscapeSequence は無効です。

文字列配列は何をするのですか?

文字列リテラルを配列に移し、インデックス参照に置き換え、起動時の小さなブートストラップで配列を回転・シャッフルします。ソース内のメッセージや URL を検索しにくくしますが、実行時には文字列が存在し、復元できます。

制御フローの平坦化とは?ここでは使われていますか?

分岐やループを switch 駆動の状態機械に書き換え、流れを追いにくくします。このページでは無効です。サイズと CPU コストが増え、コードが壊れることもあります。必要な場合は javascript-obfuscator の CLI やライブラリで直接有効にできます。

難読化でコードが壊れたり遅くなったりしますか?

既定プリセットは比較的控えめですが、関数名、toString()、eval、フレームワークのリフレクションに依存するコードは壊れる可能性があります。文字列配列の間接参照で起動コストが少し増えます。制御フローの平坦化(ここでは未使用)はさらに増えます。難読化後は必ずテストしてください。

難読化後のコードはどうデバッグしますか?source map は出ますか?

source map は生成しません。元のソースを保持し、難読化前または開発ビルドでデバッグし、テスト通過後に難読化版を公開してください。整形すると構造は見やすくなりますが、識別子は読めないままです。

複数ファイルやプロジェクト全体を一度に難読化できますか?

いいえ。このページは貼り付けた1件ずつを処理します。複数ファイルは javascript-obfuscator の CLI やビルドプラグインを使ってください。

関連ツール
SponsorMindElixir