تحليل ثنائيات MIPS:هل توجد مكتبة بايثون لتحليل البيانات الثنائية؟
سؤال
أنا أعمل على أداة مساعدة تحتاج إلى حل العناوين السداسية لاسم وظيفة رمزية ورقم سطر الكود المصدري ضمن ملف ثنائي.سيتم تشغيل الأداة المساعدة على Linux على x86، على الرغم من أن الثنائيات التي تحللها ستكون لنظام مضمن يعتمد على MIPS.تكون ثنائيات MIPS بتنسيق ELF، باستخدام DWARF لمعلومات التصحيح الرمزية.
أخطط حاليًا لشوكة objdump، وتمرير قائمة بالعناوين السداسية وتحليل المخرجات للحصول على أسماء الوظائف وأرقام الأسطر المصدر.لقد قمت بتجميع objdump مع دعم ثنائيات MIPS، وهو يعمل.
أفضل أن يكون لدي حزمة تسمح لي بالبحث عن الأشياء محليًا من كود بايثون دون إجراء عملية أخرى.لا يمكنني العثور على أي ذكر لـ libdwarf أو libelf أو libbfd على python.org، ولا أي ذكر لـ python على dwarfstd.org.
هل هناك وحدة مناسبة متاحة في مكان ما؟
المحلول
يرجى المراجعة com.pyelfttools - مكتبة بايثون نقية جديدة تهدف إلى القيام بذلك.
نصائح أخرى
قد تكون مهتمًا بمكتبة DWARF من com.pydevtools:
>>> from bintools.dwarf import DWARF
>>> dwarf = DWARF('test/test')
>>> dwarf.get_loc_by_addr(0x8048475)
('/home/emilmont/Workspace/dbg/test/main.c', 36, 0)
لا أعرف أيًا منها، لكن إذا فشلت كل الطرق الأخرى، يمكنك استخدامها com.ctypes لاستخدام libdwarf أو libelf أو libbfd مباشرة.
لقد قمت بتطوير محلل DWARF باستخدام بناء.حاليا الخام إلى حد ما، والتحليل بطيء.لكنني اعتقدت أنني يجب أن أخبرك على الأقل.قد يناسب احتياجاتك، مع القليل من العمل.
لقد حصلت على الكود في Mercurial، مستضافًا في bitbucket:
- http://bitbucket.org/cmcqueen1975/pythondwarf/
- http://bitbucket.org/cmcqueen1975/construct/ (التعديلات اللازمة لبناء المكتبة)
بناء هي مكتبة مثيرة جدا للاهتمام.DWARF هو تنسيق معقد (كما أكتشف) ويدفع Construct إلى أقصى حدوده على ما أعتقد.
hachior هي مكتبة أخرى لتحليل البيانات الثنائية