Injection de coffre-fort

Pas une très bonne question, désolé.

J’ai un programme qui doit être alerté lorsqu’un fichier est ouvert à partir de l’explorateur (c.-à-d. ShellExecute (A / W) est appelé).

Malheureusement, Microsoft a supprimé l’interface COM (IShellExecuteHook) qui vous permet de relier ces événements dans Vista et versions ultérieures, car un code plus ancien pourrait provoquer un blocage en raison de modifications. Il y avait une solution pour réactiver cette fonctionnalité, mais cela ne fonctionne plus.

J’ai fait des recherches et il semble que le seul moyen d’attraper les appels à ShellExecute est de redirect l’appel vers shell32.dll. Pour le moment, je souhaite injecter ma propre DLL dans le processus de l’explorateur, puis copier l’entrée IAT de ShellExecute dans une adresse donnée de ma DLL et enfin modifier l’entrée IAT permettant à ShellExecute de pointer vers ma fonction, qui en avertira le programme dans lequel un fichier a été ouvert et accéder à la fonction ShellExecute d’origine, dont nous avons précédemment enregistré l’adresse.

Ma plus grande préoccupation ici est les antivirus. Veulent-ils que je m’injecte dans l’explorateur? Veulent-ils que je modifie l’IAT?

Une autre préoccupation est de savoir si cela est sûr; Est-il possible (ou plutôt probable) que les privilèges de sécurité de l’explorateur interdisent l’injection via CreateRemoteThread? Si oui, y a-t-il une meilleure façon de faire cette injection?

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

EDIT: Pour tous ceux qui rencontrent cela à l’avenir, explorer.exe n’a pas d’IAT pour shell32.dll; il a un en-tête, mais le thunk est plein de valeurs indésirables, donc il n’y a aucun moyen (pour autant que je sache) de récupérer l’entrée pour les fonctions imscopes.
On dirait que le tunneling de code est la seule façon de raccrocher cela.

La plupart des heuristiques antivirus de qualité devraient identifier le patch de la table d’importation comme un drapeau rouge pour un cheval de Troie.

La documentation en ligne de madcodehook contient des articles détaillés sur diverses techniques d’injection de code, leurs avantages / inconvénients, et l’API fournit certaines options permettant de spécifier une connexion “sûre”: http://www.madshi.net/madCodeHookDescription.htm

La bibliothèque des détours:

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

De Microsoft Research permet l’accrochage arbitraire de fonctions. Vous pourriez donner un coup de feu à cela.

Quelques ressources supplémentaires sur le raccordement d’API:

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

Deviare: http://www.nektra.com/products/deviare-api-hook-windows/

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

Lors de la connexion d’API, il est très important d’évaluer dans quels environnements vous devez exécuter. Toutes les bibliothèques ne supportent pas x86 / x64 par exemple.

Detours ne prend en charge que x64 dans la version sous licence (payée). Le crochet facile supporte x86 et x64.

Windows Explorer dans Windows Vista et Windows 7 n’appelle même pas ShellExecuteA ou ShellExecuteW.

Pas la peine de déranger. Lol 🙂

ET, si je peux append, j’ai testé en accrochant les deux fonctions avec des crochets en ligne 32 bits et 64 bits.

Pardon. Lol 🙂