[WIN32]Erst bei Tastendruck schauen, welche Taste gedrückt wurde?

trench140

Mitglied
Mahzeit,

ich sitze grad an einem Projekt für die Uni. Unter anderem ist es auch Aufgabe, einen Keylogger zu implementieren.

Nun habe ich bereits einen Keylogger gebastelt, der jedoch von der Performance her... sagen wir mal... etwas dürftig ist.

Herzstück ist folgendes Codefragment:

Code:
while(1)
{
for(i=8;i<=190;i++)
{
	if (GetAsyncKeyState(i) == -32767)
	{
		logkey(i,key_file);
	}
}
}

Dabei durchlaufe ich alle Tasten, die ich loggen will und schaue dann, ob dazu ein Tastendruck anliegt. Anschließend logge ich die Taste.

Das Problem ist hier eindeutig die hohe Prozessorlast, sobald ich das Programm starte geht diese von 2% auf etwa 50% hoch.

Daher suche ich nach einer Möglichkeit, das Ganze effizienter zu gestalten, ich hatte da an eine Funktion gedacht, die angibt, ob überhaupt eine Taste gedrückt wurde, so dass ich erst dann checken muss, welche Taste dies denn ist. Allerdings habe ich bis jetzt in der MSDN und per Google irgendwie nichts wirklich Verwertbares finden können. Falls also jemand eine Idee hat, ich würde mich freuen :)

Für die Zweifler:
Es handelt sich um ein Projekt für die Uni im Rahmen eines "Hacker"praktikums:
http://www.nds.rub.de/lehre/praktika/hackerprakt/index.html
 
Dein Problem ist die Endlosschleife ...das ist ne viel zu hohe Abfragrate :D Bau nen Sleep rein und die Prozessorlast wird runter gehen.
 
Da gehen dann bestimmt schon Tastendrücke verloren.

Häng dich lieber mit einem Windows-Hook rein, dann kriegst du alles, wenn es passiert.
 
Hi,

danke euch allen :)

Habs zuerst mit Delay versucht, aber da ging tatsächlich Einiges verloren.
Hab dann ein wenig nach dieser Hook-Geschichte gesucht und dann dazu ein Tutorial gefunden. Der Keylogger funktioniert so zwar auch, aber jetzt werd ich mich erstmal daran machen, das Ganze auch zu VERSTEHEN :D

Nochmals danke,
Gruß, Trench
 

Neue Beiträge

Zurück