看流星社区

 找回密码
 注册账号
查看: 2740|回复: 1

[Delphi] 文本框只显示16进制代码不显示 名字!???

[复制链接]

该用户从未签到

发表于 2011-3-31 09:12:32 | 显示全部楼层 |阅读模式
那位大侠帮忙看一下!谢谢了!  

var  
Gameh:HWND;                 //设Gameh  
GamePid:DWORD;              //设GamePid 为存储游戏ID  
Gamehprocess: THandle;      //设Gamehprocess 为存储游戏进程句柄  
readByte:DWORD;             //设readByte读出数据的实际大小的  
Zhjzsc :DWORD;                  
Zhname:DWORD;            //名字  
begin  
  //获取游戏窗口句柄  
  Gameh:=findwindow(nil,'legend of mir2');  
  //获取进程ID  
  GetWindowThreadprocessID(Gameh,GamePid);  
  //获取进程句柄  
   gamehProcess:=OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE,false,GamePid);  
   //读出主号基址的地址  
   Readprocessmemory(gamehProcess, Pointer($05f3e20),@Zhjzsc,4,  readByte);  
   //读出主号基址的地址+1级偏移24 主号名称的数据地址  
   Readprocessmemory(gamehProcess, Pointer(Zhjzsc+$24),@Zhjzsc,4,  readByte);  
    //读出主号基址的地址+0级偏移0 主号名称的数据  
   Readprocessmemory(gamehProcess, Pointer(Zhjzsc+$0),@Zhname,4,  readByte);  
   //显示主号名称信息  
   self.Edit1.Text:= intToHex(Zhname,8);  
end;  


为什么文本框输出的是 16进制代码,而不是 文本(如游戏人物名称)

该用户从未签到

发表于 2011-3-31 09:13:22 | 显示全部楼层
读取内存中的字符(Unicode And Ascii)

很久前写的函数了
function ReadStr(hProcess: THandle; add, size: Integer): string;  
var  
  Buffer: array[0..100] of Char;  
  num: cardinal;  
begin  
  ReadProcessMemory(hProcess, Pointer(add), @Buffer, size, num);  
  Buffer[size] := #0;  
  Result := Buffer;  
end;
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

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

GMT+8, 2024-4-18 18:46

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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