THE LUPA Пользователь Пользователь Статус Оффлайн Регистрация 28 Апр 2018 Сообщения 628 Реакции 134 15 Янв 2022 #1 Всем привет, столкнулся с такой ситуацией, что на некоторых игроках, получает иероглифы вместо ника. Кто с таким сталкивался, пожалуйста помогите :)
Всем привет, столкнулся с такой ситуацией, что на некоторых игроках, получает иероглифы вместо ника. Кто с таким сталкивался, пожалуйста помогите :)
THE LUPA Пользователь Пользователь Статус Оффлайн Регистрация 28 Апр 2018 Сообщения 628 Реакции 134 1 Июн 2022 #2 Если кто то столкнётся с такой проблемой, вот фикс Спойлер: Fix Нужно получить длину массива байтов ника (Обычно это оффсет 0x1C) Когда начинаете получать ник, то делаем несколько проверок C++: Expand Collapse Copy char szPlayerName[16]; if (NameSize <= 0xF/*можно написать 15*/) { szPlayerName = ...; for (size_t i = 0; i < NameSize; ++i) { if (szPlayerName[i] < '0' || szPlayerName[i] > 'z') goto Skip; } return szPlayerName; } Skip: szPlayerName[25]; DWORD dwAddress = dwPlayer + 0xC; szPlayerName = dwAddress; /*(тут мы ссылаемся на поинтер)*/ return szPlayerName; Последнее редактирование: 4 Июн 2022
Если кто то столкнётся с такой проблемой, вот фикс Спойлер: Fix Нужно получить длину массива байтов ника (Обычно это оффсет 0x1C) Когда начинаете получать ник, то делаем несколько проверок C++: Expand Collapse Copy char szPlayerName[16]; if (NameSize <= 0xF/*можно написать 15*/) { szPlayerName = ...; for (size_t i = 0; i < NameSize; ++i) { if (szPlayerName[i] < '0' || szPlayerName[i] > 'z') goto Skip; } return szPlayerName; } Skip: szPlayerName[25]; DWORD dwAddress = dwPlayer + 0xC; szPlayerName = dwAddress; /*(тут мы ссылаемся на поинтер)*/ return szPlayerName;