procedure xxx;
var
  hLib: THandle;
  tInf: TModuleInfo;
  s:string;
begin
  hLib:= LoadLibrary('xxx.dll');
  if hLib <> 0 then
  begin
GetModuleInformation(GetCurrentProcess, hLib, @tInf, SizeOf(tInf));
s :=Format('%d', [DWORD(tInf.lpBaseOfDll)]);
end;===================
如上代码, 是取得游戏里加载的xxx.dll基址. 用线程dll hook 游戏是可以直接用的.但我想用一个独立的程序去读这个游戏dll的基址. 怎么实现呢. (是不是GetCurrentProcess 用什么替换?)

解决方案 »

  1.   

    CreateToolhelp32Snapshot 
    Process32First
    Process32Next
    枚举到你要得到信息的进程.
    然后OpenProcess 打开进程.其中返回值填入到GetModuleInformation第一个参数.
      

  2.   

    CreateToolhelp32Snapshot 
    Process32First 
    Process32Next 
    枚举到你要得到信息的进程. 
    然后OpenProcess 打开进程.其中返回值填入到GetModuleInformation第一个参数.
      

  3.   

    procedure yzzd_dkjc ;
    begin
    GetWindowThreadProcessId(FindWindow('类名','窗口标题'), @drProcessID);
    drProcessHandle := OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_VM_OPERATION, true, drProcessID);
     end;================drProcessHandle 做为句柄 不对.  听说 GetCurrentProcess 是个什么伪句柄....
      

  4.   

    GetCurrentProcess返回当前进程句柄。
      

  5.   

    查找窗口打开进程得到drProcessHandle 句柄也不对