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

Использование найденного указателя при написании чита


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

Всеем доброго дня.

Только что разобрался с темой поиска указателей.

Пробовал на игре Master of Defense посредством Cheat Engin-а.

Нашёл указатель и оффсеты:

"Main.exe"+0012FDB4

84
2B0
224
4BC
0

Написал чит-трейнер на Cheat Engine. Всё работает. Теперь хотелось бы написать чит-трейнер на C++.

Проблема вот в чём: не пойму, что делать с указателем.

К какой ячейке памяти обращаться?

Я так полагаю, что должен быть конкретный hex-адрес.

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

Конечно, нет. Тебе надо найти базовый адрес, который в СЕ представлен именем файла ( "Main.exe" ). К этому базовому адресу нужно прибавить  первое смещение ( 0012FDB4 ). Из полученного адреса считать значение. К этому значению прибавить второе смещение ( 84 ). Получившееся число будет адресом следующего значения. Нужно считать значение из этого адреса, и прибавить к нему уже следующее смещение. И так до самого последнего смещения.

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

Принцип понял, однако возникла некоторая проблема.

Нашёл указатель второго уровня:

"Main.exe"+0012F320
50C
1C0

Определил базовый адрес программы:

0x1012F454

И пытаюсь прочитать значение переменной, отвечающей за монеты таким образом:

  Показать контент


Однако получаю значение 0.

В чём я ошибся?

 

Думаю, что проблема в базовом адресе.

Не знаю, как его найти в Cheat Engine.

Определял его через стороннюю программу.

 

  Показать контент

 


Высчитывается 1-ое значение - базовый адрес + первый офсет(0x0012F320).
Прибавляем к нему 50C - 2-ой офсет - и всё - 0 в значении, хотя в cheat engine наше п олученное значение - представлено как значение, а есть ещё и адрес, который хранит это значение, 00270000. И прибавляя к нему 50C, в Cheat Engine можно выйти на 2-ое значение. Как выйти на этот адрес?
 

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

 

  В 26.12.2016 в 14:52, mraklbrw сказал:

DWORD adres_2 = get_value + 0x50C;

Показать  

 

Здесь кажется ошибка

попробуй так.

ReadProcessMemory(phandle, reinterpretate_case<PBYTE*>(get_value + 0x50C), &get_value2, 4, 0);

 

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

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

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

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