windows - Hvad betyder begyndelsen af ​​proceshukommelse

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at lære mere om, hvordan man læser proceshukommelse. Så jeg åbnede 'hele hukommelsen' af Firefox-processen i WinHex og så følgende hex-værdier, der starter ved offset 10000.


00 00 00 00 00 00 00 00 EC 6B 3F 80 0C 6D 00 01 EE FF EE FF 01 00 00 00


Mit spørgsmål er
Er det muligt for et menneske at fortolke dette uden yderligere viden? Er disse pointers eller værdier? Er der noget, som er fælles for forskellige programmer, der er oprettet med forskellige kompilatorer med hensyn til proceshukommelsen bortset fra ting som endianness? Hvorfor starter det med masser af nuller, er det ikke en meget mærkelig måde at begynde at bruge plads på?

Bedste reference


Du kan selvfølgelig ikke gøre noget uden yderligere viden. 'Men vi ved allerede meget af, at det er Windows. Til at begynde med ved vi, at den eksekverbare får sin egen visning af hukommelsen, og i den virtuelle visning er den eksekverbare indlæst ved sin foretrukne startadresse (som angivet i EXE-overskriften).


Starten på 0x00010000 er en kompatibilitetssag med MS-DOS (ja det 16 bit-operativsystem) - de første 64KB er reserveret og er aldrig gyldige adresser. Sidene op til 0x00400000 (4 MB) er forbeholdt OS, og generelt varierer OS-versionerne.


En fælles datastruktur i dette område er procesmiljøblokken. Med WinDBG-værktøjet og Microsoft Symbol Server kan du finde ud af, om Process Envirionment Block faktisk er placeret på offset 0x10000, og hvad dets indhold betyder.