بتـــــاريخ : 2/26/2011 1:35:42 AM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 971 0


    مواضيع API متقدمة لنظام التشغيل NT >>>>>>>>موضوع للمناقشة <<<<<<

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : احمد غريب | المصدر : www.arabteam2000-forum.com

    كلمات مفتاحية  :

    السلام عليكم

    اضع هذا الموضوع لننتقل بمستوى المواضيع فى المنتدى من مستنقع مواضيع المبتدئين إلى مرحلة جديدة تشعرنا باننا نقوم بعلم جاد وليس فقط واجهة مستخدم..

    اغلب مواضيع الـAPI كانت منحصرة حتى الان فى كيفية التحكم معى واجهة المستخدم, تغير الالوان, فتح عدة نوافذ, تغير الايقونه, القوائم المنسدلة الخ..

    ولكن لا يكفى ان نقوم بعمل برنامج يحتوى على واجهة مستخدم فقط يجب علينا ان نقوم بعمل برامج مفيدة تستطيع التحكم فى بيئة العمل وتعطى إنطباع للمستخدم ان البرنامج تم كتابته من قبل مبرمج محترف يعرف ما يقوم به...

    بالتاكيد ابرع من برمج على انظمة الوندوز هو Mark Russinovich للتعرف على هذه الشخصية ما عليك سوى زيارة موقعه
    http://www.sysinternals.com/
    تجد فى هذا الموقع العديد من البرامج القويه, فى الواقع برامج مارك هى اقوى برامج استخدمتها حتى الان اسرد عليكم بعض هذه البرامج التى استخدمها بشكل دائم ومستمر ولا اعتقد ان هناك سبيل للإستغناء عنها إذا ما تعودت عليها ..

    Process Explorer v9.25
    هذا البرنامج يعتبر اقوى برنامج تحكم على نظام التشغيل, من خلاله تستطيع ان تشاهد جميع البرامج وكل محتوياتها من Threads وإستهلاك الذاكره والمعالج لكل Thread..
    البرنامج يقوم بكل ما يقوم به الـTaskManager وبالطبع الجميع يعرف ماهو الـTaskManager, ولكن بالاضافة لذلك يمكنك مشاهده جميع البرامج التى تعمل فى جهازك وإسم الشركة المنتجة لكل واحده منها, إغلاق اى برنامج تريد التخلص منه اى برنامج ووظائف اخرى عديدة لا مجال لحصرها فى هذا الموضوع...

    TCPView v2.4
    برنامج اخر قمة فى الروعة يقوم بسرد كل ما يحدث من إتصال عبر كرت الشبكة, من خلال هذا البرنامج تستطيع ان تشاهد جميع البرامج التى تقوم بالاتصال, رقم الIP للجهة التى يتم الاتصال بها, رقم المنفذ المستخدم, كما يمكنك ايضاً إظهار إسم الجهة المتصل بها, وما هو العمل الذى يقوم به البرنامج... من خلال هذا البرنامج يمكنك ايضاً إنها إتصال بين برنامج معين وكرت الشبكة واشياء اخرى, بإختصار كل ما يحدث من اتصال بين جهازك والشبكة يمكنك التحكم به من خلال هذا البرنامج

    AccessEnum v1.3
    هذا البرنامج يسرد جميع الصلاحيات فى جهازك, من خلاله تستطيع معرفة صلاحيات كل ملف فى جهاز, وتستطيع معرفة اى مستخدم يستطيع قرائة ملف معين او الكتابة فى الملف الخ ..

    Portmon v3.02
    برنامج يظهر بالتفصيل ما يحدث فى منافذ الجهاز من com او lpt, ليس فقط على جهازك المحلى بل على اي جهاز فى الشبكة ..

    Regmon v7.02
    من خلال هذا البرنامج تستطيع مشاهدة ما يحدث فى الـRegistry بالتفصيل الممل, ويمكنك تحديد برنامج معين لمشاهدة ما يقوم به فى الـregistry من قرائة وكتابة ..

    لن استطيع سرد جميع البرامج لاهنا كم كبير جداً من البرامج...

    مايهمنا فى الامر الان هو كيفية عمل مثل هذه البرامج, يوجد فى الموقع ايضاً بعض المواضيع التى تناقش بعض دوال الAPI التى يتم إستخدامها فى عمل مثل هذه البرامج ومواضيع كثرة جداً, ولكن المواضيع التى تطرح فى هذا الموقع على مستوى عالى من التعقيد, وما اريد ان اقترحه هو مناقشة هذا المواضيع بطريقة اقل تعقيداً حتى نصل إلى المستوى الذى من خلاله نستطيع قرائة هذه المواضيع وفهمها لانه وللاسف ينقصنا الكثير من الاساسيات للوصل لهذا المستوى..

    ختاماً اسرد عليكم بعض دوال الـAPI التى سوف توهيئ لنا القاعدة الاساسية للتحسين من مستونا البرمجى, والذى اتمنى ان ينقلنا من ما نحن فيه إلى مستوى نستطيع من خلاله كتابة برامج إحترافية..

    PROCESSES

    CreateProcess
    داله فى غاية الاهمية تحتوى على إمكانيات ضخمه نستطيع من خلالها تحديد صلاحيات الProcess, انا استخدمها احياناً عند تشغيل برنامج غير موثوق المصدر, بحيث احدد له صلاحيات معينه وامنعه مثلاً من إغلاق الجهاز, او الكتابة على القرص الصلب, كما اننى استخدمة فى اختراق بعض البرامج المضغوطة بدون تغير الملف المصدرى للبرنامج الاصلى..ولكن بما ان اختراق البرامج موضع صعب على قسم السى ساقوم بكتابة موضوع منفصل فى قسم الاسمبلى لاحقاً إن شاء الله..

    ExitProcess
    CloseHandle
    TerminateProcess
    GetExitCodeProcess
    هذه الدوال تتحكم فى عملية القضاء على Process وتحديد ما إذا كان الـProcess مازال يعمل ام تم بالفعل القضاء عليه..

    WaitForSingleObject
    هذه الدالة هى دالة إنتظار, عندما نقوم بتشغيل Process معين نريد ان نعرف هل الـProcess تم تحميله بالكمل فى الذاكرة ام لا, وعند إغلاقه نريد ان نعرف هل تم إغلاقة بالكامل ام انه ما زال فى مرحلة الاغلاق, بإستدعاء هذه الدله تحصل على رسالة تبلغك عندما يتم بالفعل إنجاز العمل بالكامل..
    JOBS

    CreateJobObject
    نفترض ان برنامجك يتكون من مجموعة من الProcess وتريد ان تعطيها نفس الصلاحيات, إعطاء كل Process الصلاحيات على حدى قد يكون عمل مرهق, لذلك يمكنك جمعها جمعاُ تحت job واحد وإعطائها نفس الصلاحيات دفعة واحده, هذه الخالصية تعمل فقط فى وندوز NT ..

    AssignProcessToJobObject
    وبساعدة هذه الدالة تستطيع تحديد الـProcess الذى يندرج تحت الـjob الذى تريد توزيع الصلاحيات عليه..

    OpenJobObject
    داله لتحديد الصلاحيات وإتحديد من له الحق من خارج الjob فى التعامل معها ...

    UserHandleGrantAccess
    دالة لتغير صلاحيات الـjob اثناء عملها, اى job تستطيع إعطاء صلاحيات جديده لـprocess خارجها..

    QueryInformationJobObject
    داله تستخدم من خارج اى job لمعرفة من له صلاحيات وماهية هذه الصلاحيات..

    TerminateJobObject
    للقضاء عليها وعلى جميع الProcess بداخلها ..
    THREADS

    CreateThread
    نلاحظ ان بعض البرامج تقوم بالتهنيج, اى ان البرنامج لا يتجاوب معى المستخدم, وذلك بسبب ان البرنامج يقوم بعمل ما, للتخلص من هذه الخاصية المزعجة, إذا كان هناك عمل يستغرق وقت يمكنك وضع هذه المهمه فى Thread مختلف..

    ExitThread
    بعد الانتهاء من المهمة يمكنك التخلص منه ..

    اتمنى ان ارى نقاش واسع ومواضيع تتطرق لكيفية التحكم بنظام التشغيل وجعله يعمل لمصلحة برامجنا بدل من ان يقوم بإيقافها او نفقد السيطرة على مجرى عملها..
    هناك الكثير من الدوال التى يجب ان نناقشها وخاصة فى موضوع الـThreading و الـException handling و الـMemory Management و و و مواضيع لا حصر هلا ولم نناقش حتى الان سوى بيئة المستخدم ...

    للحديث بقية

    والسلام عليكم

    كلمات مفتاحية  :

    تعليقات الزوار ()