在一个运行得进程中,如何获得一个数值为一定值得地址
比如在进程a中有一变量值为88888 ,如何查找其内存地址

解决方案 »

  1.   

    同意,等效语句:
    addr(a);
      

  2.   

    最简单的方法就是使用工具软件,比如:FPE、金山游侠、游戏巫师等。
    如果要想在程序中实现,不妨按如下方法一试:
    首先用GetProcessThreadID获得线程ID,通过这个ID,用OpenProcess函数
    来获得线程句柄,用ReadProcessMemory函数来读取内存内容,与已知值比
    较,如果不是,则读下一地址。如此循环,定能找到(如果有的话)。不过
    我觉得,如果不加以限定,一定会读出一些假地址,故而需对所需读取的参
    数应有更多的了解。
      

  3.   

    用Ptr函数, 下面有个例子在win9x下取得地址FEC71(主板序列号)的内容。procedure TForm1.Button1Click(Sender: TObject);
    var
      aa : string;
    begin
      aa := String(Pchar(Ptr($FEC71)));    // Receive Windows 98 main-board Serial No.
      showmessage(aa);
    end;