ห้องสมุด Python 2 ขนาดเล็กที่มีให้:
ความตั้งใจดั้งเดิมคือการจัดหา transpiler จากรหัส AS3 ที่รวบรวมไปยัง LLVM IR
มีหนึ่งหรือสองในภาษาอื่น ๆ แต่ส่วนใหญ่มี bitrotted หรือพวกเขาไม่สมบูรณ์เกินกว่าจะแยกวิเคราะห์ไฟล์เป้าหมายของฉัน
Serialising Back to SWF ไฟล์ควรค่อนข้างตรงไปตรงมาเพื่อเพิ่ม
pip install swiffas
ลองดู example.py - พิมพ์รายชื่อถอดประกอบสำหรับรหัส ActionScript ทั้งหมดที่พบในแท็ก DOABC
ไม่ว่าในกรณีใดนี่เป็นบทสรุปที่รวดเร็ว:
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 )) โครงสร้างของวัตถุ SWF และ AVM2 ที่แยกวิเคราะห์แต่ละชิ้นสามารถพบได้ใน swiffas/swftags.py และ swiffas/avm2.py ตามลำดับ แต่ละองค์ประกอบของรายการ _struct จะถูกสร้างอินสแตนซ์บนวัตถุระหว่าง deserialisation (ถ้าขนาดของมันไม่ใช่ไม่มีเท็จหรือ 0)
tuple แต่ละตัวใน _struct เป็นของแบบฟอร์ม (type, name, optional size or existence boolean) ขนาดอาจเป็นจำนวนเต็มหรืออ้างถึงค่าของฟิลด์ก่อนหน้า
กรณีพิเศษของ tuple คือที่ประเภทของ bytes เป็นองค์ประกอบสุดท้ายในรายการและ None ขนาด สิ่งนี้แสดงถึงฟิลด์ที่ใช้ส่วนที่เหลือของวัตถุและเนื้อหาของใครคือไบต์
ไม่มีแพ็คเกจ AS3 VM (ยัง) ดังนั้นคุณจะทำซ้ำกับร่างกายของแต่ละวิธีด้วยตนเองและเชื่อมโยงดัชนีทั้งหมดขึ้น
ดู swiffas/swftags.py แท็กที่ขาดหายไปแสดงอยู่ที่ด้านล่าง
ข้อ จำกัด ในปัจจุบันเป็นเพียงการที่คุณไม่สามารถเข้ารหัส bitfields ภายในวัตถุที่จัดตำแหน่งไบต์ คลาส BitoBject และ unpackable เพียงแค่ต้องรวมกัน
ดู swiffas/avm2ins.py
ทั้งหมดจากข้อมูลจำเพาะรวมอยู่ในขณะที่มีคำแนะนำที่ไม่มีเอกสารหลายฉบับ (รวมถึง FLASCC ทั้งหมด)
มีบางอย่างที่ไม่มีเอกสารในตารางนี้ที่เราไม่สนับสนุน แต่เบื่อหน่ายว่า มี บางรายการที่ผิด
อย่างไรก็ตามเป็นการดีกว่าที่จะตรวจสอบด้วยซอร์สโค้ดของ Adobe Drop ของ Actionscript Virtual Machine (ข้อเสียคือคุณต้องนำทางผ่าน Cruft จำนวนมากเพื่อให้ได้สิ่งที่คุณต้องการ)
ปล่อยภายใต้ใบอนุญาต MIT อ้างถึง LICENSE สำหรับข้อความใบอนุญาตที่สมบูรณ์