只会挂一档 发表于 2011-4-3 14:22:58

DELPHI 如何取游戏基址的数值

写了一个注入游戏辅助,游戏人物小退时人物基址的数值是0,(游戏基址为4字节DWORD类型)如何取出他的值(注已经是基址没有偏移的)(我想让人物小退时时钟自动停止)
我的代码如下,但人物小退后时钟没有停,导致游戏出错!请大大们指点下
Function pd:Integer ; //判断人物
var
   a:PDWORD;
Begin
Try
    Begin
      a:=Pointer(Base);
      Result := a^;
    end;
except
    Result := 0;
end;
end;
时钟事件
IF PD>0 then
begin
......
end;

魔鬼天使 发表于 2011-4-3 14:23:11

你读取数值只读取了一次,时钟调用的是不是一直在调用这个数值而没有及时得到最新数值

userchm 发表于 2011-4-3 14:23:21

类似这样子:
var   
    ProcessID: Thandle;    //目标进程句柄
    ReadByte: Dword;
ReadProcessMemory(ProcessID,Pointer(Base),@a,sizeof(a),ReadByte);    //读取
ifa=0then    //判断
begin
    Timer1.Enabled := False;    //计时器关
end;

iamplayboy 发表于 2011-4-3 14:25:10

如果是注入的,你的PD函数直接用指针读取游戏基址的数值,返回a的数值,但时钟事件不能那么写:
IF PD>0 then 这里的PD函数不能直接参与判断
你可以:
var
    b : cardinal
begin
    b := PD();
    IF b>0 then
    begin
    ……
end;
页: [1]
查看完整版本: DELPHI 如何取游戏基址的数值