public static uint LdrLoadDll(IntPtr pathToFile, uint dwFlags, ref Data.Native.UNICODE_STRING moduleFileName, ref IntPtr moduleHandle) { object[] parameters = { pathToFile, dwFlags, moduleFileName, moduleHandle }; var result = (uint)Generic.DynamicApiInvoke("ntdll.dll", "LdrLoadDll", typeof(Delegates.LdrLoadDll), ref parameters); moduleHandle = (IntPtr)parameters[3]; return(result); }
public static IntPtr LoadModuleFromDisk(string dllPath) { var uModuleName = new Data.Native.UNICODE_STRING(); Native.RtlInitUnicodeString(ref uModuleName, dllPath); var hModule = IntPtr.Zero; _ = Native.LdrLoadDll(IntPtr.Zero, 0, ref uModuleName, ref hModule); return(hModule); }
public static void RtlInitUnicodeString(ref Data.Native.UNICODE_STRING destinationString, [MarshalAs(UnmanagedType.LPWStr)] string sourceString) { object[] parameters = { destinationString, sourceString }; Generic.DynamicApiInvoke("ntdll.dll", "RtlInitUnicodeString", typeof(Delegates.RtlInitUnicodeString), ref parameters); destinationString = (Data.Native.UNICODE_STRING)parameters[0]; }