delphi_zw 发表于 2013-7-24 09:46:06

DllBase := GetModuleHandle('MSVCRT.DLL') 是这样获取DLL基址吗?

本帖最后由 delphi_zw 于 2013-7-24 14:46 编辑


PidHandle:=OpenProcess(PROCESS_ALL_ACCESS,False,PidId);

DllBase:=GetModuleHandle('MSVCRT.DLL') 是这样获取DLL基址吗?



C++ 代码是这样的
DWORD base = (DWORD)GetModuleHandle("MSVCRT.DLL")// get the RendDX9 you need this for the base address

那么用DELPHI这样写应该是没错,不知道为什么不错,前面我已经将dllbase定义为DWORD类型了,
另外,我前有一段是打开别的进程的,然后执行这些代码,我的目的就是要取某个进程中加载的这个DLL基址



comeheres 发表于 2013-7-24 10:16:31

对的吧{:5_103:}

comeheres 发表于 2013-7-24 10:19:02

但只能获取到本程序进程内已加载的模块(exe或dll)句柄

delphi_zw 发表于 2013-7-24 14:47:53

comeheres 发表于 2013-7-24 10:19 static/image/common/back.gif
但只能获取到本程序进程内已加载的模块(exe或dll)句柄

你是说获取的不是基址,是句柄?那我要获取别的进程,加载的DLL基址 代码怎么写呢

comeheres 发表于 2013-7-24 17:06:23

本帖最后由 comeheres 于 2013-7-24 17:33 编辑

delphi_zw 发表于 2013-7-24 14:47 static/image/common/back.gif
你是说获取的不是基址,是句柄?那我要获取别的进程,加载的DLL基址 代码怎么写呢你贴的代码,应该先注入,再获取基址吧

delphi_zw 发表于 2013-7-25 08:54:23

代码:

   PidHandle:=OpenProcess(PROCESS_ALL_ACCESS,False,PidId);
   DLLbase:=   GetModuleHandle('MSVCRT.DLL');
   gamebase := DLLbase+Offset;
   ShowMessage (IntToStr(gamebase));
closehandle(PidHandle);


在WINXP上可以正确获取到这个DLL+偏移的基址,在WIN8不知道为什么不行。。。。还望大师指点,谢谢!
页: [1]
查看完整版本: DllBase := GetModuleHandle('MSVCRT.DLL') 是这样获取DLL基址吗?