Добавление базового адреса + смещения для изменения значения

Я пытаюсь изменить значение для пасьянса, например, счет.

В любом случае я нашел адреса (используя CheatEngine), на которые указывают указатели, но мне сложно ввести код для изменения счета. Я почти уверен, что это способ добавления смещений к базовому значению, а не Windows DEP, мой метод ввода или что-то еще.

Вот код, который я использую.

#define BASE    0xFFAEAFA8
#define fOFFSET 0x50
#define sOFFSET 0x14
#define VALUE   55555


*(int*)(((*(int*) BASE) + fOFFSET) + sOFFSET) = VALUE;

Всякий раз, когда я внедряю этот код, моя игра вылетает. Работает нормально, если я изменяю значения в Cheat Engine, но не в коде.

2 ответа

Решение

Что я делал не так: мне нужно было использовать ReadProcessMemory() API для поиска адреса, на который указывает указатель. А затем добавить смещения.

Пытаться:

volatile int * pScore = (int*)( BASE + fOFFSET + sOFFSET );
*pScore = VALUE;
Другие вопросы по тегам