public static ulong GetModuleByName(this Process process, string moduleName) { ulong[] moduleHandleArray = new ulong[1000]; fixed(ulong *hMods = moduleHandleArray) { if (NT.EnumProcessModules(process.Handle, (ulong)hMods, (uint)(sizeof(ulong) * moduleHandleArray.Length), out uint cbNeeded) > 0) { for (int moduleIndex = 0; moduleIndex < cbNeeded / sizeof(ulong); moduleIndex++) { string name = NTM.GetModuleBaseName(process.Handle, moduleHandleArray[moduleIndex]); if (String.Equals(name, moduleName, StringComparison.InvariantCultureIgnoreCase)) { return(moduleHandleArray[moduleIndex]); } } } } return(0); }
public static Dictionary <string, ulong> GetModules(this Process process) { var result = new Dictionary <string, ulong>(); ulong[] moduleHandleArray = new ulong[1000]; fixed(ulong *hMods = moduleHandleArray) { if (NT.EnumProcessModules(process.Handle, (ulong)hMods, (uint)(sizeof(ulong) * moduleHandleArray.Length), out uint cbNeeded) > 0) { for (int moduleIndex = 0; moduleIndex < cbNeeded / sizeof(ulong); moduleIndex++) { string name = NTM.GetModuleBaseName(process.Handle, moduleHandleArray[moduleIndex]); result[name.ToLower()] = moduleHandleArray[moduleIndex]; //if (String.Equals(name, moduleName, StringComparison.InvariantCultureIgnoreCase)) // return moduleHandleArray[moduleIndex]; } } } return(result); }