Adobe Profilerが失敗する

ハブラのすべての住民にこんばんは。 私は長い間、この投稿にどのように名前を付けるかを考え、頭に浮かぶものに最初に名前を付けることにしました。 原則として、この名前は私が話したいことをほぼ完全に説明しています。 そして、逆コンパイルせずに表示しているすべての swfファイルを簡単かつ簡単に変更する方法について説明します。





それでは始めましょう。 私たちの実験的なものは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がたくさんあります。 このバグのおかげで、任意のフラッシュアプ​​リケーション用に独自のラッパーを作成し、これらのアプリケーション内でコードインジェクションを実行できます。 さらに、アプリケーション側でこのような注入を決定することは非常に困難です。



率直に言って、このバグにはいくつかの用途があります。

このバグには多くのアプリケーションがありますが、AdobeがFlexのコードのプロファイリングとデバッグに不可欠な部分であるため、Adobeがすぐにそれを閉じるかどうかはわかりません。 このバグはJean- Philippe Auclairによって発見されました。 この投稿へのコメントで彼に敬意を表するか、彼のtwitterを購読してください。






All Articles