swiffas
1.0.0
一個小型Python 2庫,提供:
最初的意圖是提供從編譯的AS3代碼到LLVM IR的轉板器。
其他語言中有一兩個語言,但大多數人都被刻薄,或者它們太完整而無法解析我的目標文件。
序列化回到SWF文件應該相對簡單地添加。
pip install swiffas
請看一下example.py 。
無論如何,這是一個快速的摘要:
import swiffas
from swiffas import swftags
# parse the SWF file
p = swiffas . SWFParser ()
with open ( 'example.swf' , 'rb' ) as f :
p . parse ( f )
print 'has' , p . properties . frame_count , 'frames'
print 'has' , len ( p . record_headers ), 'records; parsed' , len ( p . tags ), 'of them'
# get each exported AS3 program in the SWF file
as3_exports = filter ( lambda x : isinstance ( x , swftags . DoABC ), p . tags )
# print some information about them
for as3_export in as3_exports :
as3 = swiffas . ABCFile ( as3_export . bytecode )
print as3_export . name , 'has' , as3 . method_count , 'methods'
# print all the strings used in the program
print ' n ' . join ( map ( lambda sinfo : sinfo . value , as3 . constant_pool . strings ))分別在swiffas/swftags.py和swiffas/avm2.py中找到每個解析的SWF和AVM2對象的結構。 _struct列表的每個元素都在避免化期間在對像上實例化(如果其大小不是沒有,則為false或0)。
_struct中的每個元組都是形式(type, name, optional size or existence boolean) 。大小可能是整數,或者參考上一個字段的值。
元組的特殊情況是其類型為bytes的地方,是列表中的最後一個元素, None大小。這代表了一個佔用對像其餘部分的字段,誰的內容是這些字節。
尚無AS3 VM打包(尚未),因此您將在每個方法的身體上手動迭代,並將所有索引鏈接起來。
請參閱swiffas/swftags.py 。缺少標籤在底部列出。
當前的限制只是您無法在字節對像中編碼一個BitFields。 BitObject和Untable Abackable類只需要組合。
請參閱swiffas/avm2ins.py 。
包括規格中的所有內容都包括在內,幾種無證件說明(包括所有FLASCC的說明)。
這張桌子中有一些無證件的,我們不支持,但厭倦了有一些錯誤的條目。
但是,最好與Adobe的ActionScript虛擬機的源代碼刪除交叉檢查(缺點是您必須在大量的cruft中導航才能獲得所需的東西)。
根據MIT許可發布。請參閱LICENSE以獲取完整的許可文本。