Thread Tastatureingaben Einlesen
(4 answers)
Opened by ~Br4inP4in~ at 2007-06-18 23:59
[quote=GwenDragon,19.06.2007, 13:59][...] Assembler ist nicht vonnöten. [...][/quote]
Wenn ich das richtig im Kopf habe, kann man zwar mit der Win32-API einen Tastaturhook setzen, dieser wird dann aber nur für Eingaben an das aktuell laufende Programm aufgerufen. Deswegen ist die einfachste Möglichkeit, einen systemweiten Keylogger zu installieren, eine DLL zu schreiben, welche in ihrer Initialisierungsroutine den Tastaturhook setzt, und diese DLL dann allen laufenden Prozessen unterzuschieben. Dieses Unterschieben ist aber nicht völlig trivial, denn es erfordert, dass man einen DLL-Ladecode in den Adressraum des Zielprozesses injiziert und dann auch ausführt. Das geht entweder, indem man einen Pufferüberlauf im Zielprozess ausnutzt oder einfacher indem man nach der Codeinjektion über Debuggerfunktionen die Laderoutine als ferngesteuerten Thread starten lässt. Man braucht hier aber als Ladecode wenn möglich positionsunabhängigen Code, der auf keinerlei globale Objekte zugreift. Ich denke, dass es zwar möglich ist, diesen in C oder einer anderen Hochsprache zu erstellen, aber mit Assembler dürfte das fast einfacher gehen. (edit: Zum Beispiel muss man in diesem Ladecode alle Relokationen für benötigte Win32-API-Symbole von Hand ausführen, womit dann die Verwendung einer Hochsprache fast schon witzlos wird.) Auf jeden Fall kommt man nicht mit purem Perl aus, wenn man den Maschinencode für die DLL und die injizierte Routine nicht von Hand erstellt.\n\n <!--EDIT|murphy|1182257841--> When C++ is your hammer, every problem looks like your thumb.
|