0

ASコードのリンクを編集するためのSWFが与えられました。実際、SWFは、データベースからPHPコードによって生成された(実際に取得された)XMLを使用します。

menuXML.load("/sub/page/dynamic.php?genre=" + genre); 

つまり、重要なのは、同じSWF'mainfraim'を使用して、dynamic.php?genre = ###で提供されるリンクに基づいて、異なるアニメーション/ソースでそれらを埋めることができるということです。

これで、Flash Decompiler Goldを使用してSWF内のすべてのファイルを抽出し、AdobeFlashで再度開いて編集できるようになりました。完了したら、CTRL + ENTERを入力すると、すぐに4つのコンパイラエラーが発生します。エラー:1x<予期しない'if'が検出された>2x<ステートメントブロックは'}'で終了する必要があります>1x<'。'の後にフィールド名が表示されました。オペレーター。>>

元のSWFが完全に機能する場合、これらのエラーはどのように発生する可能性がありますか??!

これを解決できない場合は、SWFが使用しようとする.phpファイルを作成する方法を見つける必要があります。このファイルは、(私が推測するデータベースから)適切なリソースを選択して(?genre =を使用して)表示できます。 ###)

ありがとう!

4

1 に答える 1

3

あなたの問題を理解しているかどうかはわかりませんが、load メソッドに渡される URL を変更する必要があるようです。また、swf は Actionscript 2.0 のようです。

逆コンパイラは一種の作業ですが、逆コンパイラで生成できるflaファイルが同じswfを生成するのに役立つことはめったにありません。場合によってはコードが違法であり、ほとんどの場合、グラフィックがめちゃくちゃです。

私は以前、swf に簡単なコード変更 (いくつかの URL やその他の簡単なものを変更するなど) を加える必要がありましたが、ソースがありませんでした (それらは失われ、バックアップもありませんでした...)。

これにはflasmを使用しましたが、うまくいきました(また、最初に思ったほど難しくはありませんでした)。

Flasm は逆コンパイラではなく、逆アセンブラです。swf を取得し、アクション スクリプトのバイトコードを解析して、アセンブリのようなコードを含むテキスト ファイルを生成します。そのコードを編集して、swf を再アセンブルできます。グラフィックやアニメーションには触れないので、私が必要としていたものであり、おそらくあなたのために働くことができました.

私は少しテストを行いましたが、うまくいきました。

私はflaでこのコードから始めました:

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function(ok:Boolean):Void {
    if(ok) {
        _debug_txt.text = "ok";
        _debug_txt.text = xml;
    } else {
        _debug_txt.text = "error";
    }
};

xml.load("/sub/page/dynamic.php");

次に、cmd プロンプト (私は Windows を使用しています) を開き、swf を含むディレクトリに cd して次を実行します。

flasm -d test_flasm.swf > test_flasm.flm

これにより、swf がテキスト ファイル test_flasm.flm に逆アセンブルされます。実行可能ファイルのパスに flasm を追加しましたが、代わりに flasm.exe へのフル パスを使用できます。

.flm ファイルの関連部分は次のようになります。

setMember
push '/sub/page/dynamic.php', 1, 'xml'
getVariable
push 'load'
callMethod

あなたのものは異なるかもしれませんが、URL を探すと見つかります。次に、その URL を次のように変更します。

setMember
push 'test.xml', 1, 'xml'
getVariable
push 'load'
callMethod

次に、次を使用してswfを再構築しました。

flasm -a test_flasm.flm

そして今、test_flasm.swf は "/sub/page/dynamic.php" の代わりに "test.xml" を読み込みます。

お役に立てれば。

于 2010-04-24T17:09:37.893 に答える