Добавление базового адреса + смещения для изменения значения
Я пытаюсь изменить значение для пасьянса, например, счет.
В любом случае я нашел адреса (используя 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;