JavaScriptデオブファスカータ
暗号化されたJavaScriptコードを貼り付けるだけです、ヘックスコード化された文字列、単一文字の変数名、上部に配置されたデコーダループが含まれています。このツールはその構造を段階的に解明します:文字列のアンエスケープ処理、検索配列のインライン化、変数名を読みやすいプレースホルダーに変更、不要なラッパーを削除し、結果を美しく整える処理を行います。ページやPastebinリンクから取得した疑わしいコード断片の分析に非常に有効です。
JavaScriptの暗号化を解除する方法
-
1
暗号化されたソースを貼り付けます
`javascript-obfuscator.io`スタイルのツールから生成されたミニファイドデータ、パッケージ化されたデータ、または出力データです。
-
2
パーサがそれを走行するようにします
文字列配列はデコードされ、数値列は評価され、デッドコードブランチは削除されます。
-
3
リネームを実行します
単一文字の変数`a`/`b`/`c`は、`var1`、`var2`などに名前が変更されます。これらは読み取り可能なプレースホルダーであり、必ずしも意味のある名称とは限りません。
-
4
美しくする
インデントを設定し、改行を追加して、実際に読めかつ理解できるコードを出力してください。
このツールが元に戻す難読化の手法
| 難読化 | 復元 |
|---|---|
| ヘックス文字列文字値 | \x48\x69 を "Hi" に復号化します |
| ユニコードエンコードされた識別子 | \u006E\u0061\u006D\u0065 -> name |
| 文字列配列 + 解読関数 | 配列をインライン化し、解析時に解読関数を呼び出す |
| 数値定数折りたたみ | 0x1F3 + 5 -> 504 |
eval(...) ラッパー |
内部コードをトップレベルに移動します |
| 制御フローのフラット化(状態機械) | スイッチケースを検出し、フローを再構築します |
| 過時コード/無効な三値関数 | 場面で実行されないブランチを削除します |
_0x1a2b3c() のスタイル名 |
増加型の var1、var2 に置換します |
限界:このツールが実行できない機能
- 元の変数名を復元します。
userEmailがaに変更されると、どのツールもその名称を推測することはできません。元の意味ではなく、読みやすい構造が得られます。 - カスタム仮想化ツールを解封する。 大容量の商用オブフスカベータ(JScrambler、Obfuscator.ioのエンタープライズ向け製品)はバイトコードを解釈する専用の仮想マシンを搭載しているため、これらを回避するには手動によるリバースエンジニアリングが必要となる。
- 任意のコードを実行します。 デオブファスカータは純粋な式を静的に評価します。リモートリソースを取得したり、DOM要素を作成したり、ネットワークと通信したりすることはありません。
典型的な使用例
- セキュリティ調査:メールで送信された疑わしいスクリプトや、攻撃を受けたCDNから配信されたスクリプトを詳細に解析する。
- コード考古学:唯一の残存情報がミニファイドされたコードバンドルである古いコードを復元する手法。
- 学習:チュートリアルレベルの暗号化処理が実際にはどのような仕組みで動作しているのかを理解すること。
安全性と倫理
重要なシステムにログインしているブラウザタブ内で、信頼できないJavaScriptを実行してはいけません。そのコードはクッキーを読み取り、内部APIを呼び出し、セキュリティ情報を漏洩させる可能性があります。デオブファスカータは貼り付けたコードを実行するのではなく、ソースコードをテキストとして直接処理します。
分析する権限があるコードのみをデオブファスケートできます。ライセンス付きソフトウェアの逆エンジニアリングは、あなたの管轄区域では制限される場合があります。
よくある質問
いいえ。オブフスカタがuserEmailを_0x1a2b3cに変更すると、元の名称は失われます。デオブフスカタは読みやすいプレースホルダー(var1、var2)および正しい構造を提供しますが、元の意味に基づいた名称は復元されません。
いいえ。コードはASTとして解析され、静的な変換が適用されます。純粋な式(例えば0x1F3 + 5)は折りたたまれますが、ネットワークやクッキー、DOMには一切影響しません。
はい、ただしバンドラーの出力は意図的に暗号化するのではなく最小化されているため、結果としてモジュールラッパーが復元された美しいコードのみが得られます。別途利用可能なソースマップがあれば、はるかに適切な名称が付与されます。
大規模な商用ツール(企業向けJScrambler、カスタム仮想マシン)には、静的分析では解読できないバイトコードインタラプレターが搭載されています。これらのツールは表面層の情報を把握できますが、手動での逆工程処理を施さなければコアロジックの内容は依然として不明瞭です。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
EditorConfig ジェネレーター
インデントのスタイルとサイズ、改行コード、文字コード、空白ルールを指定して .editorconfig ファイルを生成し、IDE やエディタをまたいで書式を統一できます。
メールアドレス検証ツール
メールアドレスを検証します。RFC 5322構文チェック、MXレコードのライブ確認に加え、ローカル部、ドメイン、長さの詳細を表示します。メールは送信されません。
Markdownチートシート
見出し、リスト、表、コード、リンク、画像、GFM構文を、実際のプレビューとコピーできる例で確認できる実用的なMarkdownリファレンスです。
このツールは他の言語でも利用できます
- Trình giải mã mã JavaScript (JavaScript Deobfuscator) [VI]
- JavaScript-Deobfuscator [DE]
- Desofuscador de JavaScript [PT]
- 자바스크립트 디오프스버커 [KO]
- เครื่องถอดรหัส JavaScript [TH]
- أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator) [AR]
- JavaScript-deobfuscator [SV]
- JavaScript-deobfuscator [NL]
- Déobfuscateur JavaScript [FR]
- Deobfuskator JavaScriptu [PL]
- Deobfuscator JavaScript [ID]
- Desofuscador de JavaScript [ES]
- JavaScript Deobfuscator [EN]
- Deobfuscator JavaScript [IT]
- JavaScript-деобфускатор [RU]
- JavaScript Deobfuscator [TR]
- JavaScript反混淆工具 [ZH]