
Collare هي أداة للهندسة العكسية التعاونية التي تهدف إلى السماح للفرق التي تحتاج إلى استخدام المزيد من أداة واحدة خلال مشروع للتعاون دون الحاجة إلى مشاركة الملفات في موقع منفصل. كما أنه يحتوي على إدارة مستخدم بسيطة للغاية ، وبالتالي يمكن استخدامها لخادم متعدد المشروع حيث تعمل فرق مختلفة في مشاريع مختلفة. إن الواجهة الخلفية للأداة عبارة عن Flask app بسيط مع nginx أمامه يعمل في Docker والذي يعمل مع الملفات والبيانات المستندة إلى JSON التي تحتوي على البيانات ذات الصلة. الواجهة الأمامية هي أداة واجهة المستخدم الرسومية المستندة إلى PYQT مع واجهة بسيطة تتيح إدارة المشاريع والعمل مع الملفات الثنائية وقواعد بيانات الهندسة العكسية المقابلة لها. اعتبارًا من الآن ، تدعم الأداة Binary Ninja ، Cutter (Rizin) ، Ghidra ، Hopper Dissassembler ، IDA ، JEB و Android Studio (Decompiled by JADX) . يتم استخلاص التنفيذ من الأعمال الداخلية لهذه الأدوات قدر الإمكان لتجنب المشكلات المتعلقة بأي تغييرات في واجهة برمجة التطبيقات ، وبالتالي لا يتكامل مباشرة في هذه الأدوات في شكل مكون إضافي (باستثناء المكونات الإضافية لترحيل البيانات الموضحة أدناه). يعتمد العمل بحتة على إدارة الملفات التي تنتجها هذه الأدوات (تعتمد حرفيًا على امتدادات الملفات المعروفة) وعمليات check-in check-out طراز SVN البسيط.
احصل على أحدث إصدار ثنائي من هذا المستودع أو استنساخ REPO وقم بتشغيل sudo python3 setup.py install على Linux أو استخدم سطر الأوامر على Windows وقم بتشغيل python3 setup.py install . على Linux ، سيتم تثبيت الأداة على PATH وستتمكن من تشغيلها ببساطة باستخدام collare Command. على Windows ، سيضع هذا الملف في C:Users<USERNAME>AppDataLocalProgramsPython<PYTHON_VERSION>Scriptscollare.exe (اعتمادًا على كيفية تثبيت Python).
بالنسبة لاتحاد سطح المكتب المستند إلى جنوم ، يمكنك استخدام ملف سطح المكتب التالي (قد تختلف مسارات الملفات بناءً على إصدار من Collare و Python):
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=CollaRE
Exec=/usr/local/bin/collare
Icon=/usr/local/lib/python3.8/dist-packages/collare-1.2-py3.8.egg/collare/icons/collare.png
Terminal=false
لتمكين دعم Cutter إضافة Cutter ملف إلى مسارك (عند فتح cmd / terminal Critter Cutter يجب بدء التطبيق). عند حفظ مشاريع Cutter (Rizin) ، عليك إلحاقها يدويًا .rzdb . لا تقم بإزالة الامتداد الذي يحتوي عليه الملف بالفعل ( exe أو so على سبيل المثال).
لتمكين دعم Ninja الثنائي إضافة ملف binaryninja إلى مسارك (عند فتح cmd / terminal Writing binaryninja يجب أن تبدأ التطبيق). تقوم Binary Ninja بإزالة امتدادات الملفات افتراضيًا ، ومع ذلك فإن الأداة تُحسب لذلك ، لذلك ليست هناك حاجة لإعادة ملحق الملف الأصلي يدويًا. إن حفظ المشاريع كما هو في المسار الافتراضي يكفي لتكون قادرًا على دفع قاعدة بيانات bndb المحلية بنجاح.
لتمكين دعم Disassembler Hopper ، قم بإضافة ملف Hopper إلى مسارك (عند فتح cmd / terminal Writing Hopper يجب أن تبدأ التطبيق). يقوم Hopper بإزالة ملحقات الملف بشكل افتراضي ، ومع ذلك فإن الأداة تُحسب هذا ، لذا لا توجد حاجة لإعادة ملحق الملف الأصلي يدويًا. يكفي إنقاذ المشاريع ببساطة مع Ctrl+S لتكون قادرًا على دفع قاعدة بيانات hop المحلية بنجاح.
لتمكين دعم JEB إضافة ملف jeb إلى مسارك (عند فتح cmd / terminal Writing jeb يجب أن تبدأ التطبيق). يمكن القيام بذلك عن طريق إعادة تسمية ملف البرنامج النصي العداء الافتراضي لنظام التشغيل الخاص بك إلى jeb (لنظام التشغيل Windows سيكون هذا بالفعل jeb.bat ).
لتمكين دعم أداة IDA إضافة ملفات ida64 و ida إلى مسارك (عند فتح cmd / terminal Writing ida64 / ida يجب أن تبدأ التطبيق).
لتمكين دعم هذه الأداة ، إضافة ملف ghidraRun analyzeHeadless ( .bat لنظام التشغيل Windows) إلى مسارك (عند فتح cmd / terminal كتابة ghidraRun يجب أن تبدأ التطبيق). لاحظ أن analyzeHeadless في مجلد support في دليل جذر Ghidra ، لذا تأكد من ضبط PATH لاستيعاب كلا الملف. إن عملية تهيئة قاعدة البيانات مع Ghidra أكثر تعقيدًا بعض الشيء حيث لا توجد طريقة تعالج Ghidra ملفًا دون إنشاء مشروع. حتى تكون قادرًا على دفع قاعدة بيانات Ghidra (يشار إليها باسم ghdb ) ، ستتم مطالبتك بإنشاء مشروع يدويًا عند فشل المعالجة التلقائية (بشكل أساسي عندما لا يكون الملف الذي لا يتم معالجته قزمًا/PE) ثم حدد المسار إلى ملف gpr (آسف لذلك).
نظرًا لأن ملفات APK و JAR غالبًا ما تتم مواجهة خلال جهود الهندسة العكسية ، فإن أداة Collare تدعم أيضًا العمل مع هذه الأنواع من الملفات. لتمكين الدعم لهذه الأدوات ، من الضروري التأكد من أن الملفات التي تعمل android-studio و jadx في المسار (عندما تفتح cmd / terminal Writing android-studio / jadx يجب أن تبدأ التطبيق). يتم استخدام أداة JADX لتنفيذ إزالة ملف JAR/APK ويتم استخدام استوديو Android لفتح الملفات الناتجة. لاحظ أن استخدام Android Studio اختياري حيث يمكنك الاسم المستعار أي أداة أخرى تعالج مشاريع Gradle تحت قيادة android-studio (مثل Idea Intellij).
بعد نشر جانب الخادم كما هو مذكور في ملف README الخاص به ، من الضروري توزيع ملف الشهادة المستخدمة على جميع مستخدمي التطبيق بالإضافة إلى استخدام حساب admin الافتراضي مع كلمة مرور admin لإنشاء حسابات مستخدمين أخرى (لا تنس تغيير كلمة مرور مستخدم admin ) عبر علامة تبويب Admin . عندما يتم تكوين المستخدمين ، يمكن لأي شخص إنشاء مشاريعهم الخاصة والبدء في العمل مع الأداة نفسها.
لإنشاء مستخدم للمشروع ، يتعين على المستخدم أولاً المصادقة على الخادم البعيد عن طريق إدخال عنوان URL وبيانات الاعتماد وتوفير شهادة للتحقق من هوية الخادم. بعد ذلك ، ستتغير الحالة إلى Connected ومن الممكن تحديد أو حذف المشاريع الحالية أو إنشاء مشروع جديد عن طريق إدخال الاسم ببساطة (الأحرف الأبجدية الرقمية و _ فقط) واختيار المستخدمين الذين سيشاركون في المشروع (يمكن تغييره لاحقًا في علامة التبويب Admin ). لاحظ أنه يتم إضافة المستخدم الذي يقوم بإنشاء المشروع تلقائيًا إلى قائمة المستخدمين حتى لا تضطر إلى اختيار نفسك.

بمجرد أن تكون في علامة التبويب Project View ، يمكنك إنشاء مجلدات جديدة (أحرف أبجدية رقمية و _ فقط ، آسف) واستخدام السحب وإسقاط الملفات (أو المجلدات).

نظرًا لأن الأداة لا تحتوي حاليًا على أي مكونات إضافية أو خطافات أصلية من شأنها أن تسمح بتحميلات تلقائية عند حفظ المشروع ، فمن المطلوب أن يتم تشغيل دفع ملف DB المحلي يدويًا بعد إنشاء قواعد البيانات المطلوبة. يمكن القيام بذلك عن طريق النقر بزر الماوس الأيمن على الملف الثنائي الذي تم تحميله واختيار الأداة التي تريد معالجتها الثنائية. يمكنك إجراء التحليل الأساسي ولكن يوصى بشدة بحفظ الملف دون تغيير أي شيء (بصرف النظر عن إلحاق rzdb في القاطع وعملية مختلفة تمامًا مع Ghidra). لا تغير المسار واسم الملف . بعد القيام بذلك وإغلاق Disassembler ، يمكنك فقط النقر بزر الماوس الأيمن على الاسم الثنائي وتحديد Option Push Local DBs . سيؤدي ذلك إلى تحميل قاعدة البيانات المحلية ومن الآن فصاعدًا عندما تريد العمل مع ملف DB الذي تحتاجه لإجراء Check-out . لاحظ أنه يمكن معالجة كل ثنائي في جميع الأدوات بشكل منفصل ولكن يمكن وجود ملف DB واحد فقط لكل ثنائي وأداة.

عندما ترغب فقط في فحص الملف ، يمكنك النقر بزر الماوس الأيمن فوق ملف DB المطلوب وتحديد خيار Open File (أو فقط انقر نقرًا مزدوجًا). إذا تم التحقق من الملف إليك ، فستفتح هذا الملف المحلي ويمكنك تنفيذ أي تغييرات على ملف DB بحرية. عند الانتهاء (أو عندما تريد ببساطة الضغط على التغييرات) ، يمكنك تحديد خيار Check-in . سيؤدي ذلك إلى تحميل التغييرات على الخادم ومطالبة بك ما إذا كنت تريد الاحتفاظ بالملف الذي تم فحصه لمزيد من التغييرات. إذا كنت ترغب في تجاهل التغييرات المحلية الخاصة بك ، فحدد خيار Undo Check-out من قائمة السياق. سيؤدي هذا إلى تجاهل التغييرات الخاصة بك ويسمح لك بالمتابعة مع الملف من الخادم. سيتم فتح ملف دون القيام بعملية Check-out أولاً أولاً في وضع قارئ مزيف فقط (يمكنك إجراء تغييرات على ملف DB ولكن سيتم فقدها في المرة القادمة التي تقوم فيها بتسجيل المغادرة أو فتح الملف).

تدعم الأداة أيضًا إصدار ملفات DB بطريقة تعتبرها كل إجراء Check-in كإصدار جديد من ملف DB. سيُطلب منك إدراج تعليق للإصدار الذي يتم استخدامه لإعطاء المزيد من السياق للتغييرات التي يتم تطبيقها في هذا الإصدار. من الممكن بعد ذلك فتح أو تسجيل المغادرة من الإصدارات السابقة من الملفات والعمل عليها.

يحتوي مجلد الإضافات داخل هذا المستودع على مكونات إضافية للأدوات المدعومة والتي تتيح لك مشاركة التعليقات وأسماء الوظائف بين الأدوات في حالة عملك على ثنائي مع أدوات متعددة. اتبع تعليمات تثبيت المكون الإضافي القياسي للأداة التي تهتم بها. يقدم كل مكون إضافي وظيفة Import Export عندما تخطط لمشاركة البيانات بين الأدوات ، تأكد دائمًا من Import البيانات أولاً لتجنب إعادة تسمية وظائف التي تم إعادة تسميتها بالفعل من قبل شخص آخر. إذا جاء المكون الإضافي مع بعض المصيد ، فسيتم ذكرها في ملف ReadMe للمكون الإضافي المحدد. لاحظ أن المكونات الإضافية تهدف إلى ترحيل البيانات إلى أداة أخرى بدلاً من التعاون المتزامن من العديد من الأشخاص.
