كتلة بيئة العملية

في مجال الحوسبة، تُعدّ كتلة بيئة العملية ( PEB ) بنية بيانات في عائلة أنظمة التشغيل Windows NT . وهي بنية بيانات مبهمة يستخدمها نظام التشغيل داخليًا، ومعظم حقولها غير مخصصة للاستخدام من قِبل أي شيء آخر غير نظام التشغيل. [ 1 ] تشير مايكروسوفت، في وثائق مكتبة MSDN الخاصة بها - والتي توثق عددًا قليلًا فقط من الحقول - إلى أن هذه البنية "قد تتغير في الإصدارات المستقبلية من Windows". [ 2 ] تحتوي كتلة بيئة العملية على هياكل بيانات تُطبّق على كامل العملية ، بما في ذلك السياق العام، ومعلمات بدء التشغيل، وهياكل بيانات مُحمّل صورة البرنامج، وعنوان قاعدة صورة البرنامج، وكائنات التزامن المستخدمة لتوفير الاستبعاد المتبادل لهياكل البيانات على مستوى العملية. [ 1 ]

يرتبط هيكل بيانات العملية (PEB) ارتباطًا وثيقًا ببنية بيانات وضع النواةEPROCESS ، وكذلك بهياكل البيانات الخاصة بكل عملية والتي تُدار ضمن مساحة عناوين عملية نظام التشغيل الفرعي للعميل والخادم . مع ذلك، (كما هو الحال مع هياكل بيانات CSRSS)، فإن هيكل بيانات العملية (PEB) ليس هيكل بيانات خاصًا بوضع النواة بحد ذاته، بل يقع في مساحة عناوين وضع التطبيق للعملية التي يرتبط بها. ويعود ذلك إلى أنه مصمم ليُستخدم بواسطة كود وضع التطبيق في مكتبات نظام التشغيل، مثل NTDLL ، والذي يُنفذ خارج وضع النواة، مثل كود مُحمِّل صور البرنامج ومدير الذاكرة. [ 3 ]

في برنامج WinDbg ، يُستخدم الأمر `public` لعرض محتويات كتلة تنفيذ البرنامج (PEB) !peb، حيث يُمرر إليه عنوان كتلة تنفيذ البرنامج ضمن مساحة عناوين التطبيق الخاصة بالعملية. ويتم الحصول على هذه المعلومات بدورها بواسطة !processالأمر `public`، الذي يعرض المعلومات من EPROCESSبنية البيانات، التي يُعد عنوان كتلة تنفيذ البرنامج أحد حقولها. [ 3 ]

حقول PEB التي وثقتها مايكروسوفت [ 2 ]
مجالمعنىملحوظات
BeingDebuggedما إذا كانت العملية قيد التصحيحتوصي مايكروسوفت بعدم استخدام هذا الحقل واستخدام وظيفة مكتبة Win32 الرسمية بدلاً من ذلك. [ 2 ]CheckRemoteDebuggerPresent()
القائدمؤشر إلى PEB_LDR_DATAبنية توفر معلومات حول الوحدات النمطية المحملةيحتوي على العنوان الأساسي لـ kernel32 و ntdll .
معلمات العمليةمؤشر إلى RTL_USER_PROCESS_PARAMETERSبنية توفر معلومات حول معلمات بدء تشغيل العمليةكما أن البنية RTL_USER_PROCESS_PARAMETERSمبهمة في الغالب، ولا يُضمن اتساقها عبر إصدارات متعددة من نظام التشغيل ويندوز. [ 4 ]
PostProcessInitRoutineمؤشر إلى دالة رد نداء يتم استدعاؤها بعد تهيئة مكتبة الارتباط الديناميكي (DLL) ولكن قبل استدعاء الكود التنفيذي الرئيسي.تُستخدم وظيفة الاستدعاء هذه في نظام التشغيل Windows 2000 ، ولكن لا يُضمن استخدامها في الإصدارات اللاحقة من نظام التشغيل Windows NT. [ 2 ]
معرف الجلسةمعرّف جلسة خدمات المحطة الطرفية التي تُعدّ العملية جزءًا منهايقوم استدعاء النظام بتهيئة هذا عن طريق استدعاء الدالة الداخلية للنواة . [ 3 ]NtCreateUserProcess()MmGetSessionId()

يتم تهيئة محتويات PEB بواسطة استدعاء النظام، وهو دالة Native API التي تنفذ جزءًا من وظائف مكتبة Win32 الموجودة في مكتبتي kernel32.dll و advapi32.dll ، وتدعمها ، بالإضافة إلى دعمها للدالة الموجودة في مكتبة Windows NT POSIX ، posix.dll. [ 3 ]NtCreateUserProcess()CreateProcess()CreateProcessAsUser()CreateProcessWithTokenW()CreateProcessWithLogonW()fork()

بالنسبة لعمليات Windows NT POSIX، يتم تهيئة محتويات PEB الخاصة بالعملية الجديدة كنسخة مباشرة من PEB الخاصة بالعملية الأصلية، بما يتوافق مع آلية عمل الدالة. أما بالنسبة لعمليات Win32، فتُستمد المحتويات الأولية لـ PEB الخاصة بالعملية الجديدة بشكل أساسي من المتغيرات العامة الموجودة داخل النواة. مع ذلك، يمكن استخلاص بعض الحقول من المعلومات المتوفرة في ملف صورة العملية، وتحديدًا المعلومات الموجودة في بنية البيانات ضمن تنسيق ملف PE (PE+ أو PE32+ في صور الملفات التنفيذية 64 بت). [ 3 ]NtCreateUserProcess()fork()IMAGE_OPTIONAL_HEADER32

الحقول من PEB التي يتم تهيئتها من متغيرات النواة العامة [ 3 ]
مجاليتم تهيئتها منهل يمكن تجاوز ذلك بواسطة معلومات PE؟
NumberOfProcessorsKeNumberOfProcessorsلا
NtGlobalFlagNtGlobalFlagلا
CriticalSectionTimeoutMmCriticalSectionTimeoutلا
HeapSegmentReserveMmHeapSegmentReserveلا
HeapSegmentCommitMmHeapSegmentCommitلا
HeapDeCommitTotalFreeThresholdMmHeapDeCommitTotalFreeThresholdلا
HeapDeCommitFreeBlockThresholdMmHeapDeCommitFreeBlockThresholdلا
MinimumStackCommitMmMinimumStackCommitInBytesلا
ImageProcessAffinityMaskKeActiveProcessorsImageLoadConfigDirectory.ProcessAffinityMask
OSMajorVersionNtMajorVersionOptionalHeader.Win32VersionValue&0xFF
OSMinorVersionNtMinorVersion(OptionalHeader.Win32VersionValue>>8)&0xFF
OSBuildNumberNtBuildNumber&0x3FFFبالإضافة إلىCmNtCSDVersion(OptionalHeader.Win32VersionValue>>16)&0x3FFF بالإضافة إلىImageLoadConfigDirectory.CmNtCSDVersion
OSPlatformIdVER_PLATFORM_WIN32_NT(OptionalHeader.Win32VersionValue>>30)^0x2

يُقدّم مشروع WineHQ تعريفًا أكثر شمولًا لـ PEB في نسخته من ملف winternl.h. [ 5 ] وقد عدّلت الإصدارات اللاحقة من نظام التشغيل Windows عدد بعض الحقول والغرض منها. [ 6 ]

مراجع

  1. 1 2 راجيف ناجار ( 1997). أساسيات نظام ملفات ويندوز إن تي: دليل للمطورين . سلسلة أورايلي. أورايلي. ص 129. ISBN  9781565922495.
  2. 1 2 3 4 "هياكل العمليات والخيوط: هيكل PEB" . مكتبة MSDN . مايكروسوفت . 15 يوليو 2010. مؤرشف من الأصل في 22 أكتوبر 2012. تم الاطلاع عليه في 15 يوليو 2010 .
  3. 1 2 3 4 5 6 مارك إي. روسينوفيتش ، ديفيد أ. سولومون، وأليكس إيونيسكو (2009). أساسيات نظام ويندوز . سلسلة منشورات مايكروسوفت ( الطبعة الخامسة). منشورات مايكروسوفت. الصفحات 335-336 ، 341-342 ، 348، 357-358 . ISBN   9780735625303.{{cite book}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط )
  4. "هياكل العمليات والخيوط: هيكل RTL_USER_PROCESS_PARAMETERS" . مكتبة MSDN . مايكروسوفت . 15-07-2010 . تاريخ الاسترجاع: 15-07-2010 .
  5. "wine winternl.h: typedef struct _PEB" . GitHub . wine-mirror. 29 أكتوبر 2019.
  6. تشابل، جيف. "PEB" . تم الاطلاع عليه بتاريخ 30 أكتوبر 2019 .