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.
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.