Question

Pas terriblement bonne question, désolé.

I ai un programme qui doit être averti lorsqu'un fichier est ouvert à partir de l'explorateur (à savoir ShellExecute (A / W) est appelée).

Malheureusement, Microsoft a supprimé l'interface COM (IShellExecuteHook) qui vous permet de connecter ces événements dans Vista et plus, soi-disant parce que le code ancien pourrait provoquer un accident en raison de changements. Il y avait un travail autour de réactiver cette fonction, mais il ne fonctionne plus.

Je l'ai fait quelques recherches et il semble que la seule façon d'attraper les appels à ShellExecute est de réacheminer l'appel à shell32.dll. En ce moment, je suis à la recherche d'injecter ma propre DLL dans le processus de l'explorateur, puis de copier l'entrée IAT pour ShellExecute une certaine allocation d'adresse dans ma DLL, et enfin modifier l'entrée IAT pour ShellExecute pour pointer vers ma fonction, qui informera le programme qu'un dossier a été ouvert et passer à la fonction ShellExecute originale, dont l'adresse que nous avons enregistrée précédemment.

Ma plus grande préoccupation ici est anti-virus. Vont-ils prendre soin que j'injecter dans l'explorateur? Vont-ils prendre soin que je suis modifier le IAT?

Une autre préoccupation est de savoir si cela est sans danger; est-il possible (ou plutôt probable) pour les privilèges de sécurité de l'explorateur de ne pas permettre l'injection par CreateRemoteThread? Si oui, est-il une meilleure façon de faire cette injection?

Y at-il une meilleure façon de le faire en général?

EDIT: Pour toute personne qui vient à travers à l'avenir, explorer.exe n'a pas IAT pour shell32.dll; il a une tête, mais le thunk est plein de valeurs pourries, donc il n'y a aucun moyen (pour autant que je peux dire) pour récupérer l'entrée pour toutes les fonctions importées.
Ressemble à effet tunnel de code est la seule façon de connecter cela.

Était-ce utile?

La solution

La plupart des bons heuristiques antivirus devraient revenir sur patching table d'importation comme un drapeau rouge pour un cheval de Troie.

La documentation en ligne madcodehook a quelques articles sur diverses techniques étendues d'injection de code, leurs avantages / inconvénients, et l'API fournit des options pour spécifier « sécurité » accrochage: http://www.madshi.net/madCodeHookDescription.htm

Autres conseils

La bibliothèque Detours:

http://research.microsoft.com/en-us/projects/ détours /

De Microsoft Research permet crochetage arbitraire de fonctions. Vous pourriez donner un coup de feu.

Quelques autres ressources sur crochetage API:

crochet facile: http://www.codeplex.com/easyhook

Deviare: http://www.nektra.com/products/ deviare-api-camping-fenêtres /

Un post intéressant: http://www.codeproject.com/KB/system /hooksys.aspx

Quand vous faites API accrochait il est très important d'évaluer dans lequel vous devez exécuter des environnements. Toutes les bibliothèques prennent en charge x86 / x64 par exemple.

Detours ne supporte que 64 bits dans la version sous licence (payé). Crochet facile supporte x86 et x64.

Explorateur Windows dans Windows Vista et Windows 7 ne remet même pas ShellExecuteA ou ShellExecuteW.

Aucun point la peine. Lol: -)

ET, si je peux ajouter, je l'ai testé en accrochant les deux fonctions à la fois 32 bits et 64 bits crochets inline.

Désolé. Lol: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top