c ++ - WriteProcessMemory virker ikke

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil WriteProcessMemory med en int og gøre det igen gør int et negativt tal. Jeg ved, hvordan man gør dette i VB.NET; Jeg prøvede på samme måde, men i C ++, vandt det ikke.


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

Bedste reference


Din "-" & &number er ikke gør hvad du synes at synes det er. I C betyder den & binære operatør bitvis OG, ikke strengforbindelsen (C har ikke en indbygget strengtype). Så din anden linje tager pegerværdien (adresse på number) og gør bitvis og med ASCII-numerisk værdi af en bindestreg (dvs. du tager adressen & 46), som vil give dig en nonsensadresse og ikke gøre, hvad du vil.


Den tredje parameter til WriteProcessMemory er en adresse, så du har brug for en variabel til at tage adressen til. Udskift den anden linje med disse to linjer:


int negativeNumber = -number;
WriteProcessMemory(hProcess, (void*)(MYBASE + 0xA54), &negativeNumber, 4, NULL);