Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Как читать ник персонажа/название локации?

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 05.06.2017, 21:19   #1
 Разведчик
Аватар для dronte
 
dronte никому не известный тип
Регистрация: 06.07.2013
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Как читать ник персонажа/название локации?

Как прочитать и вывести в консоль ник персонажа или название локации??

что я пробовал:

WCHAR name[8];
wchar_t name_[8];
std::basic_string<WCHAR> wstr;
std::wstring wstr_2;

Ничто из этого не работает. Подскажите, как надо?
  Ответить с цитированием
Старый 06.06.2017, 01:55   #2
 Разведчик
Аватар для pw.lancer
 
pw.lancer скоро будет известенpw.lancer скоро будет известенpw.lancer скоро будет известенpw.lancer скоро будет известен
Регистрация: 11.05.2011
Сообщений: 41
Популярность: 305
Сказал(а) спасибо: 43
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: Как читать ник персонажа/название локации?

Вот вариант кода на C:
Код:
wchar_t wsBuffer[ 100 ];
//...
int res = ChainReadString( wsBuffer, hProcess, 0x00E4BAB0, 32, 4, 0x1C, 0x34, 0x750, 0x0 );
// wsBuffer содержит имя персонажа, Юникод (16бит)
Код:
int ReadInt32( LPVOID buffer, HANDLE hProcess, DWORD address )
{
	DWORD read;
	return ReadProcessMemory( hProcess, ( LPCVOID ) address, buffer, sizeof( int ), &read );
}

int ReadString( LPVOID buffer, HANDLE hProcess, DWORD address, DWORD length )
{
	int result = 0;
	DWORD read;
	result = ReadProcessMemory( hProcess, ( LPCVOID ) address, buffer, length, &read );
	return result;
}

int ChainReadString( LPVOID buffer, HANDLE hProcess, DWORD address, DWORD length, DWORD offsets, ... )
{
	if ( offsets == 0 )
		return ReadString( buffer, hProcess, address, length );

	int tmpInt = 0;
	int result = ReadInt32( &tmpInt, hProcess, address );

	if ( result ) {
		va_list ap;
		va_start( ap, offsets );

		DWORD offset = 0;
		for ( DWORD i = 0; i < offsets - 1; i++ ) {
			offset = va_arg( ap, DWORD );
			result = ReadInt32( &tmpInt, hProcess, tmpInt + offset );
		}

		offset = va_arg( ap, DWORD );

		va_end( ap );

		result = ReadString( buffer, hProcess, tmpInt + offset, length );
	}

	return result;
}
  Ответить с цитированием
Старый 06.06.2017, 12:42   #3
 Разведчик
Аватар для dronte
 
dronte никому не известный тип
Регистрация: 06.07.2013
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Как читать ник персонажа/название локации?

Лол, я думал, что 0x750 - это последний оффсет, т.е. что это оффсет сразу на массив байтов, но нет, это только указатель на массив байтов, Теперь всё, работает, спасибо!

UPD: А теперь тот же самый вопрос, про название локации, там 0x0 не забыл, но всё равно чушь. И какая длина названия?

BA + 0x1C + 0x1C + 0x60 +0x4 + 0x0

Добавлено через 1 час 6 минут
Цитата:
#define BA 0x00E4BAB0
#define Arr1 0x1C
#define Arr2 0x1C
#define LocID 0x94
#define LocName 0x60
#define LocName_off1 0x4

...


//value = BA
ReadProcessMemory(hProcess, (void*)value, (void*)&value, 4, 0);
ReadProcessMemory(hProcess, (void*)(value + Arr1), (void*)&value, 4, 0);

ReadProcessMemory(hProcess, (void*)(value + Arr2), (void*)&locname_pointer, 4, 0);
ReadProcessMemory(hProcess, (void*)(locname_pointer + LocName), (void*)&locname_pointer, 4, 0);
//ReadProcessMemory(hProcess, (void*)(locname_pointer), (void*)&pers.locname_len, 4, 0);
ReadProcessMemory(hProcess, (void*)(locname_pointer + LocName_off1), (void*)&locname_pointer, 4, 0);
ReadProcessMemory(hProcess, (void*)(locname_pointer), (void*)&locname_pointer, 4, 0);
ReadProcessMemory(hProcess, (void*)(locname_pointer), (void*)pers.locname, sizeof(WCHAR)*128, 0);

у меня такой вот код, в pers.locname оказывается чушь

если делать


Цитата:
ReadProcessMemory(hProcess, (void*)(locname_pointer + LocName_off1), (void*)&locname_pointer, 4, 0);
ReadProcessMemory(hProcess, (void*)(locname_pointer), (void*)pers.locname, sizeof(WCHAR)*128, 0);

то тоже чушь.

Последний раз редактировалось dronte; 06.06.2017 в 13:53. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 07.06.2017, 00:20   #4
 Разведчик
Аватар для pw.lancer
 
pw.lancer скоро будет известенpw.lancer скоро будет известенpw.lancer скоро будет известенpw.lancer скоро будет известен
Регистрация: 11.05.2011
Сообщений: 41
Популярность: 305
Сказал(а) спасибо: 43
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: Как читать ник персонажа/название локации?

Цитата:
Сообщение от dronteПосмотреть сообщение
UPD: А теперь тот же самый вопрос, про название локации, там 0x0 не забыл, но всё равно чушь. И какая длина названия?

BA + 0x1C + 0x1C + 0x60 +0x4 + 0x0

Вроде офсеты правильные. Вот пример рабочего кода (у меня для удобства сохранен адрес GA = [BA]+1C), только что проверил.

Код:
static const DWORD MAX_LOC_NAME				= 64;
static const DWORD GA = 0x00E4C45C;
static const DWORD OFFS_LOCATION_NAME_0			= 0x001C;
static const DWORD OFFS_LOCATION_NAME_1			= 0x0060;
static const DWORD OFFS_LOCATION_NAME_2			= 0x0004;

ChainReadString( wsLocName, cw->hProcess, GA, MAX_LOC_NAME * sizeof( TCHAR ), 4, OFFS_LOCATION_NAME_0, OFFS_LOCATION_NAME_1, OFFS_LOCATION_NAME_2, 0x00 );
Максимальная длина взята "от балды".

Последний раз редактировалось pw.lancer; 07.06.2017 в 00:26.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Локаций для PW serii23 Обсуждение игровых проектов 0 11.04.2017 20:17
[Пакеты] Тп по локации без птички! G0lovoreZZ Боты, скрипты и прочий софт для Aion 21 06.09.2012 14:17
название локаций RWD Вопросы и ответы, обсуждения 2 17.04.2012 18:53
[Статья] Локации для точки lookartis236 Общение и обсуждение Perfect World 2 05.06.2011 15:56

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 19:19.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net