9E2 Skrevet 23. mars 2009 Del Skrevet 23. mars 2009 (endret) Hei Jeg har tenkt til å lage et program som kan lagre minnet til en prosess i ei fil, for så å kunne hente den fram igjen seinere. Jeg hadde tenkt meg noe slikt: Et tilfeldig program, som Notisblokk, er åpent, og det er gjort endringer i vinduet. La oss si at det står "test" i et Notisblokkvindu. Programmet (som jeg vil lage) «fryser» vinduet, lagrer minnet fra Notisblokk til disken og avslutter prosessen Notisblokk. Ved ei seinere anledning skal programmet kunne lese fila fra disken og laste Notisblokk inn i minnet igjen, nøyaktig slik det var. Notisblokk fortsetter så der den slapp, med "test" i vinduet og angrelogg osv. intakt. Lar dette seg gjennomføre? Jeg har prøvd å se på ReadProcessMemory og WriteProcessMemory, men jeg kommer ingen vei. Jeg holder på med VB.NET 2008. På forhånd takk Endret 23. mars 2009 av 9E2 Lenke til kommentar
GeirGrusom Skrevet 23. mars 2009 Del Skrevet 23. mars 2009 Det er vel mulig... men jeg vet ikke om noen måte å finne ut hvilke deler av et prograam sitt minneområde som faktisk er allokert... Du vil gså måtte krangle med minneallokeringsrutinene i windows. En mulighet er vel kanskje å skrive over AllocHGlobal Og FreeGlobal og lignende funksjoner med dine egne, men jeg vet ikke, dette er bare gjettemål fra min side egentlig... Jeg tror ikke det funker å bare dumpe de to første GB (32-bit program) fordi delene er ikke nødvendigvis allokert av operativsystemet, men kanskje ReadProcessMemory gir tilbake en feilmelding dersom du prøver å nå uallokert minne? da kunne det vært snakk om å lese 1 byte av gangen, og dersom du ikke får feil, notere hvor minnet dette er. Men du vil da også få et problem som er ganske enkelt å fikse, DLL-er kan ligge i forskjellige deler av minnent til enhver tid, og mappede funksjoner ligger ikke nødvendigvis på samme adresse hver gang programmet starter. Du må også lagre hele akkumulatoren, og jeg vet ikke om noen windows funksjon som gjør det for deg (det er dog en egen x86 instruksjon som gjør det) Lenke til kommentar
9E2 Skrevet 23. mars 2009 Forfatter Del Skrevet 23. mars 2009 Oi, sann ... Det der blei litt for komplisert. Jeg tenkte overhodet ikke på alt som må være på samme sted i minnet (DLL-ene osv.) for at dette skal være mulig. Sjøl adresseparameteren til ReadProcessMemory ligger utafor det jeg er kjent med, så jeg får nok gi opp det her. Men takk for hjelpa uansett! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå