现在越来越多的游戏采用64位客户端进程,CreateToolhelp32Snapshot函数将不能正确获取游戏进程基址,我发现网上也没有一个正确的教程如何来获取64位游戏进程.
工具/原料
VC++
方法/步骤
1、首先我们需要几行简单的代码获取游戏进程权限
2、利用EnumerateLoadedModules64()函数来枚举指定进程加载的所有module,EnumerateLoadedModules64(hProcess,(PENUMLOADED_MODULES_CALLBACK64)MyEnumerateLoadedModulesProc64,(PVOID)pVer);第一个参数是进程句柄,第二参数是回调函数,第三个参数是回调使用的上下文,pvoid类型的.第二个参数要强制转换为(PENUMLOADED_MODULES_CALLBACK64),不然会报错.
3、编写回调函数MyEnumerateLoadedModulesProc64(),蜣贺鱿柢代码如下:BOOLCALLBACKMyEnumerateLoadedModulesPr泠贾高框oc64(PTSTRModuleName,DWORD64ModuleBase,ULONGModuleSize,PVOIDUserContext){//加入你的判断代码得到游戏进程基址//例如if(ModuleName==你的游戏进程名){Base_游戏基址=ModuleBase//returnFalse};returnTrue;}这里的返回值为真,将会一直调用这个函数,直到枚举完所有模块.返回值为假将会停止调用.无需添加循环判断,非常好用.注意:Base_游戏基址要使用全局变量.