2014-01-15 44 views
0

嗨,首先抱歉我的坏英语。c#我怎么能检测到其他进程的加载DLL

我想创建教练,作弊的游戏。首先,加载器正在运行并加载主游戏可执行文件。比游戏保护软件运行后,从服务器上下载新的dll文件,并将其写入旧版本(补丁程序无法正常运行)是否正在加载并运行target.dll。 我发现哪个偏移地址将被修补在dll文件中。但是,如何检测其何时加载到内存? 我想这个代码

IntPtr hid = GetModuleHandle("target.dll"); 

但其返回0。

OS是W7 SP1

感谢名单..

回答

0

GetModuleHandle返回的句柄模块中的过程,而不是另一个过程。

要监视另一个进程中的DLL,您需要运行应用程序的调试程序,这是“调试”要监视的应用程序的加载。您可以使用debugging API并处理LOAD_DLL_DEBUG_EVENT事件。

你们中许多人需要使用C/C++做到这一点...

+0

欧凯,如果有可能得到主要的exe PID和搜索目标的签名.dll文件与主EXE内存区域中的所有线程? 如果这个过程只需要1或2秒加载和运行和查杀我可以在2秒内捕获内存和补丁吗? – KERTENKELE

+0

如果要修补进程的内存,你需要使用'WriteProcessMemory' API(http://msdn.microsoft.com/en-us/library/windows/desktop/ms681674(v=vs.85).aspx )。但是,这一切都要求您首先充当调试器。需要多长时间取决于您扫描的内容和方式。 – Sean