Hi, ich hab da ein kleines Problem, was mich heute schon so manche Stunde erfolglose Recherche gekostet hat. Und zwar möchte ich unter anderem eine 32-bit DLL in einen 32-bit Prozess injecten. Dafür hab ich mir diverse C#-Injectoren angeschaut und versucht, diese in mein Projekt zu übernehmen, da ich zum selber schreiben leider zu wenig Ahnung von der Thematik habe. Bei allen Versuchen gibt die OpenProcess-Methode aber leider 0 zurück, obwohl die Prozess-ID richtig ist (im TaskManager überprüft) und ich das Ding sogar als Admin starte. Einige Auszüge davon:
oder mit allen RechtenQuote:
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr OpenProcess(uint dwDesiredAccess, int bInheritHandle, uint dwProcessId);
IntPtr hndProc = OpenProcess((0x2 | 0x8 | 0x10 | 0x20 | 0x400), 0, pToBeInjected);
In diversen Foren liest man von "Access Rights" und "SeDebugPrevilege". Im MSDN hab ich mich darüber auch schon informiert und ich denke, dass das helfen könnte. Wie man das allerdings in C# umsetzt hat niemand verraten :( Ein Anlauf war "System.Diagnostics.Process.EnterDebugMode();" , aber das feuert nur ne XamlParseException (ja, ich arbeite mit WPF aber keine Ahnung wie das nun zusammenhängen kann??). Hat jemand ne komplette Injector-Source parat oder wenigstens die Zeilen für die Zugriffsrechte? Wäre echt super!Quote:
[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(
Int32 dwDesiredAccess,
Boolean bInheritHandle,
Int32 dwProcessId
);
IntPtr hProcess = OpenProcess(0x1F0FFF, false, ProcID);