ورود

View Full Version : برنامه‌ای برای پاکسازی خرابکاری ویروس



problem
جمعه 09 آذر 1386, 12:52 عصر
سلام. شاید شما هم گرفتار اون ویروس شده باشید که بالای صفحه نوار زردی می‌اندازه و یک سری جملات نامربوط نشون می‌ده. ویروس رو اکثر آنتی‌ویروس‌ها شناسایی می‌کنن (مثلاً Kaspersky بهش می‌گه Malas.c و محصولات Symantec بهش می‌گن Win32.Linkfars) و پاکش هم می‌کنن. اما ویروس یک سری خرابکاری دیگه هم می‌کنه (دستکاری رجیستری، اضافه کردن autorun.inf در درایوها و غیره) که هیچ آنتی‌ویروسی این‌ها رو بر نمی‌گردونه.

من خودم دستی تمام این‌ها رو بر می‌گردونم (که چیزی حدود ۵ دقیقه وقت می‌بره) اما، خیلی از دوستام نمی‌تونن این کار رو بکنن. برای همین به ذهنم رسید که یک برنامه بنویسم که همهٔ این کارهارو پشت سر هم بکنه.

من تا حالا با ++C برنامه ننوشتم اما با این زبان آشنایی نسبی دارم. می‌خواستم خواهش کنم که کد یک برنامه که این سه تا کار رو پشت سر هم می‌کنه برام بگذارید، تا من خودم گسترده ترش کنم و بعد با Microsoft Visual Studio 2005 کامپایل کنم بدم دست این بندگان خدا.

۱) فایل autorun.inf رو از \:C پاک می‌کنه (حتی اگر attrib شده باشه).
۲) یک رکورد رو (هر چی دلتون خواست بگذارید، خودم عوضش می‌کنم) از رجستری پاک می‌کنه.

راستی در مورد دو تا چیز دیگه هم راهنمایی‌ام کنید:

۱) کامپایل عادی کنم کافیه، یا باید تنظیم خاصی انجام بدم تا نتیجه کامپایل روی Visual Studio 2005 رو بشه رو کامپیوترهایی که این برنامه رو ندارن اجرا کرد؟ (می‌خوام فقط به DLLهای خود ویندوز وابسته باشه)

۲) آیا می‌شه برنامه‌ای نوشت که Processهای باز رو بگرده، و اگر موردی دید با اسم خاص که از دایرکتوری خاصی اجرا شده بود، End Task بکندش؟

ببخشید زیاد شد

Nima_NF
جمعه 09 آذر 1386, 22:43 عصر
متاسفانه من وقتش را ندارم که این کار ار انجام بدم ولی اینها کمک هایی هست که من می توانم انجام دهم:
(برای اطلاعات بیشتر در سایت مایکروسافت یا MSDN جزییات را مشاهده کنید)

1) برای ساخت و یا پاک کردن فایل:
CreateFile
ReadFile

2) برای دستورات رجیستری از این دستورات استفاده کنید:
(نیازمند هدر فایل Windows.h و لینک کردن به فایل Advapi32.dll هست)
RegCreateKeyEx
RegCloseKey
RegDeleteKey
RegOpenKeyEx
RegSaveKey

3) بعد از کامپایل به صورت release در VC 2005 نیاز به چند فایل dll هستید که می توانید انها را از پوشه drive: VS2005\VC\redist\x86\Microsoft.VC80.CRT در فلدر فایل exe شما کپی کنید وکل فلدر را به دیگران بدهید تا برنامه شما در هر دستگاهی اجرا شود.

4) با دستورات همیشه نمی توانید هر پروسه ای را که به شما اجازه نداده باشد , کنسل کنید ولی در هر حال اگر این مجوز را داده باشد از دستورات زیر استفاده می کنیم:
TerminateProcess
و برای یافتن پروسه مورد نظر(با تست تک تک پروسه ها):
EnumProcesses
Process32First
Process32Next

problem
شنبه 10 آذر 1386, 14:14 عصر
عالی! همین هم می‌تونه کمک بزرگی باشه. فقط باید یه کم توی msdn هم بگردم، که اون دیگه کار خودمه!

problem
شنبه 10 آذر 1386, 22:08 عصر
با دستورات همیشه نمی توانید هر پروسه ای را که به شما اجازه نداده باشد , کنسل کنید
منظور دقیقاً چیه؟ اگر پروسه مورد نظر با همان اکانتی اجرا شده باشه که برنامه من اجرا می‌شه، و اکانت Admin باشه و پروسه هم Service نباشه، آیا کافی نیست؟ شرط دیگه‌ای هم لازم داره تا بشه قطعش کرد؟

Nima_NF
یک شنبه 11 آذر 1386, 00:28 صبح
در بستن پروسه مشکلی وجود ندارد ، فقط منظورم این بود که پروسه باید حق دسترسی PROCESS_TERMINATE را داشته باشد تا بتوان آن را با تابع مذکور به راحتی و بدون هیچ دردسری بست. که تقریبا همیشه این حق را دارد.