|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
[c++] key logger
che funzione delle api posso usare per poter registrare i tasti premuti sulla tastiera??
grazie ciao |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Iniziati a guardare questo argomento:
http://windowssdk.msdn.microsoft.com.../ms632589.aspx In particolare questa API: http://windowssdk.msdn.microsoft.com.../ms644990.aspx Quello che devi realizzare è una DLL con una funzione di callback compatibile con LowLevelKeyboardProc: http://windowssdk.msdn.microsoft.com.../ms644985.aspx |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
in giro non c'è qualche esempio vero???
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Certo, basta cercare...
http://www.codeproject.com/dll/keybo...select=1259703 C'è sicuramente anche molto altro... |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
ma si puo fare solo con una dll??
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Certo, altrimenti la callback di hook non può essere raggiunta dagli altri processi...
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Avrei sottomano un programma che feci a suo tempo per un esame, il quale, non appena premi il tasto F9, mostra una finestra di dialogo.
Ovviamente, invece di mostrare una finestra di dialogo, potresti sapere che il tasto è stato premuto: estendendo semplicemente il concetto a tutti i tasti... Se ti interessa lo posto. EDIT: se non ricordo male, la DLL la caricavo senza lo stub (quindi più semplice da compilare il sorgente, ma leggermente più complicato per reperire i nomi delle funzioni che la DLL esporta, ma del resto sperimentavo per fare bene l'esame
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
i Low Level Hook non necessitano di DLL, può anche essere un normale eseguibile; però il thread che installa l'hook deve avere una coda di messaggi.
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ah, comunque ricordo che un key logger fatto in questa maniera è visibilissimo:
1) perché mamo139 vuole farne un eseguibile, e quindi lo si termina tranquillamente da Task Manager 2) perché anche se fosse una DLL esistono programmi che elencano i moduli di ciascun processo e permettono di scaricarli (io stesso ne ho realizzato uno) 3) perché è possibile intercettare e fermare i messaggi tramite il quale sono implementati i Low Level Hooks; e una volta intercettati è anche possibile sapere a quale thread erano indirizzati. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' vero, fanno un cambio di contesto per ogni evento...però nell'esempio che avevo linkato usavano la DLL perchè gestivano i tasti con questo hook: http://windowssdk.msdn.microsoft.com.../ms644984.aspx
71104: te che ci capisci più di me in questo tipo di cose, quale dei due conviene usare ? Il LowLevel è rallenta un po' tutto il sistema, no ? |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Suppongo che mamo139 sia interessato al Key Logger per imparere...sbaglio ? Quindi penso che questa situazione sia accettabilissima per lui...
|
|
|
|
|
|
#12 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
I LowLevel Hook sono gestiti in modo diverso rispetto agli hook normali...
However, the WH_KEYBOARD_LL hook is not injected into another process. Instead, the context switches back to the process that installed the hook and it is called in its original context. Then the context switches back to the application that generated the event. |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
In realtà c'è un modo per rendere l'hook globale SENZA ricorrere all'uso della DLL, ma per fare questo bisgona ricorrere all'assembly. EDIT: Almeno questo mi risulta, se avete esempi che smentiscono tutto ciò vi prego di postare, sarei molto interessato
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Gli hook necessitano delle DLL per essere appunto iniettati negli altri processi...questo non necessita di essere iniettato negli altri processi perchè probabilmente il sistema tiene una traccia individuale di tutti gli hook di questo tipo e l'hook viene richiamato dal SO (e non dagli altri processi come per i normali hook) quando l'evento viene generato...
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
EDIT: invece sembra di no, come ricordavo. C'è un modo, ma bisogna ricorrere all'assembly come dicevo prima. Sempre che ci sia un qualche codice che mi smentisca EDIT 2: sono confuso, ancora non mi è chiaro se un low level hook è automaticamente globale... Devo solo provare...
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 11-10-2006 alle 19:51. |
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
Quote:
cmq per non farmi perdere il filo mi sorge subito spontaneo un dubbio... dove cavolo la metto sta dll??? |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
L'ho modificato un po' e funziona alla perfezione per loggare tutti i tasti |
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:59.



















