Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
jd — javascript-obfuscator(obfuscator.io)の出力を難読化解除し、AST変換、静的デコード、およびgojaサンドボックスへのフォールバックを用いてJavaScriptを非圧縮化するGo CLI。 | Kitploit
ツール/GitHubGitHub/ejfkdev/jd
静的分析動的分析 (サンドボックス)コード分析リバースエンジニアリングマルウェア分析ユーティリティとフレームワーク
GitHubejfkdev/jd

jd

javascript-obfuscator(obfuscator.io)の出力を難読化解除し、AST変換、静的デコード、およびgojaサンドボックスへのフォールバックを用いてJavaScriptを非圧縮化するGo CLI。

リポジトリを見る
2201ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

jd

CI Release License Go Version Release zread

中文

jd は、javascript-obfuscator(obfuscator.io)の出力を難読化解除し、JavaScript を非圧縮化する Go ツールです。webcrack と synchrony の Go 移植版です。

機能

Obfuscator.io の難読化解除

javascript-obfuscator の出力を検出して逆変換します:

  • 文字列配列の検出(関数でラップされた形式と単純な配列形式、var/const/let)
  • 配列ローテーターの検出(break 条件付きの push/shift IIFE)
  • デコーダーの検出(インデックスシフト、Base64/RC4/カスタムエンコーディング、2 パラメーターデコーダー)
  • ラッパーエイリアスの解決(デコーダーへの var/function エイリアス)
  • ハイブリッドデコード — 静的シミュレーション(SIMPLE/Base64/RC4)と、カスタムエンコーダー向けの goja サンドボックスフォールバック
  • ヘルパーの削除 — デコード後に文字列配列、ローテーター、デコーダーの宣言を削除

非圧縮化

20 以上の可読性変換:

変換例
computed-propertiesconsole["log"] → console.log
merge-strings"a" + "b" → "ab"
unminify-booleans!0 → true、!1 → false
number-expressions1 + 2 → 3
void-to-undefinedvoid 0 → undefined
raw-literals0x1 → 1
sequencea(), b(), c() → 個別の文
split-variable-declarationsvar a=1, b=2 → var a=1; var b=2
block-statements単一の文からなる本体を { } で囲む
logical-to-ifa && b() → if (a) b()
ternary-to-ifa ? b() : c() → if (a) b() else c()
merge-else-ifelse { if (...) } → else if (...)
for-to-whilefor(;;) → while(true)
yoda5 === x → x === 5
infinity1/0 → Infinity
invert-boolean-logic!(a == b) → a != b
unary-expressions文レベルで無意味な void/!/typeof を削除
remove-double-not!!true → true

ES モジュールのサポート

goja のパーサーは ES モジュール構文(import/export)をサポートしていません。jd は import/export 文を事前に抽出し、残りのスクリプトを解析して変換を実行した後、その文を出力の先頭に付加します。動的な import() 式は import 宣言と正しく区別されます。

正規表現に安全なフォーマット

goja が完全に解析できないファイル(例:正規表現を多用する Monaco エディタの言語定義)に対して、jd はソースレベルのフォーマットにフォールバックします。トークナイザーが正規表現リテラル、文字列、コメントをそのまま保持しながらセミコロンで分割します。

インストール

macOS (Homebrew)

brew install ejfkdev/tap/jd

ビルド済みバイナリ

GitHub Releases からダウンロードしてください(Linux/macOS/Windows、x86_64/ARM64)。

ソースからのビルド

go build -o jd .

使用方法

# Deobfuscate a file (output to stdout)
jd obfuscated.js

# Write to a file
jd obfuscated.js -o cleaned.js

# Read from stdin
cat obfuscated.js | jd -

# Process a directory — recursively processes all .js/.mjs/.cjs files,
# mirrors the directory tree to the output directory.
jd src/ -o dist/

# Directory mode with default output: creates <input>-deobfuscated
jd src/

# Specify file extensions
jd src/ -o dist/ --ext .js,.mjs

# Parallel processing (N workers, default: number of CPUs)
jd src/ -o dist/ -j 8

# Skip non-code files (only output processed JS)
jd src/ -o dist/ --copy-noncode=false

# Only deobfuscate, skip unminify
jd --unminify=false obfuscated.js

# JSON output with warnings
jd --json obfuscated.js

フラグ

フラグデフォルト説明
-o, --outputstdout出力ファイルまたはディレクトリ(ディレクトリのデフォルト:<input>-deobfuscated)
--deobfuscatetrueobfuscator.io の難読化解除を実行
--unminifytrue可読性変換を実行
--sandboxautoデコーダー実行:auto(静的→サンドボックス)、only(常にサンドボックス)、off(静的のみ)
--timeout10sファイルごとのサンドボックスタイムアウト
--ext.js,.mjs,.cjsディレクトリモードで処理するファイル拡張子
-j, --workers0 (=CPU)ディレクトリモードの並列ワーカー数
--copy-noncodetrue非コードファイルを出力ディレクトリにコピー
-v, --verbosefalse診断情報を stderr に出力
--jsonfalse{code, warnings} JSON を出力

アーキテクチャ

jd/
├── main.go                     # CLI entry
├── internal/
│   ├── cli/                    # cobra CLI (i18n: English/Chinese)
│   ├── deobfuscator/           # top-level pipeline + ES module preprocessing
│   ├── jsast/                  # AST walker (Cursor, Replace, Remove, Clone)
│   ├── codegen/                # AST → JavaScript printer (pretty/compact)
│   ├── scope/                  # lexical scope & binding analysis
│   ├── sandbox/                # goja VM wrapper for decoder execution
│   ├── decoder/                # static decoding: Base64/RC4/rotation
│   ├── deobfuscate/            # string-array/rotator/decoder detection + transforms
│   ├── unminify/               # 20 readability transforms + fixpoint runner
│   └── transform/              # Transform abstraction + ApplyFixpoint
└── testdata/samples/           # test fixtures

パイプライン

parse → splitModuleStatements → deobfuscate → unminify → generate
  1. Parse — IgnoreRegExpErrors 付きの goja パーサー。解析できないファイルはソースレベルのフォーマットにフォールバック
  2. Deobfuscate — obfuscator.io の文字列配列/ローテーター/デコーダーを検出し、すべての呼び出し箇所をデコード(静的を優先、サンドボックスにフォールバック)、ヘルパーを削除
  3. Unminify — 統合された可読性変換の不動点ループ(最大 20 パス)
  4. Generate — 演算子の優先順位と正しい括弧付けを備えた pretty モードのコード生成

ハイブリッドデコード

デコーダーは 2 段階のアプローチを採用しています:

  1. 静的パス(synchrony 方式):push/shift による配列ローテーションをシミュレートし、SIMPLE/Base64/RC4 を純粋な Go でデコード — 高速かつ決定的。
  2. サンドボックスフォールバック(webcrack 方式):文字列配列、ローテーター、デコーダーのコードを抽出し、Interrupt タイムアウト、SetMaxCallStackSize、決定的な rand/time、setInterval/setTimeout なしの goja VM で実行 — 静的パスではデコードできないカスタムエンコーダーを処理。

依存関係

  • goja — 純粋な Go の JavaScript パーサーおよびランタイム(CGO 不要)
  • cobra — CLI フレームワーク

ライセンス

MIT

ツールをダウンロード