Schrift
[thread]1289[/thread]

Speicher in Windows auslesen: Speicher eines Programms auslesen

Leser: 1


<< >> 2 Einträge, 1 Seite
SEA
 2007-01-06 00:31
#11813 #11813
User since
2006-10-06
6 Artikel
BenutzerIn
[default_avatar]
Hallo Perl-community!

Mein Ziel ist es ein Speicherabbild eines laufenden Programms in eine Datei zu schreiben. Wichtig ist vorallem, dass ich die Arbeitsdaten das Programms bekomme.

1. Ist das überhaupt mit perl möglich?
2. Ich hab CPAN durchwühlt und bin auf
http://search.cpan.org/~qjzhou/Win32-Process-Memory-0.20/Memory.pm
gestoßen. Bin ich da richtig? :-P

3. Mein Testprogramm sieht folgendermaßen aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use Win32::Process::Memory;
use Win32::Process::Info;

# open process
my $proc = Win32::Process::Memory->new({ name=>'calc.exe' });

#debug
printf "\nTotal Memory = 0x%X\n", $proc->get_memtotal;

#muhaa
print "\nMemory block list:\n";

my %memlist = $proc->get_memlist;

for(sort {$a <=> $b} keys(%memlist))
{
print "$_=$memlist{$_}\n";
print $proc->hexdump($_, 4096);
}

Wenn ich nun "calc.exe" starte, bekomme ich auch ein Speicherabbild. Aber was mich wundert ist, dass das so groß ist! Deshalb lese ich ersteinmal für Testzwecke nur die ersten 4096 Bytes jedes Speicherstücks ...
Nun meine Frage: Was fürn Stück Speicher sehe ich denn auf meinem Bildschirm? Ist das wirklich das Gewollte?

Vielen Dank im voraus! :-)

Tschü Stefan
esskar
 2007-01-06 08:49
#11814 #11814
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ja, du hast alles richtig gemacht. :)
ich denke, es kommt dir nur so groß vor, da du es als hexdump dumpst.
und natürlich werden auch alle dll's etpp angezeigt
<< >> 2 Einträge, 1 Seite



View all threads created 2007-01-06 00:31.