
إضافة IDA Python للمطابقة السريعة المدفوعة بالموقع لرموز المكتبات مفتوحة المصدر في الملفات الثنائية، مما يتيح إجراء هندسة عكسية فعالة وتحليل الثغرات لبرامج الثنائيات والبرامج الضارة الكبيرة.
/$$ /$$ /$$
| $$ /$$/ | $$
| $$ /$$/ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$
| $$$$$/ |____ $$ /$$__ $$|_ $$_/ |____ $$
| $$ $$ /$$$$$$$| $$ \__/ | $$ /$$$$$$$
| $$\ $$ /$$__ $$| $$ | $$ /$$ /$$__ $$
| $$ \ $$| $$$$$$$| $$ | $$$$/| $$$$$$$
|__/ \__/ \_______/|__/ \___/ \_______/
"Karta" (وتعني "خريطة" بالروسية) هي إضافة IDA Python تقوم بتحديد ومطابقة المكتبات مفتوحة المصدر في ملف ثنائي معين. تستخدم الإضافة تقنية فريدة تمكنها من دعم الملفات الثنائية الضخمة (أكثر من 200,000 دالة) مع تأثير ضئيل تقريبًا على الأداء العام.
تعتمد خوارزمية المطابقة على الموقع. هذا يعني أن تركيزها الرئيسي هو تحديد الملفات المترجمة المختلفة، ومطابقة دوال كل ملف بناءً على ترتيبها الأصلي داخل الملف. بهذه الطريقة، تعتمد المطابقة على K (عدد الدوال في المصدر المفتوح) بدلاً من N (حجم الملف الثنائي)، مما يحقق تحسنًا كبيرًا في الأداء حيث أن N >> K عادةً.
نعتقد أن هناك 3 حالات استخدام رئيسية لهذه الإضافة IDA:
للإصدارات الأحدث، باستخدام Python 3، ما عليك سوى استنساخ المستودع وتشغيل السكريبت setup.py install.
Python 3 مدعومة منذ الإصدارات v2.0.0 وما فوق.
اعتبارًا من إصدار IDA 7.4، يتم تطوير Karta بنشاط فقط لـ IDA 7.4 أو الأحدث، و Python 3. لا يزال Python 2 وإصدارات IDA الأقدم مدعومة باستخدام الإصدار v1.2.0، والذي من المرجح أن يكون آخر إصدار مدعوم بسبب نهاية عمر Python 2.X.
محدد Karta هو إضافة أصغر تحدد وجود المصادر المفتوحة (المدعومة) الموجودة داخل الملف الثنائي، وتستخرج بصمات إصداراتها. لا حاجة بعد الآن لهندسة عكسية لنفس المكتبة مفتوحة المصدر مرارًا وتكرارًا، فقط قم بتشغيل إضافة المحدد واحصل على قائمة مفصلة بالمصادر المفتوحة المستخدمة. يدعم Karta حاليًا أكثر من 10 مكتبات مفتوحة المصدر، بما في ذلك:
بعد تحديد المصادر المفتوحة المستخدمة، يمكنك تجميع ملف تكوين .JSON لمكتبة معينة (مثل libpng الإصدار 1.2.29). بمجرد التجميع، سيحاول Karta تلقائيًا مطابقة الدوال (الرموز) للمصدر المفتوح في الملف الثنائي المحمل. بالإضافة إلى ذلك، في حال استخدام المصدر المفتوح الخاص بك لدوال خارجية (memcpy, fread, أو zlib_inflate)، سيحاول Karta أيضًا مطابقة تلك الدوال الخارجية.
تم تطوير هذا المشروع بواسطتي (انظر تفاصيل الاتصال أدناه) بمساعدة ودعم من مجموعة البحث الخاصة بي في تشيك بوينت (Check Point Research).
تم تطوير وصيانة هذا المستودع بواسطتي، إيال إتكين (Eyal Itkin)، خلال سنوات عملي في تشيك بوينت ريسيرش. للأسف، مع مغادرتي لمجموعة البحث، لن أتمكن بعد الآن من صيانة هذا المستودع. هذا بشكل رئيسي بسبب القائمة الطويلة من المتطلبات لتشغيل جميع اختبارات الانحدار، وإصدارات IDA Pro المتضمنة في العملية.
أرجو قبول اعتذاري الصادق.