API-Anbindung in Win32 ist im systemweiten Sinne nicht wirklich möglich. Sie können es approximieren, indem Sie in jeden Prozess eine DLL einfügen und dann jeden Prozess von innen patchen. Sie können entweder IAT-Patching (wo Sie die aufrufende Binärdatei patchen) oder einen Patch im Detours-Stil (wo Sie den Aufgerufenen patchen) verwenden.
Patchen des Anrufers (IAT-Patching) bedeutet, dass Sie jede DLL aufzuzählen brauchen, die separat in den Prozess und die Patch jedes geladen wird. Sie müssen auch LoadLibrary
haken, um neue DLLs zu patchen, die on-the-fly geladen werden.
den Angerufenen Patchen (Detours) hat den Vorteil, dass Sie nur an einer Stelle flicken müssen der Haken für den gesamten Prozess anwenden haben.
Sie haben die pro-Prozess zu tun Patchen auch wenn Sie APIs aus dem gemeinsamen System-DLLs sind Einhaken; Das Betriebssystem ruft Copy-on-Write auf, wobei der Prozess beim Patchen der System-DLL eine private Kopie erhält, die gepatcht werden soll.
DLL injizierende wird ein bisschen böse sein, und auch hier gibt es verschiedene Techniken: AppInit_DLLs
, die nur für Prozesse arbeitet, die USER32.DLL
laden (und hat einige neue Einschränkungen in Vista und Windows 7), mit SetWindowsHookEx
oder durch CreateRemoteThread
mit . Integrity levels in Vista und Windows 7 erschweren die systemweite Einführung in Prozesse. Ihre App muss mit Administratorrechten und einer hohen Integritätsebene ausgeführt werden, damit sie erfolgreich ausgeführt werden kann.
Eine weitere Technik besteht darin, die Systemdienste im Kernel-Modus zu haken. Dies erfordert das Schreiben eines Gerätetreibers, aber es ist im Grunde die Technik, die Sysinternals Process Monitor verwendet (oder zumindest einmal getan hat). Dies ist ein Problem bei 64-Bit Vista und Win7 wegen PatchGuard und den Treibersignieranforderungen. Sie können einige Dateisystemaktivitäten überwachen, indem Sie file system filter Treiber verwenden.
Es könnte hilfreich sein, wenn Sie angeben könnten, welche APIs Sie haken wollten und warum. – Michael
Detours ist ein Instrumentierungspaket. Möchten Sie Ihre Win32-DLLs instrumentieren? –
Zuerst tut mir leid, dass ich nicht rechtzeitig reagiert habe, war auf einem langen Urlaub. Zurück zum Thema, ich möchte CreateProcess und Dateihandhabungsfunktionen von Windows haken. Grundsätzlich möchte ich, dass meine App die Kontrolle übernimmt, bevor das Windows-Betriebssystem eine Datei (möglicherweise eine EXE-Datei) anfassen kann. –