Frage

Nicht eine schrecklich gute Frage, sorry.

Ich habe ein Programm, dass der Bedarf benachrichtigt werden, wenn eine Datei aus dem Explorer geöffnet wird (das heißt ShellExecute (A / W) genannt wird).

Leider Microsoft entfernt die COM-Schnittstelle (IShellExecuteHook), die Ihnen diese Ereignisse in Vista und bis Haken erlaubt, angeblich, weil älterer Code einen Absturz aufgrund von Änderungen führen könnte. Es war diese Funktion eines Work-around wieder aktivieren, aber es funktioniert nicht mehr.

Ich habe einige der Forschung getan, und es sieht aus wie der einzige Weg, um fangen Anrufe ShellExecute zu re-Route ist der Aufruf SHELL32.DLL. Im Moment suche ich nach meiner eigenen DLL in den Explorer-Prozess zu injizieren, dann das Kopieren der IAT-Eintrag für ShellExecute zu einem gewissen Adresszuweisung in meiner DLL, und schließlich Modifizieren des IAT-Eintrag für ShellExecute zu Punkt meiner Funktion, die über kommende das Programm, dass eine Datei wurde auf die ursprüngliche Funktion ShellExecute geöffnet und springen, deren Adresse wir früher gespeichert.

Meine größte Sorge hier ist Antiviren-Programme. Werden sie dafür, dass ich in explorer bin Injektion? Werden sie darauf, dass ich die IAT bin modifizieren?

Ein weiteres Problem ist, ob diese sicher sind; ist es möglich (oder eher wahrscheinlich) für die Sicherheit Privilegien des Forschers nicht Injektion über Create erlauben? Wenn ja, gibt es eine bessere Möglichkeit, diese Injektion zu tun?

Gibt es einen besseren Weg, dies im Allgemeinen zu tun?

EDIT: Für alle, die über das in Zukunft kommt, explorer.exe hat keine IAT für shell32.dll; es hat einen Kopf, aber der Thunk ist voll von Junk-Werte, so gibt es keine Möglichkeit (soweit ich das beurteilen kann), um den Eintrag für alle importierten Funktionen abzurufen.
Sieht aus wie Code-Tunneling ist der einzige Weg, dies haken.

War es hilfreich?

Lösung

Die meisten gute Antiviren-Heuristik auf Importtabelle Patching abholen sollte für einen Trojaner eine rote Fahne als.

Die Online-Dokumentation für madcodehook hat einige erweiterte Artikel zu verschiedenen Code-Injektion Techniken, deren Nutzen / Nachteile, und die API bietet einige Optionen für „sichere“ Einhaken festgelegt wird: http://www.madshi.net/madCodeHookDescription.htm

Andere Tipps

Die Detours Bibliothek:

http://research.microsoft.com/en-us/projects/ Umwege /

Von Microsoft Research ermöglicht, beliebigen Einhaken von Funktionen. Man könnte geben, dass ein Schuss.

Einige weitere Ressourcen auf API Einhaken:

Einfacher Haken: http://www.codeplex.com/easyhook

Deviare: http://www.nektra.com/products/ deviare-api-Haken-Fenster /

Ein interessanter Beitrag: http://www.codeproject.com/KB/system /hooksys.aspx

Wenn tun API Einhaken es sehr wichtig, zu Esel in denen Umgebungen Sie ausführen müssen. Nicht alle Bibliotheken unterstützen x86 / x64 zum Beispiel.

Detours unterstützt nur x64 in der lizenzierten (bezahlt) Version. Einfache Hakenträger x86 und x64.

Windows Explorer in Windows Vista und Windows 7 stellt nicht einmal ShellExecuteA oder ShellExecuteW.

Mühe Kein Punkt. Lol: -)

und wenn ich hinzufügen kann, i durch Einhaken beide Funktionen mit den beiden 32-Bit und 64-Bit-Inline-Haken getestet haben.

Es tut uns leid. Lol: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top