barsuuk Опубликовано 28 декабря, 2016 Поделиться Опубликовано 28 декабря, 2016 пытаюсь с помощью readprocessmemory получить ник игрока на выходе получаю мусор в чем ошибка?? char buf[9]; ReadProcessMemory(hProcess, LPCVOID(nameaddr), buf, 7, NULL); printf("name chuvakov: %s ", buf); Ссылка на комментарий Поделиться на другие сайты Поделиться
Trix Опубликовано 29 декабря, 2016 Поделиться Опубликовано 29 декабря, 2016 4 часа назад, barsuuk сказал: на выходе получаю мусор Что же по-вашему является мусором? Возможные варианты: 1) Байты необходимо перевести в символы, согласно кодировке 2) Адрес не верный Ссылка на комментарий Поделиться на другие сайты Поделиться
barsuuk Опубликовано 29 декабря, 2016 Автор Поделиться Опубликовано 29 декабря, 2016 на счет адреса уверен, так как жизни и другие данные вывести смог. А как перевести байты в символы? Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 29 декабря, 2016 Поделиться Опубликовано 29 декабря, 2016 barsuuk, почему в ReadProcessMemory, у тебя в nSize 7, а должно быть 9? Используется ли в тексте юникод? Адрес, что нашли, работает с 1 командой? Адрес статический или динамический? Правильно нашли нужный адрес? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
barsuuk Опубликовано 29 декабря, 2016 Автор Поделиться Опубликовано 29 декабря, 2016 3 часа назад, 2zolo2 сказал: barsuuk, почему в ReadProcessMemory, у тебя в nSize 7, а должно быть 9? Используется ли в тексте юникод? Адрес, что нашли, работает с 1 командой? Адрес статический или динамический? Правильно нашли нужный адрес? на счет юникода не уверен,как проверить? адрес 100% рабочий так как если прибавить к этому адресу 140 попадем на ник 2 игрока или если прибавить 24 то попадем на жизни получилось вывести 1 символ ника если попытаться вывести сразу все символы, прога вылетает когда доходит до вывода Ссылка на комментарий Поделиться на другие сайты Поделиться
Trix Опубликовано 29 декабря, 2016 Поделиться Опубликовано 29 декабря, 2016 2 часа назад, barsuuk сказал: на счет юникода не уверен,как проверить? адрес 100% рабочий так как если прибавить к этому адресу 140 попадем на ник 2 игрока или если прибавить 24 то попадем на жизни получилось вывести 1 символ ника если попытаться вывести сразу все символы, прога вылетает когда доходит до вывода Увы, в c++ не силен, чем и грешен) Но все же, ваша задача скорее всего в том, чтобы перевести байты в тест, сделать это можно например в онлайн декодерах к примеру, а после посмотреть как это можно сделать на c++ в яндексе или гугле) Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 29 декабря, 2016 Поделиться Опубликовано 29 декабря, 2016 5 минут назад, Trix сказал: Увы, в c++ не силен, чем и грешен) Но все же, ваша задача скорее всего в том, чтобы перевести байты в тест, сделать это можно например в онлайн декодерах к примеру, а после посмотреть как это можно сделать на c++ в яндексе или гугле) В смысле байты перевести в текст? Для этого и существуют различные типы переменных, char* для хранения ascii символов, wchar_t* для unicode ТС, ты хотя бы скрин со структурой кинь. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 29 декабря, 2016 Поделиться Опубликовано 29 декабря, 2016 (изменено) char buffer[32]; ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(nameaddr), &buffer, 32, 0); printf("%s", buffer); или так char buffer[32]; ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(nameaddr), &buffer, 32, 0); cout << buffer << endl; Если будет юникод можно использовать wcstombs, чтобы преобразовать в char Изменено 29 декабря, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
barsuuk Опубликовано 29 декабря, 2016 Автор Поделиться Опубликовано 29 декабря, 2016 ладно, спасибо, пойду гуглить) спасибо огромное))буду тестить получилось!!)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения