Cikk a vizuális c trojan létrehozásának

Hírnév: 0/0

Hogyan hozzunk létre egy Visual C ++ tróját

A programhoz egy Visual C ++ verzióra van szükségünk az ötödik felett, és jobb a C ++,
amely a Visual Studio .NET csomag része. Hozzon létre egy üres munkaterületet vagy megoldást (VS
.NET) és két új, üres Win32 projektet adjon hozzá
Alkalmazás, szerver és kliens. Az aktív konfigurációt azonnal megváltoztatjuk
mindkét projekt Release. Ehhez válassza ki a megfelelő elemet a
a Build menü. Létrehozta? Rendben, most bejutunk a projektekbe
(kattintson a jobb egérgombbal a projekt nevére és válassza a Beállítás) lehetőséget a
Linkert, és adja hozzá a könyvtárat a Objektum / könyvtár modulok sorához
vinsoka wsock32.lib. Anélkül, hogy a programunk nem fog működni. Figyeld meg ezeket
mindkét projekt esetében - mind a szerveren, mind a
ügyfél, mivel mindkettő használni fogja a hálózati funkciókat és
rendelkeznie kell egy hálózati könyvtárral. Add hozzá
project-server új srp fájlt, és indítsa el.

Kezdjük
A program elején meg kell adnunk a fejléc fájlokat
(hiders), amelyek leírják az általunk használt funkciókat. Hozzáférés nélkül
a program hibákat rejt fel, és soha nem fog működni. Ebben
Csak egy hider van, amely leírja a hálózati funkciókat
könyvtár, amit egy kicsit korábban hozzáadtunk.
#include

A következő sorokkal, amelyek rendkívül fontosak a program méretéhez, mi
kivesszük ki az összes extra számlánk PE-fejlécét, és tudassa velünk
A fordító, hogy már van EntryPoint, a belépési pont. Ha ez nem így van
ne, akkor a fordítót ahelyett, hogy a funkciót a pontra írnánk
belépő, írjon saját, hatalmas, és a program mérete 2-ről 28-ra nő
kilo. Egy észrevehető különbség? mosoly, de ha most próbálsz futni
Egy program hibakeresési módban, valószínűleg nem fog működni.

#pragma comment (linker, / MERGE: .rdata = .text)
# megjegyzések megjegyzés (linker, / FILEALIGN: 512 /SECTION:.text, EWRX
/ IGNORE: 4078)
#pragma comment (linker, / ENTRY: WinMain)

Tehát a program legfontosabb dolga volt - a belépési pont, a funkció
amelyet az indítási ellenőrzés után továbbítanak. Négy éves
paraméter, amelyek közül egyik sem szükséges, így a név
paramétereket nem írok, de csak a típusomat írom.

int WINAPI WinMain (HINSTANCE, HINSTANCE.LPSTFUnt)

Továbbá a rendszerleíró adatbázissal való együttműködés funkcióinak használatával beírjuk
SZOFTVER \ Microsoft \ Windows \ CurrentVersion \ Futtassa frissen másolt
hogy a rendszer minden alkalommal indítsa el a rendszert. A trójai betöltött és
kész körkörös védelemre (támadás mosoly).

Végül megkaptuk a legfontosabb kódot, amely nélkül
A trójai nem trójai. Az áldozatadatok megosztásáért felelős webhely
mosolyogsz. Mint valószínűleg már tudjátok a Horrific, a cikkekről
a winsoc ^ a funkciók használatával először inicializálni kell.
Ebben a következő kóddal történik:

ha (bind (listetJ5ock, (LPSOCKADDR) addr_Sock, sizegf (struct sockaddr)))
visszatérés 0;

Ezzel a sorral végül elkezdünk hallgatni a portot, vagyis megnyitni
kapcsolatokhoz. Pontosan, egy kapcsolatra. Az első
paramétert, akkor a változó-socket, amely megnyílik, és a második
- a lehetséges kapcsolatok számát, nem kell többet igényelnünk. Mint a
case with bind'OM, hiba esetén letiltjuk a trójai programot.
ha (listen (listet_Sock, 1)) visszatér 0;

1) Várjuk a kapcsolatot

2) Feldolgozó csapatok

3) Hiba esetén lezárjuk a meglévő kapcsolatokat

4) Gyere vissza az 1-es helyiségbe

A parancsok szövegként fogadják el, amelynek első karaktere
-valójában a funkció kiválasztása, a második - az elválasztó, bármelyik és a többi -
ez az az érv, hogy átadjuk a trójai funkcióinak. Íme egy példa
az ügyfél által küldött parancs: Szia. Troyan először az elsőt veszi
két karaktert, és ellenőrizni fogja, hogy van-e függvényünk a m ​​szimbólumhoz
(ez az üzenet kimenete). Ezután még további 126 karaktert kell betöltenie
a mi funkciónkat. Vagyis a hurokban lévő trójai a RECV függvényt veszi
az aljzatkapcsolat hackelése után jött létre Csatlakoztassa az adatokat kétszer, az elsőben
puffer 2 byte, és a második 126. Ha az adatok nem érkeznek be
A CommandLoop befejeződik a megszakítási paranccsal, a foglalat bezár és
a szerver újra meg fogja várni a kapcsolatot. A trójai funkciókat részletesebben leírjuk:
Ha az első karakter m, akkor a MessageBox (0, buf, Hacked
mosoly, 0), ahol a buf a második puffer.

Ha az első karakter e, akkor a string buf végrehajtása cmd.exe c alatt történik
paraméter / c, olyan függvény, amely ilyen paraméterekkel rendelkezik
ShellExecuteA (NULL, oren, cmd.exe, buf_command, NULL, SW_H1DE),
ahol a buf_command a puffer a hozzáadott sorral. egy
SW_HIDE azt jelzi, hogy az áldozat nem látja a feltörekvő embereket
konzolt. És az utolsó, a legbonyolultabb feladat, a letöltés
fájl az áldozat gépéből. Ez akkor valósul meg, ha az első karakter -
ez f. Először megnyitja a fájlt csak olvasható funkcióhoz
QpateFile. És akkor, ha a fájl létezik, egy hurkot küld 4096-nak
bájtja ennek a fájlnak. Ha több bájt küld ki, akkor ez a vég
fájl és a hurok megszakad. Az ügyfélnek jelzés, hogy a fájl vége,
lekapcsolódik.

A kliens, minden olyan program, amely képes küldeni
az áldozat által megadott formátum csomagja. Enyhén csatlakozni a szerverhez
és végrehajt egy parancsot, mint: send (sock, m Hello, 128.0). De mindenki számára
Írtam egy klienst, amely a parancssorból és a
ötlet könnyen átvihető bármilyen platformra. Trójai parancs küldése
a kliens client.exe [ip áldozat] [függvény] [argumentum],
például: client 127.0.0.1 m Hello.

Kapcsolódó cikkek