|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#121 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
EDIT: Ah, nel mio keylogger ho gestito un po' di tutto (compreso caratteri accentati, ecc. Ovviamente, per i carattere accentati non ho usato costrutti tipo "case VK_SHIFT:".
__________________
- 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 |
|
|
|
|
|
|
#122 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ho modificato ancora il post #110 aggiungendo il log degli spazi; ora voglio provare ad usare I/O overlapped, così da non appensatire il sistema quando abbiamo a che fare con un utente dalla tastiera veloce e possibilmente anche un sistema già carico di suo :P
|
|
|
|
|
|
#123 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Sì ma purtroppo con SP2 installato non si può rilocare la DLL... Meglio tornare al classico thread a questo punto.
__________________
- 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 |
|
|
|
|
|
#124 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
|
|
|
|
|
#125 | |
|
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 |
|
|
|
|
|
|
#126 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Intanto, visto che non ci sono problemi, posto il mio keylogger, come progetto VS .NET 2003.
Non posto direttamente il codice perché, essendo commentato, sarebbe troppo lungo da piazzare in un post (e di più difficile lettura), quindi allego direttamente il progetto. Rispetto a quello inviato via mail a mamo, ho aggiunto il logging dei tasti funzione (li avevo dimenticati Appena finisco la feature che indica, oltre ai tasti premuti, in quale programma li si è premuti (molto utile secondo me EDIT: piccola aggiunta, VK_CONTROL, VK_MENU e VK_SHIFT oltre al controllo sinistro e destro (non si sa mai...)
__________________
- 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- : 20-10-2006 alle 14:04. |
|
|
|
|
|
#127 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
|
|
|
|
|
#128 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ho letto il tuo codice; non conoscevo la funzione ToAscii!!
ora la uso pure nel mio :P edit: uu, ma vedo su MSDN che c'è un sacco di roba carina, tipo MapVirtualKey(Ex) e ToUnicode :P mi erano sfuggite Ultima modifica di 71104 : 20-10-2006 alle 13:52. |
|
|
|
|
|
#129 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Non ho ancora finito di implementare la feature proprio perchè devo cambiare l'hook filter (ora associato ad un low level keyboard hook), e non ho mlto tempo da dedicarci... EDIT: Ah, sono riuscito a far funzionare il tuo codice anche da me, ora è tutto ok Oggi pomeriggio provo a modificare il codice per evitare di usare il campo TypeOffset nella struct IMAGE_BASE_RELOCATION, non dovrebbe essere complicato.
__________________
- 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- : 20-10-2006 alle 13:58. |
|
|
|
|
|
|
#130 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
EDIT: che poi è il motivo per cui ho inserito i tag <SHIFT>...</SHIFT>: per le lettere maiuscole non ce n'era bisogno, ma per tutti gli altri tipo % o ? sì. Quindi per evitare incongruenze anche con layout di tastiera diversi, ho usato i tag, così da prevedere tutti i casi. Per il momento MapVirtualKey non mi mappa tali caratteri, vediamo se si può aggirare il problema...
__________________
- 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- : 20-10-2006 alle 14:16. |
|
|
|
|
|
|
#131 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
grazie per l'allegato -fidel-, ho preso quello dal sito...
ora me lo studio bene bene aiutandomi con msdn!!!! |
|
|
|
|
|
#132 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Ok, come annunciato prima, ho modificato il codice della CopyAndRelocate() postato prima da 71104 per fare in modo di non usare il campo TypeOffset della struct IMAGE_BASE_RELOCATION, dato che quel campo è di default commentato in WinNT.h.
Ho modificato questo stralcio (linea 90): Codice:
uFixupCount = (pBaseReloc->SizeOfBlock - (sizeof(IMAGE_BASE_RELOCATION) - sizeof(WORD))) / sizeof(WORD);
for (u = 0; u < uFixupCount; u++) {
PVOID pFixupLocation = (PBYTE)pNewImage + pBaseReloc->VirtualAddress + (pBaseReloc->TypeOffset[u] & 0x0FFF);
switch (pBaseReloc->TypeOffset[u] >> 12) {
Codice:
uFixupCount = (pBaseReloc->SizeOfBlock - (sizeof(IMAGE_BASE_RELOCATION))) / sizeof(WORD);
for (u = 0; u < uFixupCount; u++) {
PVOID pFixupLocation = (PBYTE)pNewImage + pBaseReloc->VirtualAddress + (u * sizeof(WORD));
switch (*(PWORD)pFixupLocation >> 12) {
Codice:
hThread = CreateThread(NULL, 0, (PTHREAD_START_ROUTINE)((DWORD)ThreadEntry - (DWORD)pImageBase + (DWORD)pNewImage), NULL, 0, &dwDummy); Codice:
hThread = CreateThread(NULL, 0, (PTHREAD_START_ROUTINE)((DWORD)ThreadEntry + (DWORD)dwDelta), NULL, 0, &dwDummy);
__________________
- 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 |
|
|
|
|
|
#133 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
fidel... ti volevo chiedere se avevi abbandonato o meno il progetto di construire un keylogger che ti dice anche in quale finestra sono stati premuti i tasti...
sono curiosissimo di vedere in che modo si possa fare |
|
|
|
|
|
#134 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
|
|
|
|
|
#135 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Ok, ho implementato la funzionalità annunciata
Ho dovuto abbandonare la strategia dell'hook CBT, dal momento che tale hook può essere globale ma non è Low Level. Quando è globale (è il nostro caso), non essendo Low Level, ogni processo agganciato va a caricare la nostra DLL, quini in breve tempo un alto numero di processi sul sistema carica la DLL, rendendola quindi facilmente tracciabile (oppure consumando molta memoria nel caso iniettiamo la DLL rilocandola - seguendo la strategia descritta prima da 71104). Ho quindi risolto in modo differente... Posto qui il progetto Visual Studio .NET 2003 (ma è compilabile con qualunque altro IDE, basta leggere i commenti iniziali del sorgente). Tutto il codice è ampiamente commentato, a scopo didattico. EDIT: ho fatto anche una versione che usa la CopyAndRelocate() (leggermente modificata come descritto nei post precedenti) postata da 71104. Non la posto perchè è banale implemenetarla, dal momento che nel thread c'è già il sorgente della CopyAndRelocate, più le modifiche (se le volete aggiungere) che ho apportato. La rilocazione della DLL la trovo un'ottima strategia
__________________
- 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- : 23-10-2006 alle 14:09. |
|
|
|
|
|
#136 | |
|
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 |
|
|
|
|
|
|
#137 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
grazie fidel...
nel compilarlo con Microsoft Visual C++ 6.0 però nn mi trova questo: #include <psapi.h> non che sai xche??? |
|
|
|
|
|
#138 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Cercalo su google...
Dovrebbe essere distribuita con DDK... |
|
|
|
|
|
#139 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
@Mamo: Comunque la libreria psapi.dll è in tutti i sistemi Win NT e successivi (quindi anche su XP), ti serve solo il .h per compilare il programma. Lo posto qui. Ho aggiutno .txt sennò non mi faceva allegare... EDIT: Ah, comunque quella libreria serve solo se vuoi loggare anche il nome del processo. Nel frattempo, se vuoi provare, disattiva il log del nome del processo (è scritto nel sorgente come fare, ti basta commentare una riga) e commenta l'include di psapi.h (che in questo caso non serve più), e compila.
__________________
- 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- : 23-10-2006 alle 15:55. |
|
|
|
|
|
|
#140 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
|
come sempre, grazie
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:30.



















