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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
GhidraEmu — محاكي كود Pcode أصلي | Kitploit
أدوات/GitHubGitHub/nalen98/ghidraemu
تحليل الشفرة الديناميكي (DAST)الهندسة العكسيةمصممي الأخطاءتحليل الملفات الثنائية
GitHubnalen98/ghidraemu

GhidraEmu

محاكي كود Pcode أصلي

عرض المستودع
305236منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

GhidraEmu



تتيح لك إضافة Ghidra التجريبية هذه التعامل بسهولة مع محاكاة pcode الأصلية. لم تعد هناك حاجة إلى أي سكربتات، فقط استخدمها مباشرة من Ghidra. يمكن أن تكون مفيدة بشكل خاص للعمل مع مجموعة متنوعة من المعالجات الغريبة التي لا تدعمها المحاكيات الشائعة.

إذا كان المعالج/الجهاز الافتراضي مدعومًا من Ghidra للهندسة العكسية، فيمكن محاكاته! على سبيل المثال، تم توضيح محاكاة تعليمات eBPF أدناه:

GhidraEmu

ما الذي يمكنها فعله

في جوهرها، تعد الإضافة غلافًا موسعًا حول الفئات داخل حزمة ghidra.app.emulator. إليك ما تم تنفيذه:

  • تعمل مع جميع البنى التي يدعمها Ghidra، لذا يمكنك إضافة معالجات غريبة ومحاكاتها
  • محاكاة سياق وحدة المعالجة المركزية (CPU)، والمكدس، والكومة
  • تطبيق البايتات المعدّلة عبر واجهة Ghidra الرسومية لتغيير مسار المحاكاة
  • نقاط التوقف للتحكم في عملية المحاكاة
  • عرض البايتات المتغيرة أثناء المحاكاة في ByteViewer
  • ربط (Hooking) بعض دوال libc (على الرغم من أن هذا لا يزال ضعيفًا)

على الرغم من أن محاكاة PCode مثاليًا تعني التوحيد، فإن معظم المعالجات تحتاج إلى نهجها الخاص. لا تتردد في الإبلاغ عن أي مشكلات تواجهها. أرغب حقًا في اختبار جميع المعالجات، لكن ذلك شبه مستحيل.

ما لا يمكنها فعله

  • الدخول إلى دوال المكتبات الخارجية (قيود EmulatorHelper)
  • محاكاة استدعاءات النظام (Syscall)

جميع نوافذ الإضافة في مجموعة واحدة

تنزيل الأداة

GhidraEmu

الميزات

نافذة القائمة

تحتوي على جميع نوافذ الإضافة: عرض المكدس، والسجلات، وعرض نقاط التوقف، والنافذة الرئيسية.

GhidraEmu menu

النافذة المنبثقة

تحتوي على اختصارات لتعيين بداية ونهاية المحاكاة، ونقاط التوقف، وتطبيق البايتات المعدّلة على حالة المحاكي.

عرض السجلات

غيّر السجلات كما تريد. سيساعد تعيين سجل الارتباط (السهم الأخضر) المحاكي على فهم أي سجل يحتوي على عنوان الإرجاع. تعرف الإضافة كيفية عمل ذلك عبر المكدس، وسجل lr، وسجلات AARCH64، وMIPS. إذا كان لديك معالج غريب، فحدد سجل الارتباط واضغط على الزر.

عرض المكدس

عند فتح برنامجك في СodeBrowser، ستقوم GhidraEmu بتعيين مساحة المكدس تلقائيًا. سيتم تعيين مؤشر المكدس في منتصف نطاق المكدس. يتيح لك ذلك تعيين قيم في أعلى أو أسفل إطارات المكدس. مرّرها إذا واجهت تجمّدًا عند التحديث أو إعادة التعيين. أثناء عملية المحاكاة، إذا احتاج البرنامج إلى مساحة أكبر للمكدس، ستقوم الإضافة بتخصيصها تلقائيًا.

عرض نقاط التوقف

عرض الذاكرة العشوائية (RAM)

إذا تغيرت أي بايتات أثناء المحاكاة، فستراها في ByteViewer الكلاسيكي. لا تقلق، سيتم إعادة تعيينها إلى قيمها الأصلية بعد الضغط على زر "Reset".

تطبيق البايتات المعدّلة

إذا قمت بإجراء تغييرات، فأخبر المحاكي بالبايتات المتغيرة (يتم تحديث المكدس تلقائيًا -- لا حاجة لذلك). بعد التغيير، حددها (ستكون خضراء)، واضغط على هذا الخيار (أو استخدم الاختصار "M").

GhidraEmu apply patched bytes

وحدة التحكم

هنا تطبع الإضافة معلومات الإخراج. على سبيل المثال، رسائل خطأ المحاكاة مثل هذه:

GhidraEmu console

ميزة جديدة - Jump Over

تتيح لك ميزة "Jump Over" القفز إلى الأمام تعليمة واحدة إذا كنت لا تريد محاكاة التعليمات الحالية لسبب ما. نظرًا لأنه سيتم إحباط عملية المحاكاة إذا تم اكتشاف محاولة لقراءة ذاكرة غير مهيأة، تتيح لك هذه الميزة تجاوز ذلك. انظر إلى مثال. إليك واحدة من التعليمات الأولى في العديد من برامج x86_64، وهي حفظ حارس المكدس (canary):

MOV RAX, qword ptr FS:[0x28]

سنحاول فقط الغش قليلًا والقفز فوقها عن طريق زيادة قيمة عداد البرنامج (PC). للقيام بذلك، توقف عند التعليمات التي لا تريد محاكاتها واضغط على الاختصار J. وإلا، فإن المتابعة خطوة بخطوة ستؤدي إلى خطأ قراءة ذاكرة غير مهيأة.

Jump Over

ميزة جديدة - Step Over

إذا توقفت عند تعليمة تؤدي إلى روتين فرعي (استدعاء داخلي) وتريد محاكاة كل شيء حتى التعليمات التالية ("تخطي الخطوة" الكلاسيكي)، اضغط على الاختصار F6، وسيحدث ذلك بالتأكيد:

Step Over

قبل أن تبدأ

بعض النقاط المهمة التي يجب مراعاتها:

  • لا تنسَ تحليل برنامجك في Ghidra، فالمحاكي يعتمد على ذلك.
  • كما ذُكر سابقًا، اضبط سجل الارتباط إذا كان لديك معالج/جهاز افتراضي غريب.
  • إذا كان معالج ملفك الثنائي يحتاج إلى مقاطع ذاكرة معينة وفقًا للمواصفات، فلا تنسَ إنشاءها في نافذة MemoryMap الخاصة بـ Ghidra وتهيئتها بالأصفار. خلاف ذلك، سيشكو المحاكي من مساحات الذاكرة غير المعروفة أثناء عمليات القراءة/الكتابة وسيوقف عملية المحاكاة. إذا كانت كتلة الذاكرة موجودة ولكنها غير مهيأة بالأصفار ويحتاجها المحاكي، فستحاول الإضافة تهيئتها حتى تستمر المحاكاة.
  • إذا قمت بتغيير أي بايتات عبر ByteViewer، فلن تستعيدها الإضافة إلى قيمها الأصلية أثناء إعادة تعيين حالة المحاكاة.
  • قبل إغلاق المشروع في Ghidra، يجب عليك الضغط على زر "Reset" وإعادة تعيين حالة آخر محاكاة إذا لم يتم ذلك بعد. هذا مهم لأنه في لحظة الإغلاق، لن يتم تنفيذ معاملات إعادة رسم التعليمات المتتبعة في Listing، وكذلك معاملات استعادة بايتات البرنامج بعد المحاكاة. يمكن أن يؤدي هذا ليس فقط إلى رؤية "الببغاء الأصفر القديم"، وهو أقل المشاكل، ولكن أيضًا إلى بقاء البايتات المعدلة كما هي وعدم عودتها إلى قيمها الأصلية (ما لم يتم التراجع عن المشروع في Ghidra، بالطبع).

التثبيت

  1. استخدم gradle لبناء الإضافة: GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle واستخدم Ghidra لتثبيتها: File → Install Extensions...

  2. في CodeBrowser، انتقل إلى File → Configure → Miscellaneous وحدد مربع الاختيار لإضافة GhidraEmu.

الملاحظات

هل واجهت أي أخطاء أثناء استخدام الإضافة أو لديك أفكار للتحسين؟ لا تتردد في فتح مشكلة جديدة وسأقوم بحلها.

العمل المستقبلي

قيود EmulatorHelper لا تسمح باستخدام مساحة برنامج داخل مساحة أخرى. لذا، على سبيل المثال، لن تعرف مكتبتك المشتركة الخارجية أبدًا مساحة ذاكرة البرنامج والعكس صحيح. لذلك لا يمكنك محاكاتها كعملية واحدة بمساحة ذاكرة واحدة. أخبرني إذا كنت أغفل شيئًا هنا.