本文整理自网络,侵删。
刚学习的时候直接读取基值是很简单的,但是类型[[[00a41ff0+1c]+34]+490]这样的偏移数值应该如何读取呢?下面给大家分享下Delphi 的代码:
复制代码var GameH:HWND; {定义窗口句柄} GamePid:DWORD; {定义窗口进程ID} ReadByte:SIZE_T; {实际读取字节} Gamehprocess: THandle; {就是非负数的整数类型 定义进程句柄} HP:DWORD; Text:DWORD; {看下面代码你就知道为什么要定义它了} //完美血值基值 [[[00a41ff0+1c]+34]+490]begin GameH:=FindWindow(nil,'完美世界国际版'); //取窗口句柄 GetWindowThreadProcessId(GameH,GamePid); //获取进程ID Gamehprocess:=OpenProcess(PROCESS_All_Access,False,GamePid); //获取进程句柄 ReadProcessMemory(Gamehprocess,Pointer($00a41ff0),@Text,4,ReadByte); //读取00a41ff0内存的值 ReadProcessMemory(Gamehprocess,Pointer(Text+$1c),@Text,4,ReadByte); //读取00a41ff0+1C的值 ReadProcessMemory(Gamehprocess,Pointer(Text+$34),@Text,4,ReadByte); //读取00a41ff0+1C+34的值 ReadProcessMemory(Gamehprocess,Pointer(Text+$490),@HP,4,ReadByte); //读取00a41ff0+1C+34+490的值 lbl2.Caption:=inttostr(Hp); //显示血值end;
https://www.cnblogs.com/ahroot/archive/2011/10/31/2230609.html
相关阅读 >>
Delphi中输入框不能输入初数字意外的字符串的函数(isnumeric)
Delphi 判断时间是否是下午 dateutils.ispm
更多相关阅读请进入《Delphi》频道 >>