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を購読してください。

Source: https://habr.com/ru/post/J84736/


All Articles