2009-06-03 59 views
4

是否可以在將修改後的SWF返回到之前,通過servlet(例如基於每個會話)更改已編譯的SWF中的變量值(使用as3)客戶端。我注意到有幾個命令行實用程序是開源的,但這些似乎集中在AS2上。這可能與AS3代碼?什麼庫可用從java做到這一點? (即基本上編輯非捆綁SWF中的結果pcode,然後重新打包它)。在已編譯的SWF文件中更改變量值的最佳方法

理想情況下,想要在每個會話令牌中嵌入主SWF(不使用閃存變量),然後可以用它來驗證請求。我們的目標是將這一說法作爲XSS支持的又一步驟(與跨域權限文件結合使用時)。 Flash vars仍然在DOM中,但是這隻允許加載器知道密鑰的值(對於java腳本來說非常困難),我們可以很好地鎖定flash,而不是將值公開給任何加載的swfs,並且跨域文件只能通過原始的swf(只有一個來自該域)來限制任何對xml文件的讀取。

回答

0

您可以使用Flex SDK在請求時從源編譯swf。我會建議一個非常小的swf,然後可能會加載其他更復雜的swf。

+0

想到這一點,但一)Flex編譯器是不是最快B)的大量的工作實現自動化。閱讀swf並更改var aka FLASM將會很好並且簡單 - 我們也不必爲prod服務器和運輸代碼煩擾源代碼。 – nso1 2009-06-03 17:27:31

2

部分問題在於編譯後的SWF在內部使用zlib流進行壓縮,因此修改二進制文件而不從命令行SDK重新編譯是非常重要的。

使用命令行工具(mxmlc或Ant - 我們在項目中都使用這兩種工具)設置和自動化Flex SDK並不難,但如果您確實堅持要修改二進制文件沒有重新編譯,那麼你可能會發現this blog post有幫助。它包含一個實用程序,將內部流解壓縮爲其原始數據,並用不同的壓縮算法重新壓縮。在該腳本的中間(數據解壓縮時),您可以通過二進制搜索您要查找的值(通過實驗發現的已知偏移量或公共成員標籤),然後更改數據,重新壓縮流,瞧 - 你有一個自定義.swf。如果您更改嵌入式資產(例如文本XML文件)中的值,則可能會更容易找到要在二進制文件中更改數據的時間。

swf_recompress.zip

+0

如何編輯swfextract被調用後創建的swf_data? – 2013-05-26 20:12:27

相關問題