问个问题,烦了一早上了,大虾们帮我看看!!unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
hw:HWND;
Pid:dword;
h:THandle;
tt:Cardinal;
temp1,temp2:dword;
const
Reffset:DWORD=$004621C4;
Resource:DWORD=$21742174;
begin
hw:=FindWindow(nil,'test1');
if hw=0 then
panel1.Caption:='未能发现test1窗口'
else
begin
GetWindowThreadProcessId(hw,@Pid);
h:=OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
if h=0 then
exit;
panel1.Caption:='权限成功打开'; ReadProcessMemory(h,pointer(Reffset),@temp1,4,tt);
panel1.Caption:=panel1.Caption+inttohex(temp1,4); WriteProcessMemory(h,pointer(Reffset),@Resource,sizeof(Resource),tt); ReadProcessMemory(h,pointer(Reffset),@temp2,4,tt);
panel1.Caption:=panel1.Caption+'第二次取值为:'+inttohex(temp2,4);
CloseHandle(h);
end;end;end.问题:就是修改不了
WriteProcessMemory(h,pointer(Reffset),@Resource,sizeof(Resource),tt);的值
如果说哪里错误嘛,readprocessMemory读取那地址的值又正确(我用WINHEX检查的)其中test1这窗口也是我自己做来测试的,我用WINHEX修改就行,用我自己做的(上面的程序)就修改不了!!
----------------------------------------------
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
hw:HWND;
Pid:dword;
h:THandle;
tt:Cardinal;
temp1,temp2:dword;
const
Reffset:DWORD=$004621C4;
Resource:DWORD=$21742174;
begin
hw:=FindWindow(nil,'test1');
if hw=0 then
panel1.Caption:='未能发现test1窗口'
else
begin
GetWindowThreadProcessId(hw,@Pid);
h:=OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
if h=0 then
exit;
panel1.Caption:='权限成功打开'; ReadProcessMemory(h,pointer(Reffset),@temp1,4,tt);
panel1.Caption:=panel1.Caption+inttohex(temp1,4); WriteProcessMemory(h,pointer(Reffset),@Resource,sizeof(Resource),tt); ReadProcessMemory(h,pointer(Reffset),@temp2,4,tt);
panel1.Caption:=panel1.Caption+'第二次取值为:'+inttohex(temp2,4);
CloseHandle(h);
end;end;end.问题:就是修改不了
WriteProcessMemory(h,pointer(Reffset),@Resource,sizeof(Resource),tt);的值
如果说哪里错误嘛,readprocessMemory读取那地址的值又正确(我用WINHEX检查的)其中test1这窗口也是我自己做来测试的,我用WINHEX修改就行,用我自己做的(上面的程序)就修改不了!!
----------------------------------------------
用变量代替常量看看。