Keylogger

Tags:    c++

<< < 12 > >>
Hej,

Jeg vil gerne lave en baggrundsproces, man kun kan se kører i f.eks. Task Manager.. Denne skal logge hver eneste knap, jeg trykker på og gemme den i en tekstfil.
Jeg søger ikke en komplet kode eller et link til én, men en idé eller en metode til at gøre det på.
Jeg kan det grundlæggende i sproget.

// Anders Tornvig



Indlæg senest redigeret d. 09.08.2006 22:53 af Bruger #10105
20 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du kan starte med at kikke på:
http://home20.inet.tele.dk/midgaard/snip/rmkey.html

I LowLevelKeyboardProc indeholder HookStruct al den information du behøver.



Tak for linket.
Jeg er nået frem til det her:
Fold kodeboks ind/udKode 


Men jeg får følgende compilerfejl:
Fold kodeboks ind/udKode 


Linje 27 er:
Fold kodeboks ind/udKode 



Håber nogen lige vil tage et kig på det og fortælle, hvad der er galt.



Indlæg senest redigeret d. 10.08.2006 12:18 af Bruger #10105
Det er "kun" en warning.

Du kan rette denne og den anden fejl med:
Fold kodeboks ind/udKode 


Men er det ikke lettere at bruge en std::ofstream?



Ok, tak. Jeg tog dit forslag til mig med ofstream og koden compiler også fint nu.
Jeg har dog stadig problemer, for den gør ikke det, jeg vil have den til. Koden ser nu således ud:

Fold kodeboks ind/udKode 


Programmet lukker bare med det samme igen, hvilket jo er klart set udfra koden. Meningen er jo, at det skal køre "usynligt" i baggrunden og logge alle knapper, jeg trykker på. Pt. er det synligt, lukker med det samme og skriver derfor heller ikke noget til filen.

Nogen, som kan hjælpe en smule med dette?



Du kan lave det som et windows program (så undgår du konsol vinduet) og lave en uendelig loop i enden af main (i.e. WinMain), noget i stil med:

Fold kodeboks ind/udKode 




ok, jeg har nu lavet det til et windows program, hvilket gør som jeg gerne vil, bortset fra ikke at skrive et tryk til logfilen. Den timer derimod nærmest ud, når jeg trykker på en knap, og jeg bliver nødt til at vente et par minutter før computeren er til at bruge igen.

nogen idéer?



Så, nu er jeg endeligt kommet tættere på en løsning.
Ud fra din kode, Bertel, på din hjemmeside, er jeg kommet frem til:

Fold kodeboks ind/udKode 


Der er dog stadig ting, som jeg gerne vil have ændret, men ikke ved hvordan. Som sagt skal man ikke kunne se, at programmet kører. Grunden til at programmet bliver set nu, er jo message boksen. Jeg leder altså efter et alternativ til at "pause" programmet før det når at slutte.

Derudover gentager den hver knap jeg trykker på i filen. F.eks. anders bliver til AANNDDEERRSS. Hvorfor og er der en løsning?

Til sidst vil jeg gerne have den til også at logge andre knapper end tal og bogstaver. F.eks. bliver Enter og Backspace logget med firkanter. Hvorfor og er der en løsning? Pt. "oversætter" jeg jo tallene ved bare at skrive "(char)".

Håber der er nogen, der vil hjælpe : )



Du skal ikke have "return true" i LowLevelKeyboardProc, medmindre at du vil have den til at smide taste trykket væk.

wParam i LowLevelKeyboardProc fortæller hvilken tast det er. Den kan være: WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, eller WM_SYSKEYUP. Hvis du kun vil registrere tasterne én gang kan du nøjes med at skrive i filen når wParam er WM_KEYDOWN eller WM_SYSKEYDOWN.

Det bør virke med

while(1)
Sleep(10000000);

I stedet for MessageBox(...)

Du kan bruge isprint fra ctype.h til at finde ud af om tasten er et normalt tegn. Hvis ikke det er det kan du skrive int værdien for tasten i filen.



Ok, mange tak. Jeg kan dog stadig ikke få det med while og sleep til at virke. Den går helt i stå ligeså snart, jeg har programmet åbent og trykker på en knap. Ved du hvorfor?

Samtidig forstår forstår isprint funktionen ikke nok til at "oversætte" alle knapper.. Skal jeg virkeligt til at skrive oversættelser til hver knap?





Prøv at poste hele din kode, så er det muligt at jeg kan se hvad der sker.

Om du skal skrive en "oversætter til hver knap kommer nok an på hvad du vil have.

Prøv at fortælle hvad du vil have af output, så finder vi nok en løsning.



<< < 12 > >>
t