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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/lolcaken/javascript-deobfuscator
静的分析コード分析動的コード分析 (DAST)リバースエンジニアリングスクリプトと自動化マルウェア分析ユーティリティとフレームワーク
GitHublolcaken/javascript-deobfuscator

javascript-deobfuscator

javascript-obfuscator 5.x の出力(文字列配列、制御フローの平坦化、自己防御、RC4/base64)に対応した難読化解除ツール

リポジトリを見る
2413時間32分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

javascript-deobfuscator

javascript-obfuscator 5.x の出力を難読化解除するツール。難読化された JS を渡すと、同じ動作をする読みやすい JS が返ってきます。

セットアップ

Node 18+ が必要です。

git clone https://github.com/lolcaken/javascript-deobfuscator.git
cd javascript-deobfuscator
npm install
npm run build

使い方

ファイルを難読化解除します(-o を指定しない限り、入力ファイルの隣に <name>.deob.js を書き出します):

node dist/src/cli.js input.ob.js -o output.js --stats

フラグ:

フラグ効果
-o <file>出力パス(デフォルト:<input>.deob.js)
--no-rename_0x… 識別子をリネームせずそのまま保持する
--stats各パスが何を変更したかを表示する
-h使用方法

または npm link の後なら、どこからでも:

deobfuscate input.ob.js -o output.js

ライブラリとして使う:

import { deobfuscate } from 'javascript-deobfuscator';

const { code, stats } = deobfuscate(obfuscatedSource, { rename: true });
console.log(code);

公開後は npm からインストールできます:

npm install javascript-deobfuscator

例

入力 — test/fixtures/source.js を javascript-obfuscator で難読化したもの(文字列配列+ローテーション、文字列分割、制御フローの平坦化、デッドコード注入、オブジェクトキー変換、数値式)、3690 バイトのうちのこれ:

function _0x54b6(_0xb7919b,_0x500140){_0xb7919b=_0xb7919b-(0x1f8d+-0x1*-0xb9d+0x2a06*-0x1);const _0x229d59=_0x1598();let _0x3ccc27=_0x229d59[_0xb7919b];return _0x3ccc27;}const _0x822f89=_0x54b6;function _0x1598(){const _0x23b861=['com/','http','ies','log','join','uiXo','alic','fqAn','oint','bob','2zqCUix','PJTj','3161739tTCvqO','?r=','5dPKAUt','727970ZDbPoX','ple.','caro','neg','s://',…];_0x1598=function(){return _0x23b861;};return _0x1598();}(function(_0x5e6e6e,_0x257dcb){const _0x5ed3d4=_0x54b6,_0x860095=_0x5e6e6e();while(!![]){try{const _0x44a344=-parseInt(_0x5ed3d4(0x138))/(0xb*-0x281+0x1c08+0x2*-0x3e)+…;if(_0x44a344===_0x257dcb)break;else _0x860095['push'](https://github.com/lolcaken/javascript-deobfuscator/blob/main/_0x860095%5B%27shift%27%5D%28));}catch(_0x1f2aee){_0x860095['push'](https://github.com/lolcaken/javascript-deobfuscator/blob/main/_0x860095%5B%27shift%27%5D%28));}}}(_0x1598,…));const greeting=_0x822f89(0x12e)+'o';function greet(_0x35652d){…}const users=[_0x822f89(0x12c)+'e',_0x822f89(0x12d),_0x822f89(0x138)+'l'];

(難読化された完全なファイルは test/fixtures/demo.ob.js にあります。)

出力 — 2359 バイト、同一に動作します:

const greeting = "Hello";
function greet(p) {
  const q = f,
    r = {};
  r[q(0x12b) + 'i'] = function (u, v) {
    return u + v;
  }, r[q(0x140) + 'X'] = function (w, x) {
    return w + x;
  };
  const s = r,
    t = s[q(0x12b) + 'i'](https://github.com/lolcaken/javascript-deobfuscator/blob/main/s%5Bq%280x12b) + 'i'](s[q(0x140) + 'X'](https://github.com/lolcaken/javascript-deobfuscator/blob/main/greeting%2C ",\x20"), p), '!');
  return t;
}
const users = ["alice", "bob", "carol"];
let total = 0;
for (let i = 0; i < users.length; i++) {
  total += users[i].length, console.log(greet(users[i]));
}

(完全な出力:test/fixtures/demo.deob.js。)

どちらも以下を出力します:

Hello, alice!
Hello, bob!
Hello, carol!
https://api.example.com/v1?r=3 13 zero|pos|pos

対応しているもの

  • 文字列配列(プレーン、base64、RC4)とローテーションループ、デコーダラッパー、calls-transform、文字列分割
  • 制御フローの平坦化(while(true){switch…})、デッドコード注入
  • プロキシ関数/オブジェクト、オブジェクトキー変換、数値式
  • 自己防衛/デバッグ保護/コンソール出力の無効化(削除)
  • スコープを考慮した _0x… のリネーム

テスト

npm test は javascript-obfuscator 5.9.0 でサンプルプログラムを 3 つのプリセット(default、medium、heavy)で難読化し、難読化解除されたコードが同一の出力を出し、クリーンに再パースできることを検証します。現在 9/9。

ライセンス

ISC — LICENSE を参照。

ツールをダウンロード