WriteProcessMemory не будет работать - PullRequest
1 голос
/ 19 марта 2012

Я хочу WriteProcessMemory с int и сделать это снова, делая int отрицательным числом. Я знаю, как это сделать в VB.NET; Я пробовал так же, но в C ++ это не сработает.

 WriteProcessMemory(hProcess, (void*)(MYBASE + 0x6F4), &number, 4, NULL);
 WriteProcessMemory(hProcess, (void*)(MYBASE + 0xA54), "-" & &number, 4, NULL);

1 Ответ

1 голос
/ 19 марта 2012

Ваш "-" & &number не делает то, о чем вы, кажется, думаете. В C бинарный оператор & означает побитовое AND, а не конкатенацию строк (C не имеет собственного строкового типа). Итак, ваша вторая строка принимает значение указателя (адрес number) и выполняет побитовое И с числовым значением ASCII дефиса (т. Е. Вы берете адрес & 46), что даст вам бессмысленный адрес и не делай, что хочешь.

Этот третий параметр для WriteProcessMemory является адресом, поэтому вам нужна переменная, чтобы получить адрес. Замените вторую строку этими двумя строками:

int negativeNumber = -number;
WriteProcessMemory(hProcess, (void*)(MYBASE + 0xA54), &negativeNumber, 4, NULL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...