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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
linux-4.1.15_CVE-2023-28772 — شجرة مصدر نواة لينكس (v4.1.15) مع التركيز على CVE-2023-28772، توفر بيئة مرجعية لتحليل الثغرات، أبحاث الاستغلال، وتعليم أمان النواة. | Kitploit
أدوات/GitHubGitHub/trinadh465/linux-4.1.15_cve-2023-28772
تحليل الثغرات الأمنيةالاستغلالتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليم
GitHubtrinadh465/linux-4.1.15_cve-2023-28772

linux-4.1.15_CVE-2023-28772

شجرة مصدر نواة لينكس (v4.1.15) مع التركيز على CVE-2023-28772، توفر بيئة مرجعية لتحليل الثغرات، أبحاث الاستغلال، وتعليم أمان النواة.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
1منذ 3 سنواتلم تتم المراجعة بعد

إصدار نواة لينكس 4.x http://kernel.org/

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

ما هو لينكس؟

لينكس هو نسخة من نظام التشغيل Unix، تمت كتابتها من الصفر بواسطة لينوس تورفالدز بمساعدة فريق غير رسمي من المخترقين عبر الإنترنت. يهدف إلى الامتثال لـ POSIX ومعيار Unix الموحد.

يحتوي على جميع الميزات التي تتوقعها في Unix حديث كامل المواصفات، بما في ذلك تعدد المهام الحقيقي، الذاكرة الافتراضية، المكتبات المشتركة، التحميل عند الطلب، الملفات التنفيذية المشتركة للنسخ عند الكتابة، إدارة الذاكرة السليمة، والشبكات متعددة الأكوام بما في ذلك IPv4 و IPv6.

يتم توزيعه بموجب رخصة جنو العمومية العامة - راجع ملف COPYING المرفق لمزيد من التفاصيل.

على أي أجهزة يعمل؟

على الرغم من أنه تم تطويره أصلاً لأجهزة الكمبيوتر الشخصية 32-bit x86 (386 أو أعلى)، يعمل لينكس اليوم أيضًا على (على الأقل) معماريات Compaq Alpha AXP، Sun SPARC و UltraSPARC، Motorola 68000، PowerPC، PowerPC64، ARM، Hitachi SuperH، Cell، IBM S/390، MIPS، HP PA-RISC، Intel IA-64، DEC VAX، AMD x86-64، AXIS CRIS، Xtensa، Tilera TILE، AVR32 و Renesas M32R.

لينكس قابل للنقل بسهولة إلى معظم المعماريات 32 أو 64 بت للأغراض العامة طالما أنها تحتوي على وحدة إدارة ذاكرة مقسمة (PMMU) ومنفذ لمجمع جنو C (gcc) (جزء من مجموعة مجمعات جنو، GCC). تم أيضًا نقل لينكس إلى عدد من المعماريات بدون PMMU، على الرغم من أن الوظائف تكون محدودة إلى حد ما. تم أيضًا نقل لينكس إلى نفسه. يمكنك الآن تشغيل النواة كتطبيق مساحة مستخدم - وهذا يسمى UserMode Linux (UML).

التوثيق:

  • يوجد الكثير من التوثيق المتاح سواء في شكل إلكتروني على الإنترنت أو في الكتب، سواء كانت خاصة بلينكس أو تتعلق بأسئلة عامة حول Unix. أوصي بالاطلاع على الدلائل الفرعية للتوثيق على أي موقع FTP لنظام لينكس للحصول على كتب LDP (مشروع توثيق لينكس). هذا الملف README ليس المقصود منه أن يكون توثيقًا للنظام: فهناك مصادر أفضل بكثير متاحة.

  • توجد ملفات README متنوعة في الدليل الفرعي Documentation/: تحتوي هذه الملفات عادةً على ملاحظات تثبيت خاصة بالنواة لبعض برامج التشغيل على سبيل المثال. راجع Documentation/00-INDEX للحصول على قائمة بما هو موجود في كل ملف. يُرجى قراءة ملف Changes، لأنه يحتوي على معلومات حول المشاكل التي قد تنتج عن ترقية النواة الخاصة بك.

  • يحتوي الدليل الفرعي Documentation/DocBook/ على عدة أدلة لمطوري النواة والمستخدمين. يمكن عرض هذه الأدلة بعدة صيغ: PostScript (.ps)، PDF، HTML، وصفحات الدليل (man-pages)، من بين صيغ أخرى. بعد التثبيت، "make psdocs"، "make pdfdocs"، "make htmldocs"، أو "make mandocs" ستعرض التوثيق بالصيغة المطلوبة.

تثبيت مصدر النواة:

  • إذا قمت بتثبيت المصادر الكاملة، ضع ملف النواة المضغوط (tarball) في دليل حيث لديك صلاحيات (مثل دليل منزلك) وقم بفك ضغطه:

    xz -cd linux-4.X.tar.xz | tar xvf -

    استبدل "X" برقم إصدار أحدث نواة.

    لا تستخدم المنطقة /usr/src/linux/! هذه المنطقة تحتوي على مجموعة (غير كاملة عادةً) من ملفات رأس النواة التي تستخدمها ملفات رأس المكتبة. يجب أن تتطابق مع المكتبة، ولا يجب أن تفسد بأي شيء يحدث أن يكون النواة الحالية.

  • يمكنك أيضًا الترقية بين إصدارات 4.x عن طريق التصحيح (patching). يتم توزيع التصحيحات بصيغة xz. لتثبيت عن طريق التصحيح، احصل على جميع ملفات التصحيح الأحدث، ادخل دليل المستوى الأعلى لمصدر النواة (linux-4.X) وقم بتنفيذ:

    xz -cd ../patch-4.x.xz | patch -p1

    استبدل "x" لجميع الإصدارات الأكبر من الإصدار "X" لشجرة المصدر الحالية لديك، بالترتيب، ويجب أن تكون بخير. قد ترغب في إزالة ملفات النسخ الاحتياطي (some-file-name~ أو some-file-name.orig)، وتأكد من عدم وجود تصحيحات فاشلة (some-file-name# أو some-file-name.rej). إذا كانت موجودة، إما أنا أو أنت قد ارتكبنا خطأ.

    على عكس تصحيحات نواة 4.x، فإن تصحيحات نواة 4.x.y (المعروفة أيضًا باسم نواة -stable) ليست تراكمية ولكنها تطبق مباشرة على نواة 4.x الأساسية. على سبيل المثال، إذا كانت النواة الأساسية لديك هي 4.0 وتريد تطبيق تصحيح 4.0.3، يجب ألا تطبق أولاً تصحيحات 4.0.1 و 4.0.2. وبالمثل، إذا كنت تستخدم إصدار النواة 4.0.2 وترغب في القفز إلى 4.0.3، يجب أولاً عكس تصحيح 4.0.2 (أي، patch -R) قبل تطبيق تصحيح 4.0.3. يمكنك قراءة المزيد حول هذا في Documentation/applying-patches.txt

    بدلاً من ذلك، يمكن استخدام script patch-kernel لأتمتة هذه العملية. يحدد إصدار النواة الحالي ويطبق أي تصحيحات موجودة.

    linux/scripts/patch-kernel linux

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

  • تأكد من عدم وجود ملفات .o قديمة وتبعيات في الجوار:

    cd linux make mrproper

    يجب أن يكون لديك الآن المصادر مثبتة بشكل صحيح.

متطلبات البرامج

يتطلب تجميع وتشغيل نواة 4.x إصدارات محدثة من حزم برامج متنوعة. استشر Documentation/Changes للحصول على أرقام الإصدارات الدنيا المطلوبة وكيفية الحصول على تحديثات لهذه الحزم. احذر من أن استخدام إصدارات قديمة جدًا من هذه الحزم يمكن أن يسبب أخطاء غير مباشرة يصعب تتبعها، لذلك لا تفترض أنه يمكنك فقط تحديث الحزم عند ظهور مشاكل واضحة أثناء البناء أو التشغيل.

دليل البناء للنواة:

عند تجميع النواة، سيتم تخزين جميع ملفات المخرجات افتراضيًا مع كود مصدر النواة. باستخدام الخيار "make O=output/dir" يمكنك تحديد مكان بديل لملفات المخرجات (بما في ذلك .config). مثال:

root@kitploit:~
 كود مصدر النواة: /usr/src/linux-4.X
 دليل البناء:    /home/name/build/kernel

لتكوين وبناء النواة، استخدم:

root@kitploit:~
 cd /usr/src/linux-4.X
 make O=/home/name/build/kernel menuconfig
 make O=/home/name/build/kernel
 sudo make O=/home/name/build/kernel modules_install install

يُرجى ملاحظة: إذا تم استخدام الخيار 'O=output/dir'، فيجب استخدامه لجميع استدعاءات make.

تكوين النواة:

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

  • أوامر التكوين البديلة هي:

    "make config" واجهة نصية عادية.

    "make menuconfig" قوائم ملونة نصية، قوائم اختيار وحوارات.

    "make nconfig" قوائم ملونة نصية محسنة.

    "make xconfig" أداة تكوين تعتمد على X windows (Qt).

    "make gconfig" أداة تكوين تعتمد على X windows (Gtk).

    "make oldconfig" الافتراضي لجميع الأسئلة بناءً على محتويات ملف ./.config الموجود لديك والاستفسار عن رموز التكوين الجديدة.

    "make silentoldconfig" مثل ما سبق، ولكنه يتجنب إرباك الشاشة بالأسئلة التي تمت الإجابة عليها بالفعل. بالإضافة إلى تحديث التبعيات.

    "make olddefconfig" مثل ما سبق، ولكنه يعين الرموز الجديدة إلى قيمها الافتراضية دون مطالبة.

    "make defconfig" إنشاء ملف ./.config باستخدام قيم الرمز الافتراضية إما من arch/$ARCH/defconfig أو arch/$ARCH/configs/${PLATFORM}_defconfig، اعتمادًا على المعمارية.

    "make ${PLATFORM}_defconfig" إنشاء ملف ./.config باستخدام قيم الرمز الافتراضية من arch/$ARCH/configs/${PLATFORM}_defconfig. استخدم "make help" للحصول على قائمة بجميع المنصات المتاحة لمعماريتك.

    "make allyesconfig" إنشاء ملف ./.config عن طريق تعيين قيم الرمز إلى 'y' قدر الإمكان.

    "make allmodconfig" إنشاء ملف ./.config عن طريق تعيين قيم الرمز إلى 'm' قدر الإمكان.

    "make allnoconfig" إنشاء ملف ./.config عن طريق تعيين قيم الرمز إلى 'n' قدر الإمكان.

    "make randconfig" إنشاء ملف ./.config عن طريق تعيين قيم الرمز إلى قيم عشوائية.

    "make localmodconfig" إنشاء تكوين بناءً على التكوين الحالي والوحدات المحملة (lsmod). يقوم بتعطيل أي خيار وحدة غير ضرورية للوحدات المحملة.

    root@kitploit:~
                        لإنشاء localmodconfig لجهاز آخر،
                        قم بتخزين lsmod لذلك الجهاز في ملف
                        وقم بتمريره كمعامل LSMOD.
    
                target$ lsmod > /tmp/mylsmod
                target$ scp /tmp/mylsmod host:/tmp
    
                host$ make LSMOD=/tmp/mylsmod localmodconfig
    
                        ما سبق يعمل أيضًا عند الترجمة المتقاطعة (cross compiling).
    

    "make localyesconfig" مشابه لـ localmodconfig، باستثناء أنه سيقوم بتحويل جميع خيارات الوحدات إلى خيارات مدمجة (=y).

    يمكنك العثور على مزيد من المعلومات حول استخدام أدوات تكوين نواة لينكس في Documentation/kbuild/kconfig.txt.

  • ملاحظات حول "make config":

    • وجود برامج تشغيل غير ضرورية سيجعل النواة أكبر، ويمكن تحت بعض الظروف أن يؤدي إلى مشاكل: فحص بطاقة تحكم غير موجودة قد يربك وحدات التحكم الأخرى لديك.

ترجمة النواة:

  • تأكد من أن لديك على الأقل gcc 3.2 متاحًا. لمزيد من المعلومات، راجع Documentation/Changes.

    يُرجى ملاحظة أنه لا يزال بإمكانك تشغيل برامج المستخدم a.out باستخدام هذه النواة.

  • قم بتنفيذ "make" لإنشاء صورة نواة مضغوطة. من الممكن أيضًا القيام بـ "make install" إذا كان لديك lilo مثبتًا ليناسب ملفات make للنواة، ولكن قد ترغب في التحقق من إعداد lilo الخاص بك أولاً.

    للقيام بالتثبيت الفعلي، يجب أن تكون مستخدم root، ولكن لا يتطلب أي من البناء العادي ذلك. لا تتخذ اسم root عبثًا.

  • إذا قمت بتكوين أي من أجزاء النواة كـ modules، فسيتعين عليك أيضًا القيام بـ "make modules_install".

  • إخراج الترجمة/البناء المفصل للنواة:

    عادةً، يعمل نظام بناء النواة في وضع هادئ إلى حد ما (ولكن ليس صامتًا تمامًا). ومع ذلك، في بعض الأحيان تحتاج أنت أو مطورو النواة الآخرون إلى رؤية أوامر الترجمة أو الربط أو غيرها تمامًا كما يتم تنفيذها. لهذا، استخدم وضع البناء "المفصل" (verbose). يتم ذلك عن طريق إدراج "V=1" في الأمر "make". على سبيل المثال:

    make V=1 all

    لجعل نظام البناء يخبر أيضًا عن سبب إعادة بناء كل هدف، استخدم "V=2". الافتراضي هو "V=0".

  • احتفظ بنواة احتياطية في متناول اليد في حالة حدوث خطأ ما. هذا ينطبق بشكل خاص على إصدارات التطوير، لأن كل إصدار جديد يحتوي على كود جديد لم يتم تصحيحه. تأكد من الاحتفاظ بنسخة احتياطية من الوحدات المقابلة لتلك النواة أيضًا. إذا كنت تقوم بتثبيت نواة جديدة بنفس رقم الإصدار مثل نواة العمل الخاصة بك، قم بعمل نسخة احتياطية من دليل الوحدات الخاص بك قبل القيام بـ "make modules_install".

    بدلاً من ذلك، قبل الترجمة، استخدم خيار تكوين النواة "LOCALVERSION" لإلحاق لاحقة فريدة برقم إصدار النواة العادي. يمكن ضبط LOCALVERSION في قائمة "الإعداد العام" (General Setup).

  • من أجل إقلاع النواة الجديدة الخاصة بك، ستحتاج إلى نسخ صورة النواة (على سبيل المثال .../linux/arch/i386/boot/bzImage بعد الترجمة) إلى المكان الذي توجد فيه نواتك القابلة للإقلاع العادية.

  • لم يعد إقلاع النواة مباشرة من قرص مرن بدون مساعدة محمل إقلاع مثل LILO مدعومًا.

    إذا قمت بإقلاع لينكس من القرص الصلب، فمن المحتمل أنك تستخدم LILO، والذي يستخدم صورة النواة كما هو محدد في ملف /etc/lilo.conf. ملف صورة النواة عادةً ما يكون /vmlinuz، /boot/vmlinuz، /bzImage أو /boot/bzImage. لاستخدام النواة الجديدة، احفظ نسخة من الصورة القديمة وانسخ الصورة الجديدة فوق القديمة. ثم، يجب عليك إعادة تشغيل LILO لتحديث خريطة التحميل!! إذا لم تفعل، فلن تتمكن من إقلاع صورة النواة الجديدة.

    إعادة تثبيت LILO عادةً ما تكون مسألة تشغيل /sbin/lilo. قد ترغب في تحرير /etc/lilo.conf لتحديد إدخال لصورة النواة القديمة لديك (على سبيل المثال، /vmlinux.old) في حالة عدم عمل الجديدة. راجع وثائق LILO لمزيد من المعلومات.

    بعد إعادة تثبيت LILO، يجب أن تكون كل شيء جاهزًا. أطفئ النظام، أعد التشغيل، واستمتع!

إذا حدث خطأ ما:

  • إذا كانت لديك مشاكل تبدو أنها بسبب أخطاء في النواة، يُرجى التحقق من ملف MAINTAINERS لمعرفة ما إذا كان هناك شخص معين مرتبط بالجزء من النواة الذي تواجه مشكلة معه. إذا لم يكن هناك أي شخص مدرج هناك، فإن ثاني أفضل شيء هو إرسال بريد إلكتروني إلي ([email protected])، وربما إلى أي قائمة بريدية أخرى ذات صلة أو إلى مجموعة الأخبار.

  • في جميع تقارير الأخطاء، من فضلك أخبر عن أي نواة تتحدث، وكيفية تكرار المشكلة، وما هو الإعداد لديك (استخدم منطقك السليم). إذا كانت المشكلة جديدة، أخبرني بذلك، وإذا كانت المشكلة قديمة، يُرجى محاولة إخباري عندما لاحظتها لأول مرة.

  • إذا أدى الخطأ إلى رسالة مثل

    unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:XXXXXXXX eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx ds: xxxx es: xxxx fs: xxxx gs: xxxx Pid: xx, process nr: xx xx xx xx xx xx xx xx xx xx xx

    أو معلومات تصحيح نواة مماثلة على شاشتك أو في سجل النظام الخاص بك، يُرجى تكرارها بالضبط. قد يبدو التخريج (dump) غير مفهوم لك، لكنه يحتوي على معلومات قد تساعد في تصحيح المشكلة. النص فوق التخريج مهم أيضًا: فهو يخبر عن سبب تخريج النواة للكود (في المثال أعلاه، بسبب مؤشر نواة خاطئ). مزيد من المعلومات حول فهم التخريج موجود في Documentation/oops-tracing.txt

  • إذا قمت بتجميع النواة مع CONFIG_KALLSYMS، يمكنك إرسال التخريج كما هو، وإلا سيتعين عليك استخدام برنامج "ksymoops" لفهم التخريج (لكن التجميع مع CONFIG_KALLSYMS هو المفضل عادةً). يمكن تنزيل هذه الأداة من ftp://ftp..kernel.org/pub/linux/utils/kernel/ksymoops/ . بدلاً من ذلك، يمكنك البحث في التخريج يدويًا:

  • في تخريجات التصحيح مثل ما سبق، يساعد بشكل كبير إذا كان بإمكانك البحث عن معنى قيمة EIP. القيمة السداسية العشرية كذا لا تساعدني أو أي شخص آخر كثيرًا: ستعتمد على إعداد النواة الخاص بك. ما يجب عليك فعله هو أخذ القيمة السداسية العشرية من سطر EIP (تجاهل "0010:")، والبحث عنها في قائمة أسماء النواة (namelist) لمعرفة أي وظيفة نواة تحتوي على العنوان المخالف.

    لمعرفة اسم وظيفة النواة، ستحتاج إلى العثور على الثنائي النظامي (system binary) المرتبط بالنواة التي أظهرت الأعراض. هذا هو ملف 'linux/vmlinux'. لاستخراج قائمة الأسماء ومطابقتها مع EIP من تحطم النواة، قم بما يلي:

    nm vmlinux | sort | less

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

    إذا لم تتمكن لسبب ما من القيام بما سبق (لديك صورة نواة مترجمة مسبقًا أو ما شابه)، فإن إخباري بقدر ما تستطيع عن الإعداد الخاص بك سيساعد. يُرجى قراءة وثيقة REPORTING-BUGS للحصول على التفاصيل.

تنزيل الأداة
  • تجميع النواة مع تعيين "نوع المعالج" (Processor type) أعلى من 386 سينتج نواة لا تعمل على جهاز 386. ستكتشف النواة ذلك عند الإقلاع، وتستسلم.

  • النواة التي تحتوي على محاكاة رياضية (math-emulation) مترجمة داخلها ستستمر في استخدام المعالج المساعد (coprocessor) إذا كان موجودًا: لن يتم استخدام المحاكاة الرياضية أبدًا في هذه الحالة. ستكون النواة أكبر قليلاً، ولكنها ستعمل على أجهزة مختلفة بغض النظر عما إذا كان لديها معالج مساعد رياضي أم لا.

  • تفاصيل تكوين "اختراق النواة" (kernel hacking) عادةً ما تؤدي إلى نواة أكبر أو أبطأ (أو كليهما)، ويمكن أن تجعل النواة أقل استقرارًا عن طريق تكوين بعض الإجراءات لمحاولة كسر الكود السيئ بشكل نشط للعثور على مشاكل النواة (kmalloc()). لذلك يجب عليك على الأرجح الإجابة بـ 'n' على أسئلة ميزات "التطوير" (development)، "التجريبية" (experimental)، أو "التصحيح" (debugging).

  • إذا احتجت يومًا إلى تغيير جهاز الجذر الافتراضي، وضع الفيديو، حجم قرص الرام (ramdisk)، إلخ. في صورة النواة، استخدم برنامج 'rdev' (أو بدلاً من ذلك خيارات إقلاع LILO عند الاقتضاء). لا حاجة لإعادة ترجمة النواة لتغيير هذه المعلمات.

  • أعد التشغيل بالنواة الجديدة واستمتع.

  • بدلاً من ذلك، يمكنك استخدام gdb على نواة قيد التشغيل. (للقراءة فقط؛ أي لا يمكنك تغيير القيم أو تعيين نقاط توقف.) للقيام بذلك، قم أولاً بتجميع النواة مع -g؛ قم بتحرير arch/i386/Makefile بشكل مناسب، ثم قم بتنفيذ "make clean". ستحتاج أيضًا إلى تمكين CONFIG_PROC_FS (عبر "make config").

    بعد إعادة التشغيل بالنواة الجديدة، قم بتنفيذ "gdb vmlinux /proc/kcore". يمكنك الآن استخدام جميع أوامر gdb المعتادة. الأمر للبحث عن النقطة التي تعطل فيها النظام هو "l *0xXXXXXXXX". (استبدل XXXes بقيمة EIP.)

    gdb على نواة غير قيد التشغيل يفشل حاليًا لأن gdb (بشكل خاطئ) يتجاهل إزاحة البداية التي تم تجميع النواة بها.