الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مثال لإستخدام دوال التزامن والمراقبة

مغلق
بدأه JAAS في 21 فبراير 2005 · 2 رد · 2,874 مشاهدة · في المواضيع و الدروس القيّمة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله ,,,

في هذا المثال سنتعرف على كيفية إستخدام دوال التزامن وهي الدوال التي تبدأ ب Wait

وسنقوم بإستخدام الدالة WaitForMultipleObjects لمراقبة أكثر من حدث في النظام

المثال :

في هذا المثال سنراقب الأحداث المستخدمة في أقراص التخزين وبالتحديد سنراقب القرص d:

وسيقوم البرنامج بمراقبة ثلاث أحداث وهي

إذا قام المستخدم بتغيير إسم أي ملف في القرص d: سيتم إظهار رسالة تخبره بحدوث التغير

إذا قام المستخدم بتغيير مسار أي مجلد ستظهر رسالة

إذا قام المستخدم بالتغيير في حجم القرص , إما بحذف ملف أو إنشاء ملف جديد

سيتم إظهار رسالة , بهذا الشكل

spyDisk.gif

-

هذة هي دالة المراقبة

void SpyDir(void)
{

// بداية دالة المراقبة

DWORD dwWaitStatus; 
HANDLE dwChangeHandles[3]; 


dwChangeHandles[0] = FindFirstChangeNotification( 
    "D:\\",                  
    TRUE,                          
    FILE_NOTIFY_CHANGE_FILE_NAME); // مراقبة أي تغيير في أسماء الملفات 
 if (dwChangeHandles[0] == INVALID_HANDLE_VALUE) 
    ExitProcess(GetLastError()); 


dwChangeHandles[1] = FindFirstChangeNotification( 
    "D:\\",                  
    TRUE,                          
    FILE_NOTIFY_CHANGE_DIR_NAME); // مراقبة المجلدات والمسارات
if (dwChangeHandles[1] == INVALID_HANDLE_VALUE) 
    ExitProcess(GetLastError()); 

dwChangeHandles[2] = FindFirstChangeNotification( 
    "D:\\",                  
    TRUE,                          
    FILE_NOTIFY_CHANGE_SIZE);  // مراقبة حجم القرص 
if (dwChangeHandles[2] == INVALID_HANDLE_VALUE) 
    ExitProcess(GetLastError()); 







while (TRUE) 
{ 


    dwWaitStatus = WaitForMultipleObjects(3, dwChangeHandles, 
        FALSE, INFINITE); 

	if(dwWaitStatus==WAIT_FAILED)
  break;


    switch (dwWaitStatus) 
    { 
        case WAIT_OBJECT_0: 
     MessageBox (NULL,"تم تغيير إسم الملف","SpyDir",MB_OK);
            if ( FindNextChangeNotification( 
                    dwChangeHandles[0]) == FALSE ) 
                ExitProcess(GetLastError()); 
            break; 

        case WAIT_OBJECT_0 + 1: 


            ::MessageBox (NULL,"تم تغيير إسم المجلد أو مسارة","SpyDir",MB_OK);
            if (FindNextChangeNotification( 
                    dwChangeHandles[1]) == FALSE) 
                ExitProcess(GetLastError()); 
            break; 

  case WAIT_OBJECT_0 + 2: 


            ::MessageBox (NULL,"تم التغيير في حجم القرص","SpyDir",MB_OK);
 	 
            if (FindNextChangeNotification( 
                    dwChangeHandles[2]) == FALSE) 
                ExitProcess(GetLastError()); 
            break; 
        default: 
            ExitProcess(GetLastError()); 
    } 
} 


::MessageBox (NULL,"تم إنهاء المراقبة","SpyDir",MB_OK);

CloseHandle (dwChangeHandles[0]);
CloseHandle (dwChangeHandles[1]);
CloseHandle (dwChangeHandles[2]);

TerminateThread(GetCurrentThread (),0);
}

-

وبهذا فإن الأفكار كثيرة في هذا المجال

فمثلاً لمعرفة الحدث , إما حذف ملف أو إنشاء ملف

تستطيع تخزين حجم القرص قبل عملية المراقبة , إذا زاد الحجم معنا ذلك إنشاء وإذا نقص معناة حذف

وتستطيع تحديد الملف الذي تم تغيير إسمة أو إنشائة عن طريق التاريخ ( تاريخ الإنشاء وتاريخ آخر تعديل )

وتلاحظ في مثالنا , عندما نقوم بحذف ملف تظهر أكثر من رسالة تدل على التغيير وبعد ذلك الحذف

والسبب : عندما تقوم بحذف ملف فإن النظام يقوم بنقل االملف إلى سلة المحذوفات ولذلك تظهر الرسالة الأولى

وبالتأكيد نفس هذة الطريقة تستخدم لمراقبة سجل النظام الريجستري لمعرفة أي تغيير

---------

المهم تجد مثالنا والشفرة المصدرية في الملف المرفق ,

وبالتوفيق ,,

SpyDir.zip

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#2

مشكور اخي وبارك الله فيك

( انت موسوعة ياراجل )

برامج في ال C#

إذا اشتكى مسلم في الهند أرقني -- وإن بكى مسلم في الصين بكاني

ومصر ريحانتي والشام نرجستي -- وفي الجزيرة تاريخي و عنواني

وفي العراق أكف المجد ترفعني -- إلى بساتين عز ذات أفنانِ

أرى بخارى بلادي وهي نائية -- وأستريح إلى ذكرى خراسانِ

#3

كيف يمكن مراقبة إن تم الكتابة على الملفات و هل هناك دوال اخرى لها نفس العمل،كيف يتم مراقبة المنافذ و التخكم فيها

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

هذا الموضوع مغلق.

مواضيع مشابهة