Ваш "-" & &number
не делает то, о чем вы, кажется, думаете. В C бинарный оператор &
означает побитовое AND, а не конкатенацию строк (C не имеет собственного строкового типа). Итак, ваша вторая строка принимает значение указателя (адрес number
) и выполняет побитовое И с числовым значением ASCII дефиса (т. Е. Вы берете адрес & 46
), что даст вам бессмысленный адрес и не делай, что хочешь.
Этот третий параметр для WriteProcessMemory
является адресом, поэтому вам нужна переменная, чтобы получить адрес. Замените вторую строку этими двумя строками:
int negativeNumber = -number;
WriteProcessMemory(hProcess, (void*)(MYBASE + 0xA54), &negativeNumber, 4, NULL);