تحديث: كتبت نسخة من البرنامج تعمل على windows 8، وأتخيل أنها تعمل على جميع الأنظمة من xp إلى 10. أرجو من أصحاب النظم المختلفة تجربة البرنامج.
كما ذكرنا آنفا، البرنامج كان به مشكلتان، الأولى أن طريقته في الوصول إلى عنوان الأساس ل kernel32.dll لم تعد تنفع، والثانية استعماله لقائمة الأسماء بدل قائمة عناوين الأسماء.
المشكلة الثانية حلها بسيط. لحل الأولى علينا استعمال أسلوب مختلف. يمكننا الحصول على معلومات المكتبات المحملة من خانة InMemoryOrderModuleList في جدول LDR الذي بدوره يوجد في جدول PEB وهذا الأخير في TIB. يمكننا الوصول لجدول TIB باستعمال المسجل fs، فمثلا العنوان fs:[0x30] يحوي مؤشرا إلى جدول PEB. بهذه الطريقة يمكننا الوصول إلى عناوين وأسماء المكتبات المحملة، ويجدر بالذكر أن الأسماء في InMemoryOrderModuleList هي من النوع wchar_t* وليس char*.
في المرفات: تجدون البرنامج مع المصدر بلغة C موضحا بتعليقات وملف نصي فيه أمر التجميع (compilation).
ملاحظات: افترضت أن جميع أسماء المكتبات في InMemoryOrderModuleList تنتهي بصفر على الرغم من أن صفحة مايكروسوف لا تؤكد ذلك (انظر UNICODE_STRING في المراجع).
المراجع:
https://docs.microsoft.com/en-us/windows...b_ldr_data
https://docs.microsoft.com/en-us/windows...nternl-peb
https://en.wikipedia.org/wiki/Win32_Thre...tion_Block
https://docs.microsoft.com/en-us/windows...ode_string
كما ذكرنا آنفا، البرنامج كان به مشكلتان، الأولى أن طريقته في الوصول إلى عنوان الأساس ل kernel32.dll لم تعد تنفع، والثانية استعماله لقائمة الأسماء بدل قائمة عناوين الأسماء.
المشكلة الثانية حلها بسيط. لحل الأولى علينا استعمال أسلوب مختلف. يمكننا الحصول على معلومات المكتبات المحملة من خانة InMemoryOrderModuleList في جدول LDR الذي بدوره يوجد في جدول PEB وهذا الأخير في TIB. يمكننا الوصول لجدول TIB باستعمال المسجل fs، فمثلا العنوان fs:[0x30] يحوي مؤشرا إلى جدول PEB. بهذه الطريقة يمكننا الوصول إلى عناوين وأسماء المكتبات المحملة، ويجدر بالذكر أن الأسماء في InMemoryOrderModuleList هي من النوع wchar_t* وليس char*.
في المرفات: تجدون البرنامج مع المصدر بلغة C موضحا بتعليقات وملف نصي فيه أمر التجميع (compilation).
ملاحظات: افترضت أن جميع أسماء المكتبات في InMemoryOrderModuleList تنتهي بصفر على الرغم من أن صفحة مايكروسوف لا تؤكد ذلك (انظر UNICODE_STRING في المراجع).
المراجع:
https://docs.microsoft.com/en-us/windows...b_ldr_data
https://docs.microsoft.com/en-us/windows...nternl-peb
https://en.wikipedia.org/wiki/Win32_Thre...tion_Block
https://docs.microsoft.com/en-us/windows...ode_string
I am homesick for a place I have not even visited
مَا ابْيَضَّ وجهٌ باكتساب كريمةٍ ... حتى يسوِّدهُ شُحوب المَطلبِ
مَا ابْيَضَّ وجهٌ باكتساب كريمةٍ ... حتى يسوِّدهُ شُحوب المَطلبِ