-9 السلام عليكم دوال الـNative API هى مكتبة هامة جداً فى الوندوز تعتمد عليها باقى المكتبات امثال user32.dll و Kernel32.dll وGDI32.dll وغيرهم الكثير... مكتبة ntdll.dll والتى تحتوى على دوال الـNative Api لم تقم مايكروسفت بشرحها كما هو الحال بالنسبة لباقى المكتبات, ومكتبة Kernel32.dll تعتبر تغليف لمكتبة ntdll.dll.. اغلب الدوال فى مكتبة ntdll.dll تبداء بالحروف Rt او Nt و Zw ولكن هناك دوال لا تتبع هذا النهج.. كيف الوصول إلى هذه الدوال ؟ هناك برنامج dumpbin تستطيع من خلاله الاطلاع على اسماء الدوال, هذا البرنامج يعمل من سطر الاوامر console ويتطلب بعض الاضافات للوصول إلى محتويات مكتبات الـdll .. يمكننا الاطلاع على الدوال بكتابة الامر
الملف يحتوي تقريباُ على 1400 دالة وكما تلاحظ فإن بعض الدوال يبداء بالحرفين Zw . قم الان بالاطلاع على ملف Kernel32.dll لتشاهد الدوال التى تقوم المكتبة بإستيرادها من مكتبة ntdll.dll وذلك بكتابة الامر التالي..
نلاحظ ان هناك العديد من الاوامر التى يتم إستيرادها من ملف ntdll.dll, من إسم الدالة نستطيع ان نستنتج طريقة عملها ولكن بما انه لا يوجد اى شرح من مايكروسفت, فهناك ثلاثة طرق لمعرفة عمل الدالة.. الاولى الاستنتاج والتجربة نقوم بإستنتاج عمل الدالة من خلال إسمها ومن ثم نقوم بترجبة بعض الشفرة وإستدعاء الدالة ومشاهدة ما تقوم به, مشكلة هذا الطريقة هى انك لا تعرف بالظبط ما الذى يحدث خلف الكواليس, وربما تعمل الطريقة معى كود معين بدون خلل وعندما تقوم بتطبيقها فى كود اخر تكتشف ان إستنتاجاتك كانت خاطئة او تجاهلت جزئية هامة, والمشكلة الثانية هى انه هناك دوال متعلقة ببعضها وإذا جربت جالة معينه ربما تفشل رغم تكرار المحاولة بمعطيات مختلفة وذلك لانك لم تستدعى الدالة المتعلقة بها اولاً.. الثانية جوجل. طبعاً هناك العديد من من يستخدم هذا الدوال وحتى لو لم تشرحها مايكروسفت, هناك بالتاكيد من قام بعملية هندسة عكسية وكشف اسرار الدالة, لذلك يمكنك كتابة الدالة التى تريد التعرف على طريقة عملها ووضعها فى جوجل وستحصل على نتائج عديدة وشرح وامثلة لكيفية الاستخدام.. الثالثة هندسة عكسية كلمة مخيفة ولكن فى بعض الاحيان شر لا بد منه, الهندسة العكسية هى مسئلة تعود, وإحتراف الهندسة العكسية يتطلب ممارسة وصبر, تستطيع فتح الملف فى برنامج مثل ollydbg ومتابعته الدالة التى تريد التعرف عليها سطر بسطر ومحاولة معرفة ما يحدث, ولكن انصح ان تبحث فى جوجل اولاً لان بعض الدوال معقدة جداً وتتطلب معرفة ليس فقط بالهندسة العكسية ولكن بالـdata structure وكل ما له علاقة بالخوارزميات, لقد حاولت فى مرة متابعة احد هذا الدوال وبعد عدة ايام من المتابعة اكتشفت انه يستخدم hash table, الشفرى كانت تقفز من عنوان إلى عنوان من ما جعل متابعة ما يحدث صعب جداً, لذلك إذا وجدت ان هناك اشياء غريبة فى الشفرة مثل القفز المتكرر اعلم انه يستخدم data structure معين ويجب عليك فى هذه الحالة محاولة إستنتاج نوع الخوارزمية التى تستخدمها الدالة ومن ثم متابعة الشفرة لترى إذا كان تحليلك مظبوط.. ملاحظة اخيرة نلاحظ فى نهاية الـexports لملف الـntdll.dll مجموعة من الدوال المعروفة والتى طالما استخدمناها فى لغة مثل السي.
إذا اردت ان تجرب تستطيع إستدعاء هذه الدوال دون الاعتماد على مكتبة kernel32.dll او ملف windows.h وستلاحظ انها نفس الدوال... والسلام عليكم