首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ReadProcessMemory读取pchar

如何使用ReadProcessMemory读取pchar
EN

Stack Overflow用户
提问于 2012-05-25 23:22:40
回答 1查看 952关注 0票数 2

我使用ReadProcessMemory函数读取外部运行的应用程序的内容,我有一个指向PChar(UNICODE)的内存地址。我想知道将值返回到字符串变量的正确方法是什么?

现在我正在使用这段代码,但不起作用

代码语言:javascript
复制
var
c : char;

repeat
  if not ReadProcessMemory(ph, Address, @c, sizeof(c), BytesRead) then
    raise exception.create(syserrormessage(getlasterror));
  result:=result+c;
  Address:=pointer(integer(address)+sizeof(c));
until (c=#0#0) or (BytesRead<>sizeof(c));

引发此错误。

只完成了部分ReadProcessMemory或WriteProcessMemory请求

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-26 00:54:36

您正在读取字符串:不是读取字节,而是读取字符,因此将空终止符与char进行比较,即:

代码语言:javascript
复制
until (c=#0) or (BytesRead<>sizeof(c));

#0已经是2个字节,#0#0是4个字节(不能等于任何Char)。

当您读取字符串并“进入无法访问的进程区域”(按照文档)时,将返回一个错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10762387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档