Tiny Online Tools logoTiny Online Toolssearchツールを検索…grid_viewすべてのツール
ホームchevron_rightリバースエンジニアリングツールchevron_rightJavaScript 難読化解除ヘルパーJavaScript 難読化解除ヘルパー

JavaScript 難読化解除ヘルパー

文字列配列の参照展開、エスケープのデコード、定数畳み込み、無効な分岐の削除、角括弧からドット記法への変換など、よくある静的難読化パターンを元に戻します。

infoこれは、文字列配列、エスケープされたリテラル、リテラル演算、常に真/偽の分岐、角括弧アクセスといった、よくある静的難読化パターンのみを元に戻します。コードは一切実行されないため、eval ベースのローダーの展開、実行時依存の条件式の解決、単純なリテラルテストを超える制御フロー平坦化の復元はできません。変数名はそのまま残ります。難読化された JavaScript

関連ツール

JavaScript 難読化ツール

JavaScript 難読化ツール

ローカル変数の名前を変更し、文字列リテラルを隠し、制御フローを平坦化します。すべてブラウザ内で完結し、アップロードは一切ありません。

PDF JavaScript 検査

PDF JavaScript 検査

PDF の中のスクリプトをすべて見つけます。文書アクション、ページと注釈のイベント、フォームの計算まで。実行はせずに読めます。

JavaScript フォーマッター

JavaScript フォーマッター

JavaScript コードを読みやすく整形します。

JS 圧縮ツール

JS 圧縮ツール

コメントと空白を削除して JavaScript を圧縮します。

正規表現分割

正規表現分割

ブラウザ上で正規表現を使ってテキストを分割します。

PDFページ並べ替え

PDFページ並べ替え

PDF文書のページ順を並べ替えます。

CSS Grid ジェネレーター

CSS Grid ジェネレーター

ライブプレビューを見ながらレスポンシブな CSS Grid レイアウトを作成できます。

apps

もっと見る

無料オンラインツールの全コレクションを見る。

このツールが元に戻すもの

多くの JavaScript 難読化ツール——このサイト自身のものも含めて——は、少数の機械的で純粋に静的な変換でコードを書き換えます。すべての文字列リテラルを1つの配列にまとめ、使用箇所をゲッター関数の呼び出しに置き換える、通常の文字を \xNN\uNNNN のシーケンスにエスケープする、単純な算術を等価だが長い式に展開する、実際のコードを常に真または常に偽の if で包む、a.ba['b'] と書き換える、といった具合です。このツールはこれら5つを正確に元に戻します。

  1. 文字列配列のインライン化var _s = ["foo", "bar"]; function _g(i){ return _s[i]; } のようなパターンを見つけ、インデックスがリテラル数値である _g(0) 形式の呼び出しを実際の文字列に置き換えます。その後、配列と関数が他から参照されていなければ削除します。
  2. エスケープのデコード\x48\x69 をエスケープされた形式ではなく Hi として表示します。
  3. 定数畳み込み1 + 23 に、"a" + "b""ab" に、といった類似のリテラル演算を行います。推測が必要になるもの(リテラルの 0 での除算など)は避けます。
  4. 無効な分岐の削除if (true) { A } else { B } は単に A になります。while (false) {} は完全に消去されます。
  5. 角括弧からドットへname が有効な識別子であれば obj['name']obj.name になります。

このツールが行わないこと

これは AST 上の静的パターンマッチングであり、汎用の難読化解除ツールではありません。コードを一切実行しないため、eval ベースのローダーを展開したり、実行時の値に依存する不透明な条件式を解決したり、上記の単純なリテラル if/while/三項演算子のケースを超える制御フロー平坦化を元に戻したりすることはできません。変数名はそのまま残ります——_0x1a2b_0x1a2b のままです。ファイルが「文字列配列+ゲッター関数」の形に正確に一致しない場合、そのステージは単に置き換え件数を0件として報告するだけで、別のパターンを推測することはありません。

仕組み

コードは acorn で AST に解析され、値がすでにリテラルであると証明できる場合にのみ動作する手書きの変換によって走査・書き換えられ、astring で再生成されます。どのサーバーにも何も送信されません。解析と書き換えはすべてブラウザ内で行われます。

使い方

エディタに JavaScript を貼り付けるか入力して実行してください。サマリーには各ステージが何回発動したかが正確に表示されるので、何が変わって何が変わらなかったかが分かります。結果はコピーするか .js ファイルとしてダウンロードできます。