2016-09-23 67 views
0

我需要從應用程序中確定SWF文件的ActionScript版本,而不使用其他SWF來獲取信息,並且正如我在爲此進行研究時,我遇到了this閃光反編譯器。根據Flash反編譯器的結果確定ActionScript版本

我用這個工具反編譯了幾個我已經知道ActionScript版本的Flash文件,並且我注意到了ActionScript 2文件和ActionScript 3之間的區別。在這個截圖中:(unfortunately I cannot post images yet),你可以看到底部的SWF稱爲Cardio Sequence.swf,這是一個ActionScript 3文件,在scripts文件夾中有一個名爲MainTimeline的文件。

在我測試的所有文件中,ActionScript 3文件都有這個MainTimeline文件,而ActionScript 2文件沒有。有什麼方法可以讓這些信息在另一個應用程序中作爲字符串被讀取(即if (scripttext.MainTimeline != null) {doSomething})?或者,這甚至是確定ActionScript版本的可行方法?

回答

0

SWF文件中的FileAttributes標記包含一個標誌,該標誌指示SWF是使用AVM1(ActionScript 1.0/2.0)還是AVM2(ActionScript 3.0)。如果省略此標記,則SWF適用於Flash Player 7或更低版​​本,並且只能是AVM1。更多信息請見SWF specs

您可以使用您選擇的任何SWF解析庫或反編譯器來查找此標記。特定的JPEXS反編譯器支持command line options將SWF標籤,AS2和/或AS3腳本列表輸出到文件。這包括-dumpSWF,-dumpAS2-dumpAS3命令行參數。例如:

ffdec.bat -dumpSWF myfile.swf

+0

這恰好是我使用的反編譯器!非常感謝! –

+0

這是我從在swf上使用-dumpSWF得到的文本,這個文件被稱爲AS2:https://www.dropbox.com/s/smrcuw98jh7essm/NewSwfDump.txt?dl=0現在我該如何去了解解釋這個文件,所以我知道如何閱讀未知的ActionScript版本? –

+0

FileAttributes標記的第4位決定了ActionScript版本。請參閱[SWF規範的FileAttributes部分](http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/swf/pdf/swf-file-format-spec.pdf ),第57頁。在您發佈的示例中,FileAttributes標記的第1個字節中的第4位是0,因此您知道它是一個ActionScript 2文件。 –