[ de_c0der @ 13.01.2007. 16:05 ] @
Trebam iscitat cijeli stack jednog programa ciji stack se krece od $0022E000 do $0022FFFC i prvo program zapne na $0022E000 (sa GetLastError dobijem da je error 5 iliti ACCESS DENIED) i nigdje vise ne zapne, sve ostalo u redu prodje.. sve to spremim u jedan .txt fajl i podaci se totalno razlikuju nego kad gledam taj stack sa debuggerom, ne kontam.. izgleda mi da je kod sasvim u redu: Code: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, StdCtrls; type TForm2 = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; Open1: TMenuItem; Exit1: TMenuItem; OpenDialog1: TOpenDialog; Memo1: TMemo; Help1: TMenuItem; About1: TMenuItem; procedure About1Click(Sender: TObject); procedure Open1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Exit1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure SkenirajMemoriju(Path:string); var ProcessInformation:TProcessInformation; StartupInfo:TStartupInfo; buff:byte; x:Integer; Readed:cardinal; f:TextFile; begin AssignFile(f,'c:\MemoryDump.txt'); Rewrite(f); FillMemory(@ProcessInformation, Sizeof(ProcessInformation), 0); FillMemory(@StartupInfo, Sizeof(StartupInfo),0); CreateProcess(PChar(Path), 0, 0, 0, false, 0, 0, 0, StartupInfo, ProcessInformation); for x:=$0022E000 to $0022FFFC do begin if ReadProcessMemory(ProcessInformation.hProcess, Ptr(x), @buff, 1, Readed)=true then WriteLn(f,IntToHex(x,0)+':'+IntToHex(buff,0)) else MessageBox(0,PChar('Zapelo na adresi:'+IntToHex(x,0)),PChar('Problem:'+IntToStr(GetLastError)),0); end; MessageBox(0,'Gotovo!!! :)','Informacija',0); CloseFile(f); end; procedure TForm2.Exit1Click(Sender: TObject); begin Exit; end; procedure TForm2.FormCreate(Sender: TObject); begin Memo1.Text:=''; end; procedure TForm2.Open1Click(Sender: TObject); begin if OpenDialog1.Execute then begin SkenirajMemoriju(OpenDialog1.FileName); end; end; procedure TForm2.About1Click(Sender: TObject); begin MessageBox(0,'Memory Scaner','About..',0); end; end. |