Delphi XE2读取内存偏移数据代码


本文整理自网络,侵删。

 
刚学习的时候直接读取基值是很简单的,但是类型[[[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 用注册表对Delphi程序进行验证

Delphi json字符串转义

Delphi实现屏幕抓图

Delphi 10.3新特性 内联变量

Delphi fdmemtable内存表操作

Delphi中实现密码框“大写锁定打开”的提示

Delphi 让子窗体显示最大化

Delphi中输入框不能输入初数字意外的字符串的函数(isnumeric)

Delphi获取文件大小

Delphi 判断时间是否是下午 dateutils.ispm

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...