为了大家看的方便,编程环境又用的是DELPHI2010,所以一些变量就用汉字来定义了. procedure TfrmMain.Button8Click(Sender: TObject); var 怪物基址, 怪物类型, 怪物数组下标, 怪物服务器ID, 怪物当前血, 怪物最大血, 怪物等级: PDword; 怪物距离: PSingle; 怪物名字: PAnsiChar; i: Integer; begin Memo1.Lines.Clear; Memo1.Lines.add('怪物名字 怪物基址 怪物类型 怪物下标 怪物ID 怪物距离'); for i := 1 to 64 do begin 怪物基址 := Pointer($05EBCA78 + i * 4); // 第一个为角色,类型为$31,以后为怪物 if 怪物基址^ = 0 then Break; 怪物类型 := Pointer(怪物基址^ + 8); // +8 :有可能是对象分类 怪是$2E if 怪物类型^<>$2E then Continue; 怪物数组下标 := Pointer(怪物基址^ + $0C); // +C :数组下标 怪物服务器ID := Pointer(怪物基址^ + $14); // 服务器上 对象ID(对象在服务器唯一ID标识)(?) 怪物距离 := Pointer(怪物基址^ + $31C); // 怪到玩家距离 怪物名字 := PAnsiChar(怪物基址^ + $320); // 怪对象名字 怪物当前血 := Pointer(怪物基址^ + $610); 怪物最大血 := Pointer(怪物基址^ + $62C); 怪物等级 := Pointer(怪物基址^ + $614); Memo1.Lines.add(怪物名字+' '+ IntToHex(怪物基址^, 8) + ' ' + IntToHex(怪物类型^, 8) + ' ' + IntToHex(怪物数组下标^, 8) + ' ' + IntToHex(怪物服务器ID^, 8) + ' ' + FormatFloat('#0.00',怪物距离^)+' '+ inttostr(怪物当前血^)+'/'+inttostr(怪物最大血^)+' '+ inttostr(怪物等级^)+'级'); end; end; www.tansoo.cn