L'injection de code est également couramment appelée injection de DLL, car le code injecté se présente souvent sous la forme d'un fichier DLL (bibliothèque de liens dynamiques). Toutefois, les applications peuvent également injecter d’autres types de code qui ne sont pas des DLL dans un processus.
A quoi sert l'injection de code
L’injection de code est utilisée pour réaliser toutes sortes d’astuces et de fonctionnalités sous Windows. Bien que les programmes légitimes l'utilisent, il est également utilisé par les logiciels malveillants. Par exemple:
- Les programmes antivirus injectent souvent du code dans les navigateurs Web. Ils peuvent l’utiliser pour surveiller le trafic réseau et bloquer le contenu Web dangereux, par exemple.
- Des programmes malveillants peuvent ajouter du code à votre navigateur Web pour mieux suivre votre navigation, voler des informations protégées telles que des mots de passe et des numéros de carte de crédit, et modifier les paramètres de votre navigateur.
- WindowBlinds de Stardock, qui thématise votre bureau, injecte du code pour modifier la manière dont les fenêtres sont dessinées.
- Stardock’s Fences injecte du code pour modifier le fonctionnement du bureau Windows.
- AutoHotkey, qui vous permet de créer des scripts et de leur attribuer des touches de raccourci système, injecte du code pour cela.
- Le pilote graphique, comme NVIDIA, injecte des DLL pour effectuer diverses tâches liées aux graphiques.
- Certains programmes injectent des DLL pour ajouter des options de menu supplémentaires à une application.
- Les outils de triche pour les jeux sur PC injectent souvent du code dans les jeux pour modifier leur comportement et obtenir un avantage injuste sur les autres joueurs.
L'injection de code est-elle mauvaise?
Cette technique est utilisée en permanence par une grande variété d’applications sous Windows. C’est le seul moyen réel d’accomplir une variété de tâches. Comparé à une plate-forme mobile moderne comme iOS d’Apple ou Android de Google, le bureau Windows est si puissant qu’il offre cette souplesse aux développeurs.
Bien sûr, avec tout ce pouvoir, il y a un danger. L'injection de code peut causer des problèmes et des bugs dans les applications. Google indique que les utilisateurs de Windows dont le code a été injecté dans leur navigateur Chrome ont 15% plus de risques de subir une panne, ce qui explique pourquoi Google s'efforce de bloquer ce blocage. Microsoft note que l’injection de code pourrait être utilisée par des applications malveillantes pour altérer les paramètres du navigateur, ce qui est une des raisons pour lesquelles il est déjà bloqué dans Edge.
Microsoft fournit même des instructions pour vérifier si des DLL tierces sont chargées dans Microsoft Outlook, car elles provoquent de nombreuses pannes Outlook.
En tant qu’employé de Microsoft, c’est dans un blog de développeurs de 2004:
DLL injection is never safe. You’re talking about squirting code into a process that was never designed, built, or tested by the process’s author, and co-opting or creating a thread to run that code. You run the risk of creating timing, synchronization, or resource issues that weren’t there before or exacerbating issues that were there.
En d'autres termes, l'injection de code est une sorte de sale bidouille. Dans un monde idéal, il y aurait un moyen plus sûr d'accomplir ceci sans créer d'instabilité potentielle. Cependant, l’injection de code n’est plus qu’une partie normale de la plate-forme d’application Windows. Cela se produit constamment en arrière-plan sur votre PC Windows. Vous pourriez appeler cela un mal nécessaire.
Comment vérifier les DLL injectées
Vous pouvez vérifier l’injection de code sur votre système avec la puissante application Process Explorer de Microsoft. Il s’agit essentiellement d’une version avancée du gestionnaire de tâches, dotée de fonctionnalités supplémentaires.
Téléchargez et exécutez Process Explorer si vous le souhaitez. Cliquez sur Affichage> Affichage du volet inférieur> DLL ou appuyez sur Ctrl + D.
Par exemple, il est normal de voir une variété de DLL créées par «Microsoft Corporation» ici, car elles font partie de Windows. Il est également normal de voir les DLL créées par la même société que le processus en question, "Google Inc." dans le cas de Chrome dans la capture d'écran ci-dessous.
Nous pouvons également repérer quelques DLL créées par «AVAST Software» ici. Cela indique que le logiciel anti-programme malveillant Avast de notre système injecte un code similaire à la «bibliothèque de filtres de script bloquant Avast» dans Chrome.
Comment fonctionne l'injection de code?
L’injection de code ne modifie pas l’application sous-jacente sur votre disque. Au lieu de cela, il attend l'exécution de cette application et injecte du code supplémentaire dans le processus en cours pour modifier son fonctionnement.
Windows comprend diverses interfaces de programmation d'application (API) pouvant être utilisées pour l'injection de code. Un processus peut se joindre à un processus cible, allouer de la mémoire, écrire une DLL ou un autre code dans cette mémoire, puis demander au processus cible d'exécuter le code. Windows n'empêche pas les processus de votre ordinateur de s'interférer de la sorte.
Pour plus d'informations techniques, consultez cet article de blog expliquant comment les développeurs peuvent injecter des DLL et d'autres types d'injection de code sous Windows.
Dans certains cas, il est possible que quelqu'un modifie le code sous-jacent sur le disque, par exemple en remplaçant un fichier DLL fourni avec un jeu PC par un fichier modifié permettant la tricherie ou le piratage.Techniquement, il ne s’agit pas d’une «injection de code». Le code n’est pas injecté dans un processus en cours d’exécution, mais le programme est plutôt amené à charger une autre DLL portant le même nom.