Перейти к содержанию

Рекомендуемые сообщения

Вопрос 1:

 

Использую ProcMem(Source: ProcMem.h,UPD).
Пытаюсь получить Base адрес процесса игры:

ProcMem Mem("collapse.exe");
DWORD Base = Mem.dwBase;

Для того, что бы потом с указателя типа "collapse.exe" + 0x123 прочитать значение, но проблема в том, что в CE показывает один адрес процесса(Например, 00905A4D), а в C++  совсем другой(4194304). Не могу разобраться, в чем же проблема?

Вопрос 2

 

Как правильно использовать указатель с несколькими смещениями?
ed734264cab4.png

Я использую так:

float Status = Mem.read<float>((((Base + 0x0024EC1C) + 0x36c) + 0x308) + 0x508);

Или можно 

float Status = Mem.read<float>(Base + 0x0024EC1C + 0x36c + 0x308 + 0x508);

Как правильно? 

Ссылка на комментарий
Поделиться на другие сайты

Получи сначала базовый адрес process.exe + 0x0024EC1C в DWORD, а потом делай как тут

 

Сначала получал указатель на структуру способностей, потом на саму способность и на характеристики.

 

auto base = memory->ReadMem<DWORD>(DarkVision + 0x4c8);

memory->WriteMem((base + 0x5b8) + 0x190, 0.f);
memory->WriteMem((base + 0x5b8) + 0x184, 0.f);
memory->WriteMem((base + 0x5b8) + 0x15C, 870000000.f);
memory->WriteMem((base + 0x5b8) + 0x160, 870000000.f);

или

auto dwmana = memory->ReadMem<DWORD>(m_mana + 0x790);

dwmana = memory->ReadMem<DWORD>(dwmana + 0x680);
memory->WriteMem(dwmana + 0x594,101);

 

 

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

Скрытый текст

#include "Includes.h"

ProcMem Mem("collapse.exe");
DWORD Base = Mem.dwBase;
DWORD BaseAdress;


float Status;


using namespace std;

int main()
{
	DWORD BaseAdress = Base + 0x0024EC1C;
	float Status = Mem.read<float>(((BaseAdress + 0x36c) + 0x308) + 0x508);
		cout  << Status << endl;

	system("pause");
	return 0;
}

 

 

Все равно не то

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, Dejavu сказал:

Все равно не то

Конечно не то. Получается, что ты просто сложил 2 числа, а не прочитал указатель.

 

Попробуй так. Переделаешь под себя конечно же.

auto BaseAdress = memory->ReadMem<DWORD>(Base + 0x24EC1C);

 

Изменено пользователем partoftheworlD
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, Dejavu сказал:

Откуда memory->?

Обновил, под себя переделаешь.

Я пример смотрю из код своего трейнера, который прекрасно работает.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

14 минуты назад, partoftheworlD сказал:

Обновил, под себя переделаешь.

Я пример смотрю из код своего трейнера, который прекрасно работает.

Хорошо, днем разберусь

Ссылка на комментарий
Поделиться на другие сайты

@partoftheworlD Получилось, но только таким образом :D:D
 

Скрытый текст

int main()
{
	DWORD BaseAdress = Mem.read<DWORD>(Base + 0x0024EC1C);
	DWORD BaseAdress1 = Mem.read<DWORD>(BaseAdress + 0x36c);
	DWORD BaseAdress2 = Mem.read<DWORD>(BaseAdress1 + 0x308);
	float Status = Mem.read<float>(BaseAdress2 + 0x508);
		cout  << Status << endl;

	system("pause");
	return 0;
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

В 23.10.2016в09:44, partoftheworlD сказал:

Обновил, под себя переделаешь.

Я пример смотрю из код своего трейнера, который прекрасно работает.

Есть функция readP, но, видимо, я неправильно ей пользуюсь

Скрытый текст

#include "Includes.h"

ProcMem Mem("collapse.exe");
DWORD Base = Mem.dwBase;

char Pointers[] = {0x36c, 0x308,0x508 };


float Status;


using namespace std;

int main()
{
	float BaseAdress = Mem.readP<float>((DWORD)Base + 0x0024EC1C,Pointers,true);
		cout  << BaseAdress << endl;

	system("pause");
	return 0;
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

Помнится мне, что надо не складывать смещение, а читать информацию по адресу и к этой информации уже прибавлять смещение.
По крайней мере, у меня в WOW так было, ибо какой смысл ставить несколько смещений отдельно??

Читай информацию из адреса Base + 0x0024EC1C

Прибавляй к значению по этому адресу +0x36c

и так до конца указателей

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Dejavu сказал:

Для того, что бы потом с указателя типа "collapse.exe" + 0x123 прочитать значение, но проблема в том, что в CE показывает один адрес процесса(Например, 00905A4D), а в C++  совсем другой(4194304). Не могу разобраться, в чем же проблема?

Тут используется модульная адресация, а ты ищешь базовый модуль, когда скорее всего используется другой

Посмотри все модули и сопоставь со своим ;)

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, Trix сказал:

Тут используется модульная адресация, а ты ищешь базовый модуль, когда скорее всего используется другой

Посмотри все модули и сопоставь со своим ;)

Нет, здесь я использую все правильно, мне и нужен базовый

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, Trix сказал:

Помнится мне, что надо не складывать смещение, а читать информацию по адресу и к этой информации уже прибавлять смещение.
По крайней мере, у меня в WOW так было, ибо какой смысл ставить несколько смещений отдельно??

Читай информацию из адреса Base + 0x0024EC1C

Прибавляй к значению по этому адресу +0x36c

и так до конца указателей

Я уже разобрался

Ссылка на комментарий
Поделиться на другие сайты

14 часа назад, Dejavu сказал:

Есть функция readP, но, видимо, я неправильно ей пользуюсь

Не уверен, но вроде бы тут цикл должен быть который будет перебирать смещения, а шаблон читает их.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, partoftheworlD сказал:

Не уверен, но вроде бы тут цикл должен быть который будет перебирать смещения, а шаблон читает их.

Да, скорее всего. Попробую 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.