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 :]