I ovenstående lille kodestump forsøger jeg at læse en byte fra den process jeg har startet med CreateProcess. Det går osse fint, så længe adressen jeg læser fra hører til selve target.exe - men når jeg som her bevæger mig udenfor det område, altså til 77D50B22, som hører til user32, så kommer messageboxen med "ReadProcessMemoryFejl".
Hvordan kan det være? Jeg troede at user32 bare var et af de moduler, der hører til i target.exe's adresserum. Og derfor skulle være til at læse uden videre.
Jeg håber nogen vil fortælle mig, hvad jeg har misforstået.
long addr = 0x77D50B22; if ( ReadProcessMemory( pi.hProcess, &addr, &bt, 1, NULL ) == NULL )
...så undgår jeg fejlmeldingen. Men den læser stadig ikke den pågældende byte. bt bliver ved med at være 0, uanset hvor meget jeg ændrer på addr - så nu har jeg to spørgsmål: 1. Hvorfor læser den ikke noget? 2. Hvorfor er LPVOID ikke lige så godt som long?
Du har ret, frand! Jeg kan ganske vist ikke påstå, at jeg helt forstår det, for som jeg læser beskrivelsen af CreateProcess burde en process være helt klar til at køre efter at være 'created'. Dvs at det hele burde være indlæst.
Men jeg prøvede at injicere bytes EB FE ( som får processen til at køre på stedet ), og derefter bruge ResumeThread og SuspendThread. Og så virkede min ReadprocessMemory pludselig!
Der er noget at undersøge her, men tak for hjælpen - lægger du et svar?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.