function TForm1.intncnr(addncnr:longint;rnd:DWORD):longint;
var
   Num :cardinal;
   mNum :integer;
   pHandle: Thandle;    //很重要
begin
   pHandle:= OpenProcess(PROCESS_ALL_ACCESS,false,pid);//获得进程句柄
    if pHandle <> 0 then
   ReadProcessMemory(pHandle, Pointer(addncnr), Pointer(@mNum), sizeof(rnd),Num);
   CloseHandle(pHandle); //关闭句柄释放内存
   result :=mNum;end;调用方法
ShowMessage(inttostr(intncnr(intncnr(intncnr($041171c,4)+$0,4)+$c,1))); 最后提示应该返回1字节的数字为什么总是返回的4字节的数字呢?

解决方案 »

  1.   

    sizeof(rnd) = sizeof(DWORD) == 4
      

  2.   

    ReadProcessMemory(pHandle, Pointer(addncnr), Pointer(@mNum), rnd, Num); 改成这样。
      

  3.   

    老大,sizeof(rnd) = sizeof(DWORD) == 4 这句下在那?
      

  4.   

    function TForm1.intncnr(addncnr:longint;rnd:integer):longint;
    var
       Num :cardinal;
       mNum :integer;
       pHandle: Thandle;    //很重要
    begin
       pHandle:= OpenProcess(PROCESS_ALL_ACCESS,false,pid);//获得进程句柄
        if pHandle <> 0 then
       ReadProcessMemory(pHandle, Pointer(addncnr), Pointer(@mNum), rnd, Num);
       CloseHandle(pHandle); //关闭句柄释放内存
       result :=mNum;end;调用方法 
    ShowMessage(inttostr(intncnr(intncnr(intncnr($041171c,4)+$0,4)+$c,1))); 最后提示应该返回1字节的数字为什么总是返回的4字节的数字呢?还是一样啊,返回的还是不对。