看流星社区

 找回密码
 注册账号
查看: 2696|回复: 2

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

[复制链接]

该用户从未签到

发表于 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 | 显示全部楼层
并且都声明为全局变量
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 05:47

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表