Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CodeCut — مكوّن إضافي لـ Ghidra لتحديد حدود ملفات الكائنات. | Kitploit
أدوات/GitHubGitHub/jhuapl/codecut
التحليل الثابتالهندسة العكسيةتحليل الملفات الثنائيةتعلم الآلة
GitHubjhuapl/codecut

CodeCut

مكوّن إضافي لـ Ghidra لتحديد حدود ملفات الكائنات.

عرض المستودع
13123منذ 7 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

إضافة CodeCut لـ Ghidra

مكوّن Ghidra الإضافي لواجهة DeepCut / CodeCut الرسومية

نظرية التشغيل

تتيح CodeCut للمستخدم تعيين الدوال إلى ملفات كائن داخل Ghidra، ثم التعامل مع الملف الثنائي على مستوى ملف الكائن. تُعيَّن الدوال إلى ملفات الكائن عبر تعيين الحقل Namespace في قاعدة بيانات Ghidra. تحاول DeepCut تحديد الحدود الأولية لملفات الكائن، ويمكن للمستخدم بعد ذلك تعديلها باستخدام نافذة جدول CodeCut.

لماذا هذا مفيد؟

تنشأ معظم الملفات الثنائية من ملفات مصدرية متعددة. عند القيام بالهندسة العكسية، غالبًا ما يطوّر محللو RE إحساسًا بالدوال المترابطة، والتي يُرجَّح أنها تنتمي إلى نفس الملف المصدر. تتيح CodeCut للمحلل تطوير فرضية مثل «أعتقد أن هذه المجموعة من الدوال هي دوال نظام تشغيل». الآن إذا وُجدت دوال غير مستكشفة في تلك المنطقة، فستظهر في التفكيك وفك الترجمة كـ OS::FUN_XXXXXXXX بدلاً من FUN_XXXXXXXX فقط. وهذا يؤدي إلى فهم أسرع لما قد تُستخدم من أجله الدوال عند عرضها في السياق.

تثبيت المكوّن الإضافي

اتبع إجراءات تثبيت إضافات Ghidra المعتادة. انسخ ملفات zip الخاصة بإضافتي CodeCut وDeepCut إلى $GHIDRA_INSTALL_DIR/Extensions ثم في النافذة الرئيسية لـ Ghidra اختر File -> Install Extensions وحدد مربعي CodeCut وDeepCut. سيخبرك Ghidra أنه يحتاج إلى إعادة التشغيل. وبما أن Ghidra يتطلب الآن أن تتوافق المكونات الإضافية مع الإصدار الرئيسي/الفرعي الأساسي فقط وليس إصدارات التصحيح، فإننا نتوقع إصدار إصدارات رئيسية/فرعية زوجية فقط.

ملاحظة: بعد إعادة التشغيل وتحميل نافذة CodeBrowser، سيخبرك Ghidra أنه عثر على مكونات إضافية جديدة ويسألك عما إذا كنت تريد تهيئتها. تظهر CodeCut فقط في هذه النافذة. وذلك لأن DeepCut محلل «أحادي التشغيل» (one-shot) (وهو ما يزال مثبتًا).

إعداد مسارات Python الأصلية وتبعيات Python

تعتمد كلٌّ من CodeCut وDeepCut على إضافة PyGhidra الأصلية، وهي غير متوافقة مع Jython. تستخدم CodeCut Python الأصلية لتخمين أسماء الوحدات، بينما يعمل استنتاج النموذج في DeepCut عبر Python الأصلية.

تبعيات Python الأصلية

CodeCut:

  • nltk

DeepCut:

  • torch
  • torch-geometric
  • networkx
  • scipy

لتثبيت التبعيات، شغّل:

root@kitploit:~
pip install nltk
pip install torch torch-geometric networkx scipy

باستخدام تثبيت Python المرتبط بـ PyGhidra لديك.

تشغيل تحليل DeepCut

من الأفضل تشغيل DeepCut كمحلل أحادي التشغيل (one-shot) بعد التحليل التلقائي الأولي. اختر Analysis -> One Shot -> Deepcut. بعد تشغيل DeepCut، يمكنك عرض النتائج بالنظر إلى حقل Namespace في عرض Symbol Table.

استخدام CodeCut

بعد تشغيل DeepCut، يمكنك التفاعل على مستوى ملف الكائن من خلال عرض CodeCut Table. اختر Window -> CodeCut Table لعرض الجدول. جدول CodeCut هو في الأساس مجموعة مدمجة من جداول الرموز، جدول لكل وحدة.

يمكنك جعل CodeCut تخمّن أسماء الوحدات (استنادًا إلى مراجع السلاسل النصية) باختيار Analysis -> Guess Module Names في نافذة جدول CodeCut. يكون هذا مفيدًا إذا كان الملف التنفيذي الهدف يحتوي على الكثير من سلاسل التصحيح. يحاول سكربت تخمين الأسماء العثور على أسماء الملفات المصدرية أولاً، ثم يلجأ إلى السلاسل النصية (بما في ذلك الثنائيات والثلاثيات) المكررة عدة مرات.

يمكنك تقسيم/دمج ملفات الكائن بالنقر بزر الماوس الأيمن على كائن واختيار Split Namespace Here / Combine Namespaces. يمكنك نقل الدوال بين ملفات الكائن (بتغيير حدود ملفات الكائن) عن طريق السحب والإفلات.

التصدير إلى لغة C قابلة لإعادة الترجمة

تحتوي CodeCut على خيارين لتصدير وحدة كاملة أو نطاق فرعي من وحدة كرمز C قابل لإعادة الترجمة من خلال قائمة Export عند النقر بزر الماوس الأيمن على وحدة في جدول CodeCut. هذه الميزة مُعلَّمة بأنها تجريبية (EXPERIMENTAL) وغير مختبرة بشكل جيد.

مخطط CodeCut

تتضمن CodeCut الآن خيارًا رسوميًا لعرض التفاعلات / التسلسل الهرمي للوحدات داخل الملف الثنائي. أضف مساحات الأسماء إلى عرض المخطط بالنقر بزر الماوس الأيمن على دالة في جدول CodeCut واختيار Add Namespace to Graph. يمكنك إزالة الوحدات من المخطط بالنقر بزر الماوس الأيمن واختيار Show Namespaces in Graph Filter.

القيود

انتبه إلى أين تنقر

في حين يبدو أنه يمكنك النقر بزر الماوس الأيمن على أسماء الوحدات في الجانب الأيمن، فإن CodeCut في الواقع تراقب الدالة المحددة في الجدول. لذا، على سبيل المثال، إذا كانت لديك دالة في object3 محددة وقمت بالنقر بزر الماوس الأيمن على المربع الرمادي object2 على اليسار ثم نقرت على Combine/Split أو Rename Namespaces، فستنفذ CodeCut العملية انطلاقًا من الدالة المحددة في object3.

خصوصيات نطاقات العناوين

تحاول CodeCut ترتيب مساحات الأسماء حسب عنوان بدايتها. قد يبدو أن CodeCut تسرد الوحدات خارج الترتيب، لكن هذا يعود عادةً إلى عدم انتظام التفكيك في Ghidra. على سبيل المثال، لنفترض أن لدينا خريطة ذاكرة تبدو كالتالي:

root@kitploit:~
object2:  0x00010000 - 0x00018000
object3:  0x00018004 - 0x00020000
...
object50: 0x00480000 - 0x00480a00

لنفترض أن الدالة عند العنوان 0x00480000 تقوم بفرع أو قفزة إلى عنوان 0x00016008. من المفترض أن تكون هذه نقطة دخول جديدة لدالة، لكن إذا كانت دالة واحدة فقط تستخدمها، فقد لا يصنفها Ghidra كنقطة دخول لدالة، ويعتبرها مجرد جزء من FUN_00480000. وهذا يعني أن النطاق الفعلي لـ object50 هو 0x00016008 - 0x00480a00. وبالتالي ستظهر object50 بين object2 وobject3 في الجدول. تُخرج CodeCut نطاقات الوحدات إلى سجل تطبيق Ghidra للمساعدة في تصحيح هذا الأمر. في هذه الحالة، سيؤدي تعريف 0x00016008 كدالة إلى جعل حدود object50 صحيحة وستظهر object50 في المكان الصحيح في الجدول.

تعريف الدوال لاحقًا

تُضاف الدوال التي يتم تعريفها بعد تشغيل تحليل DeepCut افتراضيًا إلى مساحة الاسم Global. في المستقبل، نخطط لإضافة ميزة تضيفها تلقائيًا إلى أقرب مساحة اسم، أو توفير آلية لتسهيل إسناد الدوال المفردة مباشرةً إلى مساحة اسم محددة.

البناء

توجد تعليمات بناء محددة في المجلدات الفرعية DeepCut وCodeCut.

تنزيل الأداة