Вопрос ReadMemory нечитает русские символы

Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,426
Реакции[?]
666
Поинты[?]
25K
Это что санкции ????
Чтобы отсеить уникумов сразу скажу setlocale(LC_ALL, "Russian"); в коде есть
C:
void ReadString(uintptr_t Addres, char* Buffer, int BufferSize) {
        NtReadVirtualMemory(Process::Process, (LPVOID)Addres, Buffer, BufferSize, 0);
    }
1727463524153.png
 
PoC Life
Пользователь
Статус
Оффлайн
Регистрация
22 Авг 2022
Сообщения
324
Реакции[?]
47
Поинты[?]
37K
Это что санкции ????
Чтобы отсеить уникумов сразу скажу setlocale(LC_ALL, "Russian"); в коде есть
C:
void ReadString(uintptr_t Addres, char* Buffer, int BufferSize) {
        NtReadVirtualMemory(Process::Process, (LPVOID)Addres, Buffer, BufferSize, 0);
    }
Посмотреть вложение 286698
ахаха, да, проблема точно в чтении памяти чужого процесса :roflanzdarova:
SetConsoleOutputCP(CP_UTF8); как вариант
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,426
Реакции[?]
666
Поинты[?]
25K
Начинающий
Статус
Оффлайн
Регистрация
12 Сен 2024
Сообщения
21
Реакции[?]
2
Поинты[?]
2K
Это что санкции ????
Чтобы отсеить уникумов сразу скажу setlocale(LC_ALL, "Russian"); в коде есть
C:
void ReadString(uintptr_t Addres, char* Buffer, int BufferSize) {
        NtReadVirtualMemory(Process::Process, (LPVOID)Addres, Buffer, BufferSize, 0);
    }
Посмотреть вложение 286698
может всё дело в том, что сайз char - 255, и, возможно, что русские символы просто не укладываются в этот буфер, а нужен widechar_t?
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,426
Реакции[?]
666
Поинты[?]
25K
Не проверял, я пока другими делами занят, но скажу сразу, реализовывал эту тему еще до такого как про нее написали, изменений нет только еще и строку обрезает, займусь как будет время поподробнее этим вопросом
 
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,596
Реакции[?]
879
Поинты[?]
113K
Это что санкции ????
Чтобы отсеить уникумов сразу скажу setlocale(LC_ALL, "Russian"); в коде есть
C:
void ReadString(uintptr_t Addres, char* Buffer, int BufferSize) {
        NtReadVirtualMemory(Process::Process, (LPVOID)Addres, Buffer, BufferSize, 0);
    }
Посмотреть вложение 286698
Суть не в простом чтении данных из памяти, а в том, как ты интерпретируешь этот набор байтов внутри своего чита. Ты фактически дублируешь участок памяти, и на этом этапе он представляет собой лишь последовательность байт без какого-либо осмысленного значения.

Как уже было отмечено ключевой момент здесь - кодировка, которая определяет как эти байты будут отображаться в консоли
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,426
Реакции[?]
666
Поинты[?]
25K
Суть не в простом чтении данных из памяти, а в том, как ты интерпретируешь этот набор байтов внутри своего чита. Ты фактически дублируешь участок памяти, и на этом этапе он представляет собой лишь последовательность байт без какого-либо осмысленного значения.

Как уже было отмечено ключевой момент здесь - кодировка, которая определяет как эти байты будут отображаться в консоли
Я уже перепробовал кодировки, только есть какая-то странная хуйня, если я скопирую слово и вставлю в сайт с универсальными кодировками он ее правильно раскодирует, ставлю кодировку у себя в чите (такую же как на сайте) - я иду нахуй
 
Сверху Снизу