
بيئة تصحيح أخطاء نواة لينكس مؤتمتة بالكامل باستخدام Docker لأنظمة لينكس و MacOS
LIKE-DBG (LInux-KErnel-DeBuGger) هو مختبر مُحاط بالحاويات بالكامل لتصحيح أخطاء نواة لينكس واستغلال ثغراتها. يقوم ببناء نواة ونظام ملفات جذري أو تبنّيهما، ثم يُقلعهما تحت QEMU، ويضعك داخل جلسة GDB تفاعلية (pwndbg أو GEF)، مع ربط كل جزء في نافذة tmux واحدة.
الهدف هو إزالة الإعداد الممل حتى يذهب وقتك إلى النواة، لا إلى البنية التحتية. كل خطوة تعمل داخل Docker، لذا فإن الأشياء الوحيدة التي تثبّتها على المضيف هي Docker وtmux وPython وuv. اختر إصدار نواة (أو سلّمه تحدّي CTF)، ونفّذ أمرًا واحدًا، وستصل إلى start_kernel مع رموز كاملة.
أمر واحد يحلّ إعداداتك، ويبني نواة ونظام ملفات جذري أو يعيد استخدامهما، ويُقلع الضيف، ويُرفق المُصحّح:
uv run ./start_kgdb
الحلقة هي حلقة تبقى داخلها: ابنِ أو تبنَّ نواة وrootfs، وأقلعها تحت QEMU (الـ Debuggee)، وأرفق GDB (الـ Debugger)، ثم حرّر، وسلّم، وشغّل، وأحدث انهيارًا، وحدّد السبب الجذري، وكرّر.
هناك طريقتان للحصول على نواة:
bzImage/Image الخاص بتحدٍّ ما (بالإضافة إلى vmlinux
وinitramfs إن كانت لديك) وسيقلعها كما هي حرفيًا تحت GDB. راجع
docs/ctf-foreign-kernel.md.exploit-dev، hardened، kasan،
ubsan، lockdep، وغيرها) تُحل إلى أجزاء إعداد النواة وإعدادات وقت التشغيل الافتراضية.
يلتقط التحقق من .config بعد البناء ملف تعريف لم يُطبَّق. لاحظ أن exploit-dev
(الافتراضي) يوقف KASLR فقط؛ تبقى SMEP وSMAP وKPTI مفعّلة ما لم تبدّل ملفات التعريف أو
تبدّلها بنفسك (راجع docs/configuration.md).current، التنقل بين المهام والوحدات، البحث عن الرموز)؛ وGEF يُفعَّل بسطر واحد.--run و--upload استغلالًا إلى الضيف الحي عبر
مشاركة 9p أو SSH. يُترجم ملف .c واحد بلا أعلام تلقائيًا ترجمة ساكنة بـ musl إلى معمارية الهدف؛
وأي شيء آخر يُسلَّم كما هو. راجع exploit/README.md.--insmod و--rmmod؛ وتُحمَّل رموزها تلقائيًا في GDB. راجع
modules/README.md.--analyze-crash
توليد تقرير دون اتصال.--run/--insmod دائمًا في الضيف الذي كتبت الأوامر من لوحته.artifacts/runs/<id>/ بختم زمني يتضمن الإعدادات المحلولة،
وملف تعريف المضيف، وسجلات الأوامر، والسجلات، ونصوص اللوحات.شغّله كمستخدم غير جذري في مجموعة docker. تتم الترجمة المتقاطعة وأعمال initramfs داخل
الحاويات (سلسلة أدوات musl من zig cc)، لذا لا حاجة لسلسلة أدوات متقاطعة على المضيف.
# 1. Install dependencies
uv sync
# 2. Start the project tmux server (loads the shipped .tmux.conf)
tmux -L likedbg -f .tmux.conf new -s LIKE-DBG
# 3. Inside that tmux session: build-or-reuse a kernel, boot it, attach the debugger
uv run ./start_kgdb
أول تشغيل يبني صور الحاوية ونواة، لذا يستغرق بعض الوقت؛ أما التشغيلات اللاحقة فتعيد استخدام الذاكرة المؤقتة وتبدأ في ثوانٍ.
كل إقلاع يعيد تسمية جلسته وفقًا لما يقوم بتصحيحه (LIKE-DBG-pawnyable-lk01،
LIKE-DBG-6_6_30-exploit-dev)، لذا فإن الجلسة التي تركتها قيد التشغيل لا تعيق التالية أبدًا ويمكن
تصحيح تحدّيين جنبًا إلى جنب. افصل بـ C-b d؛ يُظهر tmux -L likedbg ls ما هو
قيد التشغيل، و= أدناه هو صيغة المطابقة التامة في tmux (بدونها، قد تفوز جلسة -2):
tmux -L likedbg attach -t =LIKE-DBG-6_6_30-exploit-dev
من هنا، اقرأ docs/build-your-own-kernel.md للاطلاع على سير العمل الكامل، أو docs/ctf-foreign-kernel.md إذا كانت لديك تحدٍّ يحتاج إلى تصحيح. للحصول على جولة تطبيقية على الحلقة الكاملة مقابل برنامج تشغيل ضعيف مضمّن، اتبع جولة LK01.
| المستند | يغطي |
|---|---|
| docs/walkthrough-lk01.md | ابدأ من هنا: مثال موجّه من البداية إلى النهاية مقابل برنامج تشغيل ضعيف مضمّن، من البناء إلى use-after-free إلى تقرير الانهيار. |
| docs/build-your-own-kernel.md | ابنِ نواة من المصدر، وأقلعها، ثم صحّحها وكرّر. |
| docs/ctf-foreign-kernel.md | تبنَّ نواة CTF أو نواة خارجية مقدَّمة وسلّم إليها الاستغلالات. |
| docs/configuration.md | حزمة إعدادات TOML، وملفات تعريف التصحيح، وكل خيار. |
| exploit/README.md | حلقة تطوير الاستغلال: حد الترجمة التلقائية ومخرج الطوارئ. |
| modules/README.md | وحدات مخصصة خارج الشجرة والتحميل التلقائي لرموز GDB. |
يوفّر modules/lk01/ برنامج تشغيل تدريبي صغيرًا وضعيفًا عمدًا، بالإضافة إلى PoC للانهيار، مُهيَّأً لحلقة البناء والتحميل والاستغلال الكاملة كمثال عملي.

توجد شيفرة Python في src/likedbg/ والمقصود بها أن تكون قابلة للقراءة. يشغّل just test مجموعة الاختبارات، ويشغّل just lint كلاً من ruff وmypy، ويعيد just build-images بناء صور الحاويات بعد تغيير Dockerfile أو سكربت مضمّن. تقارير الأخطاء وطلبات الميزات وطلبات السحب مرحّب بها عبر متتبّع المشكلات وصفحة المناقشات.
MIT. راجع LICENSE.