مكتبة Python 2 صغيرة توفر:
كانت النية الأصلية هي توفير جهاز نقل من رمز AS3 المترجمة إلى LLVM IR.
هناك لغة أو لغتين آخرتين ، ولكن معظمهم قد تم وضعهم في اللغات ، أو أنها كانت غير مكتملة للغاية لتحليل ملفاتي المستهدفة.
يجب أن يكون التسلسل مرة أخرى إلى ملفات 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 على الكائن أثناء التخلص من الحجم (إذا لم يكن حجمه لا شيء أو خطأ أو 0).
كل tuple في _struct هو من النموذج (type, name, optional size or existence boolean) . قد يكون الحجم عددًا صحيحًا ، أو يشير إلى قيمة الحقل السابق.
حالة خاصة من tuple هي المكان الذي يكون فيه bytes ، هو العنصر الأخير في القائمة None له حجم. يمثل هذا حقلًا يأخذ بقية الكائن ، ومن هو المحتويات هي تلك البايتات.
لا يوجد AS3 VM المعبأة (حتى الآن) ، لذلك ستتكرر يدويًا على جسم كل طريقة ، وربط جميع الفهارس.
انظر swiffas/swftags.py . يتم سرد العلامات المفقودة في الأسفل.
القيد الحالي هو أنه لا يمكنك تشفير حقول bitfields داخل كائن محاذاة بايت. يجب الجمع بين الفئات BitObject و Dispackable.
انظر swiffas/avm2ins.py .
يتم تضمين جميع تلك من المواصفات ، وكذلك العديد من التعليمات غير الموثقة (بما في ذلك جميع التعليمية FLASCC).
هناك عدد قليل من تلك غير الموثقة في هذا الجدول التي لا ندعمها ، ولكن كن مرهقًا لأن بعض الإدخالات هناك خطأ.
ومع ذلك ، فمن الأفضل أن تتحقق من انخفاض رمز المصدر الخاص بـ Adobe في جهاز ActionScript Virtual (الجانب السلبي الذي يتعين عليك التنقل عبر الكثير من Cruft للحصول على ما تريد).
صدر تحت رخصة معهد ماساتشوستس للتكنولوجيا. ارجع إلى LICENSE نص الترخيص الكامل.