عندي مشروع Anti Virus وأود أن أضع ميزة
المراقبة لملفات النظام
ومراقبة الريجستري
والمنافذ المفتوحة
أنا أسأل عن كيفية عمل ذلك
عندي مشروع Anti Virus وأود أن أضع ميزة
المراقبة لملفات النظام
ومراقبة الريجستري
والمنافذ المفتوحة
أنا أسأل عن كيفية عمل ذلك
كل أنواع المراقبة يجب أن تدخل بها دوال التزامن
مثل الدالة WaitForMultipleObjects
لها مئة إستخدام , وهنا شرحنا مثال لمراقبة القرص الصلب
يمكن إستخدام أغلب دوال التزامن بنفس الطريقة
مثل الدالة WaitCommEvent
لمراقبة منافذ الجهاز ( مثل المودم وبقية منافذ الهاردوير )
أما عن مراقبة منافذ الشبكة فهنالك عدة طرق , مثلاً برنامج الزون الارم يستخدم دوال rpc
تجدها في ملف الهدر rpc.h
والطريقة الثانية إستخدام الحزم
أغلبها موضح هنا
وبالتوفيق ,,,
*************************************************
مجموعة مواضيع - إحتراف البرمجة -
ّ~~~~~~~~~~~~~~~~~~~~~~
البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة
آخر المواضيع :
أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات
ثغرة SMS لأجهزة الجوال Siemens 3568i !
أخطاء وثغرات البرامج العربية !!!
سلسلة مواضيع - أمن وحماية مواقع الويب -
E البرمجة المتقدمة X للملفات التنفيذية E
سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة
**************************************************
<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>
**************************************************
أشكرك على هذا الرد القوي والسريع والدعم
على كذا أبشر بالمشاريع الجادة ان شاء الله
اقتباسمثل الدالة WaitCommEventلمراقبة منافذ الجهاز ( مثل المودم وبقية منافذ الهاردوير )
المشكلة هنا كما أعرف أننا نحتاج ل handle من نوع الجهاز نفسه لنستمع إليه , ولو كان مثلا الموديم يعمل وأردنا فتح الموديم بالدالة CreateFile لنحصل على Handle فلن يمكننا فعل ذلك حيث الموديم يقوم بفتح الجهاز بشكل حصري ولايمكن الحصول على Handle منه . وإلا لإستطعنا أن نحصل على البيانات التي تمر على الموديم بسهولة كبيرة .
هل يوجد حل لهذه المشكلة ؟
مثلا هذا الكود سيسبب مشكلة في حال كان المنفذ com1 مفتوحا !
#include <windows.h>
#include <assert.h>
#include <stdio.h>
void main( )
{
HANDLE hCom;
OVERLAPPED o;
BOOL fSuccess;
DWORD dwEvtMask;
hCom = CreateFile( "COM1",
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // default security attributes
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
printf("CreateFile failed with error %d.\n", GetLastError());
return;
}
// Set the event mask.
fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);
if (!fSuccess)
{
// Handle the error.
printf("SetCommMask failed with error %d.\n", GetLastError());
return;
}
// Create an event object for use by WaitCommEvent.
o.hEvent = CreateEvent(
NULL, // default security attributes
FALSE, // auto reset event
FALSE, // not signaled
NULL // no name
);
// Intialize the rest of the OVERLAPPED structure to zero.
o.Internal = 0;
o.InternalHigh = 0;
o.Offset = 0;
o.OffsetHigh = 0;
assert(o.hEvent);
if (WaitCommEvent(hCom, &dwEvtMask, &o))
{
if (dwEvtMask & EV_DSR)
{
// To do.
}
if (dwEvtMask & EV_CTS)
{
// To do.
}
}
else
{
DWORD dwRet = GetLastError();
if( ERROR_IO_PENDING == dwRet)
{
printf("I/O is pending...\n");
// To do.
}
else
printf("Wait failed with error %d.\n", GetLastError());
}
}لا أعلم
ولكن أعني بالمنافذ المنافذ التي تستخدمها trojan
يعني أقوم بعرض المنافذ والبرامج التي قامت بفتحها
بحيث يكون عندي قائمة بالمنافذ وأسماء trojan ويمكنني إغلاق المنافذ
لكن كيف أعلم أن برنامجا معين قام بطلب إتصال؟
وكيف أحمي الجهاز قبل تنزيل المرفقات؟ (قد أعرف إذا راقبت القرص الصلب من حيث إنشاء الملفات)
اقتباسفلن يمكننا فعل ذلك حيث الموديم يقوم بفتح الجهاز بشكل حصري ولايمكن الحصول على Handle منه . وإلا لإستطعنا أن نحصل على البيانات التي تمر على الموديم بسهولة كبيرة .هل يوجد حل لهذه المشكلة ؟
يوجد أكثر من حل ؟!
الحل المستخدم في برامج مراقبة المنافذ هو كالتالي :
كتابة ملف يعمل في مستوى النظام - ملفات ذات الإمتداد sys أو vxd
هذا الملف وضيفتة مراقبة أو قرائة مخزن البيانات للبرنامج المسؤل عن تشغيل المودم
والشغلة بسيطة وليست معقدة ,, فقط تحتاج لصلاحيات الوصول لمخزن البيانات
سأبحث عن كود أو مثال يتحدث عن هذا الموضوع ,,
الحل الثاني:
اقتباسمثلا هذا الكود سيسبب مشكلة في حال كان المنفذ com1 مفتوحا
هذا هو الحل ,, الكود الذي كتبت , ولكن تحتاج إقاف البرنامج الحالي الذي يستخدم المنفذ
والطريقة هي بتغير القيم في الريجستري لتحدد أنت البرنامج المسؤل عن كل أحداث المودم
وفي هذة الحالة ستضطر لكتابة برنامج ضخم يتحكم في كل الأحداث
ولذلك تجد هذا الحل مستبعد في برامج المراقبة - ويطبق في برامج تطوير الإتصالات
-
اقتباسلكن كيف أعلم أن برنامجا معين قام بطلب إتصال؟
تقصد فتح منفذ ,, لا أعتقد أنة توجد طريقة غير توابع RPC المستخدمة في الزون آلارم وغيرة
أما إذا أردت البحث عن المنافذ المفتوحة
أسهل طريقة هي الدالة listen ويمرر لها رقم المنفذ - إذا أعادت خطأ يعني مشغول أو مفتوح
-
-
*************************************************
مجموعة مواضيع - إحتراف البرمجة -
ّ~~~~~~~~~~~~~~~~~~~~~~
البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة
آخر المواضيع :
أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات
ثغرة SMS لأجهزة الجوال Siemens 3568i !
أخطاء وثغرات البرامج العربية !!!
سلسلة مواضيع - أمن وحماية مواقع الويب -
E البرمجة المتقدمة X للملفات التنفيذية E
سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة
**************************************************
<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>
**************************************************
أشكرك على مجهودك الكبير في خدمة هذا المنتدى
هذا الموضوع مغلق.