PDA

View Full Version : سوال: متوجه شدن تغییرات در سیستم



saate777
چهارشنبه 27 خرداد 1388, 12:19 عصر
با سلام
من یه سوال کوچیک دارم که امیدوارم توضیح کلی ندید بلکه بیشتر کد رو بدید(ممنونم)!
چه طور میشه یه تغییر توی سیستم رو متوجه شد بدون اینکه دائما اونو چک کنیم


مثلا تمام ویروس ها یه کلید میذارن توی رجیستری هر وقت اونو پاک کنیم متوجه میشن دوباره می سازنش یا هر وقت که به اینترنت وصل میشیم سریع آنتی ویروس می فهمه که ما کانکت شدیم اونوقت پیغام میده که آپدیت می شویمو...

saate777
چهارشنبه 27 خرداد 1388, 12:22 عصر
البته امیدوارم جواب این نباشه که سیستم عامل بهش میگه چون مثلا در مورد آنتی ویروس این میتونه منطقی باشه اما در مورد ویروس چی سیستم عامل بهش میگه یه تغییر تو رجیستری دادن اونم میره کلیدشو دوباره می سازه!!! یا خودش مثلا هر 10 ثانیه چک می کنه( که این روش 100%غیر منطقیه) بازم خواهش میکنم برای روشن شدن مطلب کد رو بنویسید!
مرسی

حامد مصافی
چهارشنبه 27 خرداد 1388, 12:46 عصر
خواهش می کنم ...

من یه سوال کوچیک دارم که امیدوارم توضیح کلی ندید بلکه بیشتر کد رو بدید(ممنونم)!
اختیار دارید، بنده خواهش می کنم دوست عزیز. قرانین سایت را برای شما نوشته اند.

tdkhakpur
چهارشنبه 27 خرداد 1388, 14:18 عصر
سلام
خوب شما هم یک برنامه بنویس که اون کلید را از رجیستری پاک کنه وقتی ویروس عزیز دوباره داخل رجیستری نوشت برنامه شما پاکش کند.

Nima_NF
چهارشنبه 27 خرداد 1388, 14:33 عصر
در ویندوز و هر سیستم عامل پیشرفته دیگر، برای این سری از کارها توابع API مخصوص وجود دارد که بر اساس پیام کار می کنند. یعنی تا زمانی که مثلا کلید مورد نظر شما در رجیستری تغییر نکرده است تابع API مقدار بر نمی گرداند.

اینکه بخواهید برایتان تمامی این توابع را لیست کنم اصلا امکان پذیر نیست، باید از MSDN استفاده کنید و آشنایی با win32 API داشته باشید.

برای مثال تابع API با نام RegNotifyChangeKeyValue کلید مورد نظر شما را مانیتور می کند تا تغییری در آن روی دهد، یک آنتی ویروس تمامی کلید هایی را که مهم یا سیستمی هستند را ابتدا برای پشتیبان ذخیره می کند و سپس اگر تغییری داده شد می تواند آن را به کاربر اطلاع دهد یا مجددا به حالت قبل بر گرداند.

در این مورد قبلا مثال هایی در بخش ++visual C زده بودم، اما متاسفانه سیستم غیر فعال شده جستجوی سایت امکان یافتن آن ها را نمی دهد!





HKEY hKey ;
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
TEXT("SYSTEM\\CurrentControlSet\\Control\\ProductOptions"),
0, KEY_NOTIFY, &hKey );

lErrorCode = RegNotifyChangeKeyValue(hKey, TRUE, dwFilter, hEvent, TRUE);


مثال در انتهای این لینک در MSDN:
http://msdn.microsoft.com/en-us/library/ms724892(VS.85).aspx (http://msdn.microsoft.com/en-us/library/ms724892%28VS.85%29.aspx)


برای اینرنت هم، معمولا برای اتصالات dial-up توابعی هست که بنده یادم نیست.
اما برای سایر ارتباطات اینترنتی معمولا بهترین و کامل ترین روش این هست که در فواصل زمانی مختلف به سروری/سایتی متصل می شوند تا وصل شدن به اینترنت را تست کنند. بار ها در فروم در بخش ++visual C مثال زده شده است و سوال شده است.
حتی آنتی ویروس ها هم برای auto update خود نمی آیند هر ثانیه چک کنند که اگر وصل هست به روز رسانی شود، بلکه طبق زمان بندی هر چند دقیقه تست اتصال و update انجام می شود. (مثلا برای nod32 هر 60 دقیقه طبق schedular خودش )

در این لینک هم مثال هایی برای دریافت خودکار اتصال اینترنتی زده شد:
http://barnamenevis.org/forum/showthread.php?t=107469

saate777
دوشنبه 01 تیر 1388, 15:15 عصر
بسیار متشکرم!
حالا می رم تست کنم ...
بازم مرسی