|
Как вытащить имя персонажа - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
24.10.2012, 17:04
|
#1
|
|
|
|
Разведчик
|
Регистрация: 20.10.2012
Сообщений: 2
Популярность: 178
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 2 сообщениях
|
Как вытащить имя персонажа
Все адреса знаю, смещение для ника 0x66C. Но вот там написано, что размер этого поля 8 байт типа wchar_t. Пытаюсь считывать в wchar_t 8 байт - выдает 1 символ иероглиф. Как правильно считать ник? И почему он занимает 8 байт, когда в нике мож быть до 9 символов?
|
|
|
24.10.2012, 19:46
|
#2
|
|
|
|
Главнокомандующий
|
Регистрация: 27.03.2009
Сообщений: 1,666
Популярность: 67466
Сказал(а) спасибо: 246
Поблагодарили 1,560 раз(а) в 691 сообщениях
|
Re: Как вытащить имя персонажа
0x66C + 0x0, string, unicode
и да, причём здесь 8 байт?
Последний раз редактировалось AEBus; 24.10.2012 в 20:18.
|
|
|
25.10.2012, 20:45
|
#3
|
|
|
|
Разведчик
|
Регистрация: 20.10.2012
Сообщений: 2
Популярность: 178
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 2 сообщениях
|
Re: Как вытащить имя персонажа
Все равно я не могу выцепить ник, получаю только один иероглиф, пишу в студии (2008). Считываю 4 байта в DWORD, потом конвертирую в wchar_t, потом в стринг и вывожу - итог 䗔. Как правильно делать?
|
|
|
26.10.2012, 09:34
|
#4
|
|
|
|
Рыцарь-капитан
|
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: Как вытащить имя персонажа
|
|
|
26.10.2012, 14:51
|
#5
|
|
|
|
Разведчик
|
Регистрация: 19.08.2012
Сообщений: 13
Популярность: -176
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
|
Re: Как вытащить имя персонажа
|
Цитата: |
|
|
|
|
|
|
|
|
|
позвольте поинтересоваться всей струтурой чтения с памяти надеюсь вы считываете не просто со смещения 0x66C
|
|
|
|
|
|
Скорее всего, так и есть.
Считывать нужно с адреса, находящегося в 0х66С. Т е в записи это +0х66С +0, в массив wchar_t[20].
Преобразовывать ни во что не нужно, если только в анси. первые 9 знаков или менее (на каждый знак по 2 байта) составляют имя, последние два байта окончание строки /0x00 /0x00
Тут исход на билдере, поковыряй, для начинающего много интересного.
|
|
|
26.10.2012, 15:23
|
#6
|
|
|
|
Разведчик
|
Регистрация: 20.10.2012
Сообщений: 2
Популярность: 178
Сказал(а) спасибо: 0
Поблагодарили 6 раз(а) в 2 сообщениях
|
Re: Как вытащить имя персонажа
Все разобрался в чем прикол. Просто когда смотрел смещения, думал - нахрена там еще 0x0 прибавлять? А оказывается не зря там этот нолик указан , в остальном сам разобрался.
|
|
|
30.10.2012, 13:11
|
#7
|
|
|
|
Разведчик
|
Регистрация: 05.10.2012
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Как вытащить имя персонажа
В студии 2010 организовал так:
Код:
//функция чтения памяти:
wchar_t* Client::Read_Char(UInt32 addr)
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,pid); // открываем процесс
wchar_t value[40];
ReadProcessMemory(hProcess,(void*)addr,&value,(40),0); // считываем значение по заданному адресу
CloseHandle(hProcess); // закроем процесс
return value; // вернём считанное значение
}
//заталкивание имени в System::string^
String^ str;
for(int i=0; i<=20 ; i++)
str=str+((Read_Char(NmAdr()+0x0)+i)->ToString());
както так
|
|
|
02.11.2012, 01:55
|
#8
|
|
|
|
Главнокомандующий
|
Регистрация: 27.03.2009
Сообщений: 1,666
Популярность: 67466
Сказал(а) спасибо: 246
Поблагодарили 1,560 раз(а) в 691 сообщениях
|
Re: Как вытащить имя персонажа
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 10:50.
|
|