
それでは始めましょう。 私たちの実験的なものはYouTubeプレイヤーになります。
最初に、少し背景を説明します。 Flexでは、まともなテクノロジーと同様に、アプリケーションのプロファイルを作成できます。 プロファイリングには、 特別なエージェントが使用されます。これは、最終的なswfファイルをそれ自体にロードし、ソケット接続を介してプロファイラーにデータを転送します。
ここで、Flashを使用している人にとっては、「エージェントが異なるドメインにある場合、エージェントがプロファイリング用のファイルからデータを受信するにはどうすればよいですか?」
Flashでは、アクセス権に制限があります。 たとえば、siteA.comからファイルAをダウンロードし、siteB.comからファイルBをダウンロードした場合、BがコードAにアクセスできるようにするには、コードAへのアクセスを手動で許可する必要があります(ApplicationDomainおよびLoaderContextを使用)またはオブジェクトAへのリンクをBに渡します。さらに、クロスドメインダウンロードを許可するcrossdomain.xmlファイルがsiteB.comに存在する必要があります。 そのようなこと。
すべてが非常に簡単です。 Flashアプリケーションがロードされると、Flex Profilerをキャッチするドキュメント化されていない特別なイベント「allComplete」を作成し、イベントからアプリケーションのオブジェクトへのリンクをすでに取得できます。 このリンクは、任意のアプリケーションにクロールできる穴です。
そして、最も興味深いのは、このエージェントでは、Flashプレーヤーによって開かれたすべてのファイルが、すべてのプレーヤーとブラウザプラグインからダウンロードされることです。
さて、理論から実践に移りましょう(上記で説明したことをすべて理解していない場合は、すぐに行うこととそれがもたらすものを見てください)。
ステージゼロ
デバッグするには、デバッグプレーヤーが必要です。 サイズは、標準よりわずかに大きくなっています。 こちらからダウンロードできます。
ステージ1
最初に必要なのは、プロファイリング用の独自のカスタムエージェントです。 そのコードはすべて60行になります。 ここに彼のコードがあります( AS3コードの通常の強調表示がないため、写真として挿入しました。コードの下部にソースをダウンロードするためのリンクがあります )。

ダウンロード: ソースコード | コンパイルされたエージェント
コンパイルされたエージェントを自分でダウンロードして、好きなフォルダーに入れてください。
ステージ2
さて、ダウンロードしたアプリケーションへのリンクを受け取り、それをデバッガに渡す独自のエージェントができました。 信頼できるアプリケーションに追加します。 これを行うには、プレーヤー設定ページに移動し、Injector.swfファイルを選択します
デバッガー自体をダウンロードします。 この場合、 DeMonsterDebuggerが使用されます。これは、AIRアプリケーションの形式で作成された優れたデバッガーです。 それをインストールします。
ステージ3
次に、プレーヤーの構成ファイルでプロファイラーの値を設定する必要があります。 ファイルの名前はmm.cfgで、次のディレクトリにあります。
Windows 2000 / XP
C:\Documents and Settings\{username}\mm.cfg
Windows Vista / 7
C:\Users\{username}\mm.cfg
Mac OSX
/Library/Application Support/Macromedia/mm.cfg
Linux
/home/username/mm.cfg
ファイルが存在しない場合は、作成してください。
次に、プロファイラーへのパスを規定します。 次の行をmm.cfgに追加します。
PreloadSWF={ }
例:
PreloadSWF=D:/Workspace/Injector/bin/Injector.swf
ステージ4
ブラウザ/ブラウザまたはフラッシュプレーヤーを再起動します。 もう一度起動して、DeMonsterDebuggerを開きます。


覚えておくべき主なことは、1つのswfファイルを開くだけでよいことです。そうしないと、最初にコードが実行されるファイルがデバッガーのクライアントに接続します。
このすべてがあふれているものは何ですか
開発者にはhemoがたくさんあります。 このバグのおかげで、任意のフラッシュアプリケーション用に独自のラッパーを作成し、これらのアプリケーション内でコードインジェクションを実行できます。 さらに、アプリケーション側でこのような注入を決定することは非常に困難です。
率直に言って、このバグにはいくつかの用途があります。
- ブラウザベースのマルチプレイヤーゲームで使用-これにより、画面に表示されない隠されたパラメーターを確認でき、送信されたデータを制御したり、ボットを作成したりできます。
- 音楽やビデオのあるサイトに関連するリソースへのリンクを取得するためのラッパー
- 広告配信を無効にするラッパー、またはアプリケーションに配線されたチェックをバイパスするラッパー
