[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

Delphi - ReadProcessMemory () pytanie

gazeta.pl

4/27/2007 7:26:00 PM

Zaczne od przywitania sie, witam !, Dawno mnie tu nie by3o, ale jak widaa
zawsze znajdzie sie co? czego sie niewie :P

Zatem mam taki problem, mam sobie kod...

================
var
buf: char;
iStart,iStop: integer;
================
GetWindowThreadProcessId(FindWindow(nil,'caption okna'), @pID);
pH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);

iFile := TFileStream.Create('c:\test.txt', fmOpenWrite);
while (iStart < iStop ) do begin
ReadProcessMemory(pH, Pointer(iStart), @buf, 1, nR);
if (Ord(buf)<>0) then iFile.Write(buf,1);
iStart := iStart + 1;
end;
iFIle.Free;
CloseHandle(pH);
====================
Ten kod jak widaa pobiera proces z okna uruchomionego pod wind? wyci?ga z
niego handle procesu nastepnie otwiera dostep do pamieci procesu i odczytuje
j? bit po bicie zapisuj?c do pliku.

I teraz pytanie, uruchomi3em to w zakresie adresu pamieci od 0 do 16000000
czyli od $000000 do $FFFFFF i szczerze powiedziawszy dosta3em ca3y ?mietnik
z pamieci 3acznie z innymi procesami, danymi z windy, list? procesów, wsumie
wszystko co mo?liwe ale nie to co znajduje sie w pobieranym oknie. Czy kto?
mo?e wie jak bardziej precyzyjnie odwo3?a sie do zakresu adresów w pamieci
gdzie znajduj? sie dane zmienne wskazanego procesu a nie ?mietnik :]

1 Answer

Bogus

4/30/2007 7:25:00 PM

0

Dnia 27-04-2007 o 21:26:12 gazeta.pl <daedeloth@tlen.pl> napisaÅ?(a):

> Zaczne od przywitania siÄ?, witam !, Dawno mnie tu nie byÅ?o, ale jak widaÄ?
> zawsze znajdzie siÄ? coÅ? czego siÄ? niewie :P

Ja też witam :)

> Zatem mam taki problem, mam sobie kod...
[...]
> ====================
> Ten kod jak widaÄ? pobiera proces z okna uruchomionego pod windÄ? wyciÄ?ga z
> niego handle procesu nastÄ?pnie otwiera dostÄ?p do pamiÄ?ci procesu i odczytuje
> jÄ? bit po bicie zapisujÄ?c do pliku.
>
> I teraz pytanie, uruchomiÅ?em to w zakresie adresu pamiÄ?ci od 0 do 16000000
> czyli od $000000 do $FFFFFF i szczerze powiedziawszy dostaÅ?em caÅ?y Å?mietnik
> z pamiÄ?ci Å?acznie z innymi procesami, danymi z windy, listÄ? procesów, wsumie
> wszystko co możliwe ale nie to co znajduje siÄ? w pobieranym oknie.

> Czy ktoÅ?
> może wie jak bardziej precyzyjnie odwoÅ?Ä?Ä? siÄ? do zakresu adresów w pamiÄ?ci
> gdzie znajdujÄ? siÄ? dane zmienne wskazanego procesu a nie Å?mietnik :]

Jeżeli chcesz odczytaÄ? zawartoÅ?Ä? okna, np. TEdita albo etykietÄ? TButtona,
to GetWindowText(). Jeżeli chodzi Ci o zmienne globalne, to muszisz
obczaiÄ? gdzie je program trzyma, a nastÄ?pnie zczytaÄ? znane już adresy.
Najgorzej pewnie bÄ?dzie ze stosem, ale myÅ?lÄ? że GetThreadContext i inne
funkcje z grupy debug Ci pomogÄ?.

Pozdrawiam

--
BoguÅ?
www.google.pl <-- to nie boli
http://bogu...