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

Char* не в той кодировке - C++

Войти
Регистрация
Восстановить пароль
 
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 244
13.07.2014, 11:19     Char* не в той кодировке #1
Я читая память процесса игры и пытаюсь получить имя нужного мне обьекта, проблем найти нужный адрес труда не составило но в имени обьекта кирилица и вместо кирилици в char* nick я получаю кракозябры, проверял по байтово это те данные которые мне нужны но видимо нужно как-то изменить кодировку.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14475 / 6459 / 1020
Регистрация: 02.05.2013
Сообщений: 10,698
Завершенные тесты: 1
13.07.2014, 11:30     Char* не в той кодировке #2
Чтобы работать со строкой, нужно знать, в какой она кодировке.
Нет этого знания - считайте, что и самой строки тоже нет.
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 244
13.07.2014, 11:41  [ТС]     Char* не в той кодировке #3
Убежденный, ну я не знаю в какой кодировке текст но чит энейдж его читает без проблем...
Миниатюры
Char* не в той кодировке  
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,452
13.07.2014, 11:49     Char* не в той кодировке #4
попробуй другой строковый тип указать
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 244
13.07.2014, 14:40  [ТС]     Char* не в той кодировке #5
Немного полазив получил вот такое, первые буквы нормально а дальше начинаеться ппц(
Миниатюры
Char* не в той кодировке  
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.07.2014, 15:26     Char* не в той кодировке #6
DELAKEY, а задать размер побольше не пробовали? Судя по всему 4 байта только читаете.
P.s. Возвращать указатель на локальный объект - ошибка. Он будет уничтожен при выходе из функции.
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 244
13.07.2014, 16:24  [ТС]     Char* не в той кодировке #7
Да уже разобрался
Цитата Сообщение от Tulosba Посмотреть сообщение
P.s. Возвращать указатель на локальный объект - ошибка
вот тут я не понел я же вызываю функцию и она возвращает мне данные и вроде всё правельно, даже до формы данные доходят
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.07.2014, 16:37     Char* не в той кодировке #8
Цитата Сообщение от DELAKEY Посмотреть сообщение
даже до формы данные доходят
Просто удачное стечение обстоятельств. Следует или выделять память в куче (внутри функции) или же передавать в функцию указатель на память, куда будет записан результат.
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 244
13.07.2014, 18:25  [ТС]     Char* не в той кодировке #9
Tulosba, можете поподробнее? похожу у меня в другом месте кода чтото вроде этого
есть метод
C++
1
2
3
4
5
6
7
char* Get::nick(){
    int basa = 0x10797390;
    int ofset_1 = 0x113f80;
    int ofset_2 = 0x0;
    char * nick = memory.ReadChars(memory.ReadInt(memory.ReadInt(basa) + ofset_1) + ofset_2);
    return nick;
}
по точкам останова в nick значение записываеться верное "ТупоСмерть" (это такой ник персонажа)
но там где я его вызываю
C++
1
2
3
4
5
Game->Select(pid);
             char* nick = Game->get.nick();
             System::String^  m = L"Главное окно";
             System::String^ str = gcnew System::String(nick);
             this->Text = m + L" - " + str;
в char* nick уже записываеться не понятные данные "€˜йoСмеранQ"
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.07.2014, 19:22     Char* не в той кодировке #10
DELAKEY, ReadChars надо модифицировать. Например так:
C++
1
2
3
4
5
char* Memory::ReadChars(DWORD adr, char* buf, size_t size)
{
    ReadProcessMemory( handle, (LPCVOID)(adr), buf, size, NULL );
    return buf;
}
Выделять буфер ДО вызова ReadChars, а удалять после использования результата, т.е. после
C++
1
gcnew System::String(nick);
А в связи с чем возникла необходимость использования CLR?
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 244
13.07.2014, 19:45  [ТС]     Char* не в той кодировке #11
Цитата Сообщение от Tulosba Посмотреть сообщение
А в связи с чем возникла необходимость использования CLR?
интерфейс

а функции каторыми я получаю int значения не нужно модифицировать?
C++
1
2
3
4
5
int Memory::ReadInt(DWORD adr){
    int data = 0;
    ReadProcessMemory(handle, (LPCVOID)(adr), &data, 4, NULL);
    return data;
}
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.07.2014, 20:17     Char* не в той кодировке #12
DELAKEY, нет. Но вместо четверки я бы использовал sizeof(int) на всякий случай.
DELAKEY
 Аватар для DELAKEY
6 / 6 / 0
Регистрация: 20.11.2013
Сообщений: 244
13.07.2014, 20:28  [ТС]     Char* не в той кодировке #13
Tulosba, что-то всётаки у меня не так
C++
1
2
3
4
5
             char * nick = new char[32];
             Game->get.nick(nick);
             System::String^  m = L"Главное окно";
             System::String^ str = gcnew System::String(nick);
             this->Text = m + L" - " + str;
C++
1
2
3
4
5
6
7
8
char* Get::nick(char * buf_nick){
    int basa = 0x10797390;
    int ofset_1 = 0x113f80;
    int ofset_2 = 0x0;
    memory.ReadChars(memory.ReadInt(memory.ReadInt(basa) + ofset_1) + ofset_2, buf_nick, 32);
    char * t = buf_nick;
    return buf_nick;
}
C++
1
2
3
4
char* Memory::ReadChars(DWORD adr, char *buf, size_t size){
    ReadProcessMemory(handle, (LPCVOID)(adr), &buf, size, NULL);
    return buf;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 20:50     Char* не в той кодировке
Еще ссылки по теме:

Char *(UTF-8) -> char *(ANSI) C++
Массив char в переменную char C++
Копирование char* в массив char[i]* C++
C++ Разница между new char[] и new char[]()
В чем отличие char* s от char *s C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.07.2014, 20:50     Char* не в той кодировке #14
DELAKEY, копипастить надо уметь для buf не надо писать &
Yandex
Объявления
13.07.2014, 20:50     Char* не в той кодировке
Ответ Создать тему
Опции темы

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