2009-07-06 6 views
5

Was ist Ihre Empfehlung für eine API-Hooking-Bibliothek oder einen Code, der in einer kommerziellen Anwendung verwendet werden soll?Wie wird die Verwendung von Win32-APIs für eine kommerzielle Anwendung empfohlen?

Ich habe bei Microsoft Detours sah, die sehr gut zu sein scheint, aber auf jeden Fall ist für den Gewinn aus Budget aus meiner Anwendung ich erwarte.

Gibt es eine Bibliothek, die Kompatibilität über WinXP und Vista bietet (und Windows 7, wenn nicht zu viel verlangt!)? Gibt es jemanden mit Erfahrung in der Verwendung einer solchen Bibliothek in einem kommerziellen Produkt?

+0

Es könnte hilfreich sein, wenn Sie angeben könnten, welche APIs Sie haken wollten und warum. – Michael

+0

Detours ist ein Instrumentierungspaket. Möchten Sie Ihre Win32-DLLs instrumentieren? –

+0

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. –

Antwort

0

Sie könnten EasyHook ausprobieren, es sieht so aus, als wäre es nützlich. "Systemweites" Patch kann jedoch nicht gepatcht werden, dafür braucht man etwas wie eine Proxy-DLL.

http://www.codeplex.com/easyhook

+0

EasyHook ist nach https://github.com/EasyHook/EasyHook – brewmanz

15

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.

+0

Ausgezeichnete Antwort. – blez

2

Ich würde MinHook empfehlen. Es ist definitiv die beste kostenlose Bibliothek, die Sie finden können, und ist nicht schlechter als Microsoft Detours.

+0

Ich habe den Minhook mehrmals mit großem Erfolg benutzt. Definitiv empfohlen. – Qix

0

Haben Sie die Deviare API Hook versucht ...

Deviare unter einer kommerziellen und Open-Source-Lizenz (GNU General Public License Version 3) lizenziert ist.

Verwandte Themen