
pyREtic هو إطار قابل للتوسيع للهندسة العكسية للبايت كود في الذاكرة للغة Python 2.x
ريتش سميث - [email protected]
يمكن العثور على أحدث إصدار من pyREtic على: https://github.com/MyNameIsMeerkat/pyREtic
pyREtic هو إطار عمل قابل للتوسعة للمساعدة في أداء مهام هندسة عكسية متنوعة لمشاريع لغة Python.
يساعد مهندس الهندسة العكسية في استعادة الكود المصدري (.py) من كود البايت (.pyc)، وخاصةً عندما يكون الكود الذي يتم عكسه قد بذل جهدًا في محاولة منع فك التجميع باستخدام أدوات قياسية.
يتكون من 3 أجزاء رئيسية:
REpdb : مجموعة شاملة مركزة على الهندسة العكسية لوظائف pdb لتتيح للمهندس العكسي التفاعل بسهولة مع الكود الذي يعكسه.
OpcodeRemap : المكون القادر على استنتاج جدول أكواد تشغيل جديد من بيئة تشغيل Python قامت بتغيير تخطيط أكواد التشغيل الخاصة بها لإرباك العديد من أدوات فك تجميع Python القياسية.
LiveUnpyc : امتداد لمشروع فك التجميع UnPyc لديمتري كورنيف http://unpyc.sourceforge.net/ والذي يسمح بفك تجميع كائنات Python الحية في الذاكرة إلى كود مصدر Python عبر 3 طرق مختلفة.
تمت كتابة الإمكانيات داخل مجموعة أدوات pyREtic لتكون فعالة ضد وسائل الحماية التي كان يستخدمها معظم مطوري Python مفتوحي المصدر لحماية الكود الذي يوزعونه من القراءة في شكله المصدر.
كان الهدف من إخراج pyREtic هو إنتاج تمثيل للكود المصدري لكائن يمكنك الوصول إليه في نسخة قيد التشغيل من التطبيق المستهدف. كان هذا التمثيل يحتاج فقط ليكون جيدًا بما يكفي لتقييم أمان التطبيق المستهدف بدلاً من أن يكون نسخة مثالية تمامًا.
يمكن العثور على مستند تفصيلي حول كيفية الاستخدام في دليل docs/.
يتم إصدار pyREtic بموجب ترخيص GPLv3 والذي يمكن العثور عليه في دليل docs/ أو GPLv3.
المكونات الأخرى التي يستخدمها pyREtic يتم إصدارها بموجب تراخيصها الخاصة:
UnPyc http://unpyc.sourceforge.net/ : ترخيص BSD
pycallgraph http://pycallgraph.slowchop.com/: GPLv2
بدأت حياة pyREtic عندما كنت أعمل في شركة Immunity Inc، وتم تقديمه للجمهور لأول مرة في مؤتمر BlackHat 2010 في لاس فيغاس، ثم في Defcon 17. يمكن العثور على ورقة بحثية رافقت إصداره في دليل docs/.
لم أعد موظفًا الآن في Immunity لكن ديف آيتل كان كريمًا بما يكفي للسماح لي بإصدار الكود تحت ترخيص GPL للسماح للناس بالوصول إليه والسماح بتطويره بالاستمرار.
يمكن العثور على أحدث إصدار من الإطار في https://github.com/MyNameIsMeerkat/pyREtic.
لقد نقلت المشروع مؤخرًا إلى منزل جديد على GitHub بسبب الاهتمام المتجدد من بعض أعضاء المجتمع، وسأقوم بإصدار بعض التحسينات التي لم تر النور حتى الآن.
ستعكس الميزات التي ستتم إضافتها إلى pyREtic في المستقبل تطور احتياجاتي للتعامل مع عكس تطبيقات Python مستقبلاً. إذا كانت لديك اقتراحات، فأخبرني.
للمهتمين بالتفاصيل التقنية حول كيفية عمل pyREtic، يمكن العثور عليها في الورقة البحثية pyREtic: In memory reverse engineering for obfuscated Python bytecode الموجودة في دليل docs/، وعرض تقديمي يناقشها يمكن العثور عليه على:
http://prezi.com/kmyvgiobsl1d/pyretic-rich-smith-blackhatdefcon-2010