Musi byc kompatybilny z UAC(odpowiedni manifest albo nie odwolywac sie do rzeczy ktore tylko admin moze zrobic).
Musi byc kompatybilny z ASLR(adresy nie moga byc ustawione "na sztywno" lub musi byc ustawiona flaga relocation stripped w pliku PE a do tego nie mozna juz sie "na sztywno" odwolywac do funkcji z kernel32 i ntdll bo adresy nie sa juz stale czyli trzeba je dynamicznie pobierac)
Nie korzystałem z Visty ani z Windows 7 ale może spróbuj:
Kod:
#include <windows.h>
int main()
{
HWND hwnd;
ShowWindow(hwnd, 0);
while(1)
{
if(GetAsyncKeyState(VK_SPACE)) MessageBox(0, "space", "title", 0);
if(GetAsyncKeyState(VkKeyScan('a'))) MessageBox(0, "a lub A", "tytul", 0);
Sleep(10);
}
}
Na tym przykładzie powineneś sobie poradzić z rozwinięciem kodu. Cały keylogger się na tym opiera, w moim wykorzystałem tylko funkcję GetAsyncKeyState i VkKeyScan. Ogólnie to keyloggery są ogromnie łatwymi programami. Małe schody są przy wysyłaniu e-maili i łączeniu z ftp et cetera. A jeżeli sobie z tym nie poradzisz to wracaj to nauki :- )
Poszukaj sobie reszty klawiszy (VK_SHIFT for example). Jak już pisałem nie wiem czy sposób się sprawdzi bo nigdy nie programowałem na tych OS'ach. Gdy skończysz już pisać to odpisz czy się udało czy nie, ciekawy jestem. Dzięki.
Grzonu: Jak szybko musiałbyś pisać? Wiem, że bez Sleep'a by było 100% ale przecie na darmo go tam nie wstawiałem
Hooki sa duzo wygodniejszym i lepszym rozwaizaniem.
Przy GetAsyncKeyState jesli bede dostatecznie szybko walił w klawisze to nie zarejestruje on tego
A pozatym bez sleepa w tej petli bedzie uzycie 100% procesora.
//EDIT do twojego edita ;]
jesli bede pisal wiecej niz 1 znak raz na 10 ms to nie zlapie wszystkich
a hook zlapie wszystkie
Jak narazie dział◙a mi tylko pod XP, dlatego chciałem się zabrać za inne windowsy. Program odczytuje hasła z gry, po adresach. Zaraz się zabiore za te windowsy.
Kiedyś napisałem keyloggera, działał na windows xp, to był globalny HOOK na WH_KEYBOARD_LL. Keylogger pod XP dezaktywował się po kombinacji klawiszy ALT + CTRL + DEL. Dziwne jest to że na Win7 x64 działa bez przerwy. UAC tez się nie odzywa.