Spørgsmål:
Læs en struktur fra hukommelsen
yarbelk
2013-09-14 11:29:40 UTC
view on stackexchange narkive permalink

Jeg prøver at indlæse en struktur, der er defineret i et program, som jeg læser hukommelsen for, så jeg kan bruge den til at definere objekter i min python-debugger (i windows).

Hvilket format tager structs hukommelse, og hvilke oplysninger kan jeg få ved at finde strukturen. Er det muligt at finde forskydninger for alle attributter og alle objekter, der linker til strukturen?

Jeg foretrækker at være i stand til at gøre dette uden at bruge breakpoints, men jeg kan bruge dem, hvis der ikke er nogen anden måde.

En svar:
blabb
2013-09-14 14:04:55 UTC
view on stackexchange narkive permalink

Du skal hellere stille dine spørgsmål med en eller anden form for eksempeloutput, så svarene ikke er baseret på gætterier.

Betyder iam at indlæse strukturen betyder

  • Jeg skrev et program, hvor jeg bruger OpenProcess () ReadProcessMemory ()

eller betyder det

  • jeg åbner den rå fil med FILE * fp; fopen ("c: \ XXX", "wb") fread (fp); eller indlæs det i f.eks. ollydbg eller i en hexeditor

Forudsat at du bruger ReadProcessMemory vil den buffer, du har angivet, blive udfyldt med bytes. Det er op til dig at kaste det til den rette type for at få adgang til forskellige medlemmer af strukturen (ja du har brug for en gyldig prototype af strukturen på forhånd).

En pseudoform kunne være sådan

  type resultat; BYTE foo [0x100]; Mystruct * blah; int s1; PSTR s2; result = ReadProcessMemory (hvor, howmuch, destination, VerifiactionPointer) blah = (MyStruct *) destination; s1 = blah->someint; s2 = blah->somestring;  

Den hukommelse, du ser, vil altid indeholde hex-byte, der ikke kan skelnes fra hinanden. Det er som ler i hænderne på en pottemager.

Kun håndværkeren kan give det form. Ler i sig selv kan aldrig blive en statue eller en fint udformet tekande.

Det er værd at bemærke, at strukturer i hukommelsen kunne være større end hvad de skulle være i henhold til kildekoden, medmindre `pakke`, hvor de blev brugt i definitionen af ​​strukturen, de måske justerede i hukommelsen og derfor havde større størrelse.


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 3.0-licens, den distribueres under.
Loading...