[Win API] keylogger rubrika: Programování: Jiné

7 xxar3s
položil/-a 10.6.2013
 
upravil/-a 10.6.2013

Naprogramoval som si jednoduchy keylogger.

V nekonecnom cykle (na novom threade) prechadzam vsetky kody klaves ulozene v enumeracii System.Windows.Forms.Keys a funkciou GetAsyncKeyState kontrolujem ci klavesa bola stlacena, v pripade ze bola stlacena hodnotu klavesy si odchytim. Takze pri stlaceni klavesy dostavam asynchronne jednu z hodnot enumeracie System.Windows.Forms.Keys napriklad po stlaceni klavesy "1" dostavam klavesu "D1" po stlaceni laveho shiftu dostavam klavesu "ShiftLKeyButton" atd. Bohuzial neviem na aku hodnotu je konkretna klavesa namapovana.

Skusal som na tento ucel pouzit WinAPI funkciu MapVirtualKey, ale ta ma 2 problemy:

  1. Ked stlacim klavesu s malym pismenom (a-z), funkcia mi ho vracia velke (nameisto a vrati A), neprisiel som na to preco, ale vsetky ostatne klavesy mapuje korektne.
  2. Funkcia MapVirtualKey mapuje klavesy podla toho ake rozlozenie klavesnice pouziva Keylogger a nie podla toho ake rozlezenie klaves pouziva konkretny program. To znamena ze ak som kelogger spustil so Slovenskou klavesnicou a iny program z ktoreho chcem odchytavat klavesy je prepnuty na Anglicku tak dostanem ajtak namapovane hodnoty podla slovenskej klavesnice. Co s tym?
odkaz
5 René Stein
odpověděl/-a 28.6.2013
 
upravil/-a 28.6.2013

O co přesně usilujete?

1) Pokud chcete skutečně napsat keylogger, tak je mnohem lepší psát keylogger v nativním kódu. A za pomoci HOOKů. :)

2) O jakou "hodnotu" klávesy vám jde (Cituji "Bohuzial neviem na aku hodnotu je konkretna klavesa namapovana.") Zkusil jste přetypovat hodnotu Keys z enumerace na int? To není hodnota, o kterou máte zájem? Znáte třídu KeyInterop a její metody KeyFromVirtualKey a VirtualKeyFromKey - http://msdn.microsoft.com/en-us/library/system.windows.input.keyinterop....

3) Můžete sem dát kód, jak pracujete s MapVirtualKey a jaké argumenty ji předáváte? Tato API funkce přeci jen podporuje docela dost voleb.

4) Můžete zjistit, co v procesu, kde máte problémy s body 1 a 2, obsahují zprávy WM_CHAR, WM_SYSCHAR, WM_DEADCHAR, WM_SYSDEADCHAR?

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.