爱琴琴ZL 发表于 2012-11-25 20:23:51

偶想做个红色警戒修改器,但读取内存时出问题请帮我解决下

本帖最后由 爱琴琴ZL 于 2012-12-31 21:42 编辑

金钱基址:00A83D4C    偏移地址:30C
这个地址0A93EF50+30C= 0A93F25C这两个地址都变动的 0A93EF500A93F25C

我想修改金钱为99999,并且99999保持不变但保持不变还不知道 怎么实现

procedure TForm1.hotykey(var msg: TMessage);
begin
if (msg.LParamHi = VK_NUMPAD1) then
begin
      GameH := FindWindow(nil, 'Yuri''s Revenge');
      GetWindowThreadprocessID(GameH,GamePid);
      GameProc := OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE,false,GamePid);
      ReadProcessMemory(GameProc,Pointer($00A83D4C),@mNum,4,tmpNum);
      self.lblText.Caption := IntToHex(mNum,8);
      if (GameProc <> 0) then
      begin
          WriteProcessMemory(GameProc,Pointer($00A83D4C),@money,4,lpNumberOfBytes);
      end;
请帮我看看,这段代码有没有问题。现在可以读了但是写有问题一点反应都没有。WriteProcessMemory不知道 正确否。



经过努力,偶已经解决这个问题了。{:5_100:}

Tzdner_C 发表于 2012-11-26 09:39:13

很简单,调试一下吗。。。 跟到ReadProcessMemory函数之前,看一下各个参数是否正确。你这种最可能的问题是。第三个参数@mNum,4。。。。。。。这个是存放数据的缓冲区吧。肯定是你这个缓冲区有问题。你在哪里定义的?   好好看看。如果其他参数有问题,顶多是返回失败,绝对不会崩溃。。。API函数没事就蹦,谁还敢用?   

拉登o睡觉 发表于 2012-11-26 22:17:43

要是单击游戏,你既然已经找到基址了,为什么不用OD直接修改得了,把值直接改成最大!

伦敦和尚 发表于 2012-11-26 22:19:03

拉登o睡觉 发表于 2012-11-26 22:17 static/image/common/back.gif
要是单击游戏,你既然已经找到基址了,为什么不用OD直接修改得了,把值直接改成最大!

对啊,单机用OD修改。

爱琴琴ZL 发表于 2012-11-27 07:09:00

基地已经找到了,但是我想用 delphi 制作修改器来修改。

aminghanhua 发表于 2012-11-28 14:08:15

1、首先 $00A83D4C就是金钱地址吗 您找的地址没有偏移吗?   否则下次进入游戏就不是这个地址了
2、如果是这样 开始money赋值为99999
3、不知道您的具体的怎么写的 也不好说 不好意思

爱琴琴ZL 发表于 2012-11-28 16:23:20

aminghanhua 发表于 2012-11-28 14:08 static/image/common/back.gif
1、首先 $00A83D4C就是金钱地址吗 您找的地址没有偏移吗?   否则下次进入游戏就不是这个地址了
2、如果是 ...

哦,找到了,晚上补好。

爱琴琴ZL 发表于 2012-12-3 22:47:56

难道就没有人能解决吗?

乱舞 发表于 2013-1-5 22:49:06

加QQ309505449 一起学习。

心驰神往 发表于 2020-12-7 11:42:23

{:10_254:}
页: [1]
查看完整版本: 偶想做个红色警戒修改器,但读取内存时出问题请帮我解决下