SWFを抽出すると、Adobe Flash CS4のコンパイラエラーが発生します
-
01-10-2019 - |
質問
ASコードのリンクを編集するためのSWFが与えられました。実際には、SWFは、データベースからPHPコードによって生成される(実際に取得された)XMLを使用しています。
menuXML.load("/sub/page/dynamic.php?genre=" + genre);
そのため、ポイントは、同じSWF 'mainfraim'を使用して、dynamic.php?genre = ###に基づいて、異なるアニメーション/ソースを埋めることができることです。
今、Flash Decompiler Goldを使用してSWFのすべてのファイルを抽出し、Adobe Flashで再び開いて編集できます。完了したら、Ctrl+Enterを入力すると、すぐに4つのコンパイラエラーがあります!!エラー:1x <予期しない 'eccounted> 2x <ステートメントブロックは'} '>'> 1x <ecected a field name '後に終了する必要があります。オペレーター。 >
元のSWFが完全に機能する場合、これらのエラーはどのように存在するのですか?!
これを解決できない場合は、.phpファイルを作成する方法を見つけて、SWFが使用しようとします。 ###)
ありがとう!
解決
私はあなたの問題を理解しているかどうかはわかりませんが、ロード方法に渡されたURLを変更する必要があるようです。また、SWFはActionScript 2.0のようです。
分解者のような作業ですが、逆コンパイラで生成できるFLAファイルは、同じSWFを生成するのに役立つことはめったにありません。時々、コードが違法であり、ほとんど常にグラフィックがねじ込まれています。
私はかつていくつかの単純なコードの変更(いくつかのURLやその他の単純なものを変更するなど)をSWFに変更する必要がありましたが、ソースはありませんでした(紛失し、バックアップがありませんでした...)。
使った ゆがみ このため、うまく機能しました(また、私が最初に思ったほど難しくありませんでした)。
Flasmは逆コンパイラではなく、分解者です。 SWFを使用し、ActionScriptバイトコードを解析し、アセンブリのようなコードを使用してテキストファイルを生成します。そのコードを編集して、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");
次に、SWFを含むディレクトリにCMDプロンプト(私はWindowsにあります)を開き、次を実行しました。
flasm -d test_flasm.swf > test_flasm.flm
これにより、SWFがテキストファイルtest_flasm.flmに分解されます。実行可能ファイルのパスに溝を追加しましたが、代わりに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」をロードします。
お役に立てれば。