ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript のデコード: 難読化解除ガイド

JavaScript のデコード: 難読化解除ガイド

Susan Sarandon
リリース: 2025-01-05 05:23:41
オリジナル
732 人が閲覧しました

Decoding JavaScript: A Guide to Deobfuscation

Web 開発の初期段階で教えられる最も興味深いことの 1 つは、開発者ツール ページからソース コードをコピーするだけで Web サイトを複製する方法です。多くの開発者はこれが役立つと考えていますが、これらの Web サイトを構築した開発者や Web サイトの所有者には当てはまりません。

これらの Web サイト所有者は通常、クライアント側 (HTML、CSS、JavaScript) コードの盗難に怯え、不安を感じています。このため、彼らに残された選択肢は 1 つだけです。それは、ソース コードの不正コピーや悪用を阻止するソリューションを探すことです。

これらの Web サイト所有者のニーズを満たすソリューションの 1 つは、JavaScript 難読化と呼ばれる技術です。簡単に言うと、JavaScript 難読化 は、人間が読める JavaScript コードを、人間が理解するのが難しい複雑な形式に変換する行為です。

コインには 2 つの側面があるため、JavaScript 難読化 にも JavaScript 難読化解除と呼ばれる対応物があります。その名前から、これが JavaScript 難読化の逆を行う行為であることがわかります。これにより、すでに難読化された JavaScript コードを人間が読める形式に変換します。

: ほとんどの場合、JavaScript の難読化解除は難読化されたコードを元の形式に戻しませんが、元の形式が取得される場合もあります。 JavaScript の難読化解除は、元の JavaScript コードを約束するものではなく、読んで理解できるコードを約束するものであると言っても過言ではありません。

JavaScriptの難読化解除と難読化の実践的な解説

練習することでより良く学ぶことができるので、このガイドの導入部分にある理論的な説明すべての実践的な側面を見てみましょう。

これらのテクニックをテストするには、JavaScript コードが必要です。それでは、変数を定義し、for ループの実行回数に基づいて文字列を出力する単純な JavaScript コードを作成してみましょう。

const no_loop_cycle = 5

for (let i = 0; i < no_loop_cycle; i++) {
    console.log("String ", i)
}
ログイン後にコピー
ログイン後にコピー

テスト用の JavaScript コードが完成したので、JavaScript コードを難読化するための無料ツールである JavaScript Obfuscator Tool に移動します。

サンプル JavaScript コードをツールに貼り付け、[難読化] ボタンをクリックします。

出力として得られるものは次のとおりです:

function _0xb78f(_0x2224cc,_0x217706){const _0x44095f=_0x4409();return _0xb78f=function(_0xb78f5c,_0x2ff516){_0xb78f5c=_0xb78f5c-0xd3;let _0x60ee28=_0x44095f[_0xb78f5c];return _0x60ee28;},_0xb78f(_0x2224cc,_0x217706);}const _0x5f75f2=_0xb78f;(function(_0x2c5162,_0x14873c){const _0x4e4ef7=_0xb78f,_0x5a8a62=_0x2c5162();while(!![]){try{const _0x1b7f08=parseInt(_0x4e4ef7(0xdb))/0x1*(-parseInt(_0x4e4ef7(0xdc))/0x2)+parseInt(_0x4e4ef7(0xdd))/0x3+-parseInt(_0x4e4ef7(0xd9))/0x4*(parseInt(_0x4e4ef7(0xd4))/0x5)+-parseInt(_0x4e4ef7(0xde))/0x6+parseInt(_0x4e4ef7(0xd6))/0x7*(-parseInt(_0x4e4ef7(0xd3))/0x8)+parseInt(_0x4e4ef7(0xd5))/0x9+parseInt(_0x4e4ef7(0xd7))/0xa;if(_0x1b7f08===_0x14873c)break;else _0x5a8a62['push'](_0x5a8a62['shift']());}catch(_0x153236){_0x5a8a62['push'](_0x5a8a62['shift']());}}}(_0x4409,0x71eba));const no_loop_cycle=0x5;for(let i=0x0;i<no_loop_cycle;i++){console[_0x5f75f2(0xda)](_0x5f75f2(0xd8),i);}function _0x4409(){const _0x5189f4=['2031897OhIMeN','15423690UOVACr','String\x20','1326068tySTtA','log','1CErZVM','245842QiNqEk','1819539wUQmJB','4133556arqvkn','16ZAFmnL','10OzrKck','3358431pZHaXs'];_0x4409=function(){return _0x5189f4;};return _0x4409();}
ログイン後にコピー

この難読化されたコードをコード エディターに貼り付け、実行してその正確さを検証します。元のコードと同じ出力が得られることがわかります。

JavaScript の難読化の動作を確認できたので、JavaScript の難読化解除も同様に試してみるのも楽しいでしょう。上記の難読化されたコードをコピーし、この無料の難読化解除ツールに貼り付けます。

その難読化解除ツールを使用すると、次のコードが得られます:

const no_loop_cycle = 5

for (let i = 0; i < no_loop_cycle; i++) {
    console.log("String ", i)
}
ログイン後にコピー
ログイン後にコピー

難読化解除後に返されるコードは、元の JavaScript コードと似ていますが、少しだけ異なります。これにより、通常は実際の JavaScript コードは取得されず、理解できる読み取り可能な形式で取得されることがわかります。

JavaScript の難読化解除が重要なのはなぜですか?

ほとんどの Web サイトは、基本的なユーザー インタラクションを担当するため、主に JavaScript コード内に未承認ユーザーを阻止するための技術を埋め込むことに大きく依存しています (Web サイトとの操作が必要なほとんどの機能は JavaScript を使用して実装されます)。

この手法は主に JavaScript の難読化であり、ここで JavaScript の難読化解除が役に立ちます。これは、特に Web スクレイピングの場合に、このような問題に対処するのに役立ちます。

JavaScript の難読化解除によりコードが読みやすくなり、スクリプトをより深く理解し、操作をシミュレートし、予期されるデータを適切に収集できるようになります。

JavaScript の難読化により、ボット対策セキュリティ、Cloudflare 待合室、一連の CAPTCHA パズルなど、より多くのスクレイピング対策メカニズムが導入されます。これらの課題にもかかわらず、JavaScript の難読化解除はこれらの課題の回避とリバース エンジニアリングに役立つため、依然として有効です。

JavaScript の難読化解除の仕組み

JavaScript の難読化解除には次のプロセスが必要です:

  1. JavaScript の難読化の特定: これを特定するには、変数の名前変更、制御フローの縮小、16 進値、エンコードされた文字列などのいくつかのパターンを認識する必要があります。研究を続けると、より多くのパターンを発見できるようになります。
  2. 難読化されたコードへのアクセス: 難読化されたコードを特定できたので、次のプロセスは、より適切に分析するために Chrome の開発者ツールを使用してコードにアクセスすることです。ファイルを見つけた後に保存することもできます。
  3. コードをフォーマットします: Prettier や JavaScript beautifier などのツールを使用して、難読化されたコードをフォーマットできます。
  4. コードを実行して、エラーがないことを検証します。
  5. 最後に、機能ロジック (隠しコンテンツ生成またはトークン検証のコード) が抽出されます。

JavaScript の難読化解除のソリューション

JavaScript の難読化を解除するための完璧なソリューションは、問題解決スキル、難読化されたコード内のパターンを認識する能力、および技術ツールの使用を組み合わせることです。

コードのフォーマットに必要なツール、難読化されたコードにアクセスして分析するための Chrome DevTools、コードを解析して縮小するための uglify-js などの外部サードパーティ ライブラリ、およびデバッグ ツールがある場合は、JavaScript 難読化インスタンスを確認できます。 .

作業を迅速に行うには、任意の JavaScript 難読化解除ツール、またはこのガイドで使用されているツールを使用できます。

以上がJavaScript のデコード: 難読化解除ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート