我现在在用Delphi写一个小程序遇到一个问题,但Delphi版人气是在太差了,只有在这里发帖求助了:
我因某种特殊原因必须用ReadProcessMemory来读取别的程序的一个字符串的值,我通过Hook ExtTextoutW函数来得到这个变量的地址,我的替代函数是这样写的:
function MyExt(DC: HDC; X, Y: Integer; Options: Longint;
Rect: PRect; Str: PWideChar; Count: Longint; Dx: PInteger): BOOL; stdcall;
var
crd:Cardinal;
begin
……
if Str='100' then
begin
SendInfo(2,True,'Addr:',Integer(str));
str:='llt';
end; ……
end;
其中SendInfo是我自己写的一个函数,作用是把第3、4个参数发送给另一个用来接收数据的程序,这个接收数据的程序显示Addr:76AF72F0
我认为这个76AF72F0应该就是那个字符串的地址了,然后我用
ReadProcessMemory(processhandle,$76AF72F0,mypwidechar,3,dwsize);
来读取他的值(其中mypwidechar是一PwideChar变量,processhandle是正确的),但是读到的却并非我想要的内容,请问我这种取地址、读数据的方法对吗?
我因某种特殊原因必须用ReadProcessMemory来读取别的程序的一个字符串的值,我通过Hook ExtTextoutW函数来得到这个变量的地址,我的替代函数是这样写的:
function MyExt(DC: HDC; X, Y: Integer; Options: Longint;
Rect: PRect; Str: PWideChar; Count: Longint; Dx: PInteger): BOOL; stdcall;
var
crd:Cardinal;
begin
……
if Str='100' then
begin
SendInfo(2,True,'Addr:',Integer(str));
str:='llt';
end; ……
end;
其中SendInfo是我自己写的一个函数,作用是把第3、4个参数发送给另一个用来接收数据的程序,这个接收数据的程序显示Addr:76AF72F0
我认为这个76AF72F0应该就是那个字符串的地址了,然后我用
ReadProcessMemory(processhandle,$76AF72F0,mypwidechar,3,dwsize);
来读取他的值(其中mypwidechar是一PwideChar变量,processhandle是正确的),但是读到的却并非我想要的内容,请问我这种取地址、读数据的方法对吗?
这么一般属于系统区域了 一般放系统DLL的 个人认为不会是你想要的地址。