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

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

Jan 05, 2025 am 05:23 AM

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

C/CからJavaScriptへ:すべてがどのように機能するか C/CからJavaScriptへ:すべてがどのように機能するか Apr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptとWeb:コア機能とユースケース JavaScriptとWeb:コア機能とユースケース Apr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScript in Action:実際の例とプロジェクト JavaScript in Action:実際の例とプロジェクト Apr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンの理解:実装の詳細 JavaScriptエンジンの理解:実装の詳細 Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Python vs. JavaScript:開発環境とツール Python vs. JavaScript:開発環境とツール Apr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScript通訳者とコンパイラにおけるC/Cの役割 JavaScript通訳者とコンパイラにおけるC/Cの役割 Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

See all articles