我使用ReadProcessMemory函数读取外部运行的应用程序的内容,我有一个指向PChar(UNICODE)的内存地址。我想知道将值返回到字符串变量的正确方法是什么?
现在我正在使用这段代码,但不起作用
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请求
发布于 2012-05-26 00:54:36
您正在读取字符串:不是读取字节,而是读取字符,因此将空终止符与char进行比较,即:
until (c=#0) or (BytesRead<>sizeof(c));#0已经是2个字节,#0#0是4个字节(不能等于任何Char)。
当您读取字符串并“进入无法访问的进程区域”(按照文档)时,将返回一个错误。
https://stackoverflow.com/questions/10762387
复制相似问题