树上爬的猪 发表于 2011-4-4 10:01:09

请教一下,大大们.为什么修改不了内存地址的值,

请教一下,大大们.为什么修改不了内存地址的值,读取窗口进程和读取游戏数值均正常

var
HRoGame:HWND; //窗口句柄
PidRoGame:DWORD;//进程ID
HProcessRoGame:THandle;//进程句柄
PropertyRoGame:DWORD; //属性点
ChangeP:DWORD;//修改剩余属性点
{获取游戏进程状态等信息}
procedure TForm1.FormCreate(Sender: TObject);
begin
//获取窗口句柄
HRoGame:= FindWindow(nil,'儔僌僫儘僋僶僩儖僆僼儔僀儞捛壛僔僫儕僆3');
//判断是否正常获取游戏窗口句柄
if HRoGame = 0 then
   begin
   messageBox(0,'请先进入游戏切换出来再开修改器! ','=-Lomo提示: -=',MB_OK);
   lblTips.Font.Color :=clRed;//设置提示标签字体颜色
   lblTips.Caption := '提示:未打开游戏...';
   end
else
//获取进程ID
GetWindowThreadProcessId(HRoGame,PidRoGame);
//获取进程句柄
HProcessRoGame:=OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE,False
,PidRoGame);
//读取未加属性点
end;
{通过时钟过程,实时更新游戏信息数据}
procedure TForm1.tmr1Timer(Sender: TObject);
begin
//读取未加属性点
ReadProcessMemory(HProcessRoGame,Pointer($025116C0),@PropertyRoGame,4
,ReadByte);
//显示未加属性点
self.edtproperty.Text := intToStr(PropertyRoGame);
end;


procedure TForm1.btnEnableClick(Sender: TObject);
begin
ChangeP:=StrToInt(edtCPro.text);
if changep>=PropertyRoGame then
   begin
   HProcessRoGame := OpenProcess(PROCESS_ALL_ACCESS,False,ReadByte);
   WriteProcessMemory(HProcessRoGame,Pointer($025116C0),@Changep,4,ReadByte);
   MessageBox(0,'成功','提示',MB_OK);
   end
else
   MessageBox(0,'修改值必须大于或等于原始值','提示',MB_OK);
end;

一阵狂风 发表于 2011-4-4 10:01:20

直接ChangeP:=PropertyRoGame

一阵狂风 发表于 2011-4-4 10:01:27

并且都声明为全局变量
页: [1]
查看完整版本: 请教一下,大大们.为什么修改不了内存地址的值,