in

Qu’est-ce que l’injection de code sous Windows?

L’injection de code est courante sous Windows. Les applications «injectent» des morceaux de leur propre code dans un autre processus en cours d’exécution pour modifier son comportement. Cette technique peut être utilisée pour le bien ou le mal, mais dans les deux cas, elle peut causer des problèmes.

L’injection de code est également communément appelée injection DLL car le code injecté se présente souvent sous la forme d’un fichier DLL (bibliothèque de liens dynamiques). Cependant, les applications peuvent également injecter d’autres types de code qui ne sont pas des DLL dans un processus.

À quoi sert l’injection de code

L’injection de code est utilisée pour accomplir 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ème votre bureau, injecte du code pour modifier la façon dont les fenêtres sont dessinées.
  • Fences de Stardock injecte du code pour changer le fonctionnement du bureau Windows.
  • AutoHotkey, qui vous permet de créer des scripts et de leur attribuer des raccourcis clavier à l’échelle du système, injecte du code pour ce faire.
  • Les pilotes graphiques comme les DLL d’injection de NVIDIA pour accomplir une variété de 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 de jeux 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 constamment utilisée par une grande variété d’applications sous Windows. C’est le seul véritable moyen 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 car il offre ce type de flexibilité aux développeurs.

Bien sûr, avec tout ce pouvoir vient un certain danger. L’injection de code peut causer des problèmes et des bogues dans les applications. Google affirme que les utilisateurs de Windows qui ont du code injecté dans leur navigateur Chrome sont 15% plus susceptibles de rencontrer des plantages de Chrome, c’est pourquoi Google travaille à le bloquer. Microsoft note que l’injection de code pourrait être utilisée par des applications malveillantes pour falsifier les paramètres du navigateur, ce qui est l’une des raisons pour lesquelles elle est déjà bloquée dans Edge.

Microsoft fournit même instructions pour vérifier si des DLL tierces sont chargées dans Microsoft Outlook, car elles provoquent de nombreux plantages Outlook.

Comme l’a dit un employé de Microsoft dans un blog développeur à partir de 2004:

L’injection de DLL n’est jamais sûre. Vous parlez d’injecter du code dans un processus qui n’a jamais été conçu, construit ou testé par l’auteur du processus, et de coopter ou de créer un thread pour exécuter ce code. Vous courez le risque de créer des problèmes de minutage, de synchronisation ou de ressources qui n’existaient pas auparavant ou d’exacerber les problèmes qui existaient.

En d’autres termes, l’injection de code est une sorte de sale hack. Dans un monde idéal, il y aurait un moyen plus sûr d’accomplir cela sans provoquer d’instabilité potentielle. Cependant, l’injection de code n’est aujourd’hui 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 le puissant Explorateur de processus application. 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 souhaitez le faire. Cliquez sur Affichage> Affichage du volet inférieur> DLL ou appuyez sur Ctrl + D.

Sélectionnez un processus dans le volet supérieur et regardez dans le volet inférieur pour voir les DLL chargées. La colonne «Nom de l’entreprise» fournit un moyen utile de filtrer cette liste.

Par exemple, il est normal de voir ici une variété de DLL créées par «Microsoft Corporation», car elles font partie de Windows. Il est également normal de voir des 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 sur notre système injecte du code comme la «bibliothèque de filtres de blocage de script Avast» dans Chrome.

Vous ne pouvez pas faire grand-chose si vous trouvez une injection de code sur votre système – à part désinstaller le programme injectant du code pour éviter qu’il ne cause des problèmes. Par exemple, si Chrome plante régulièrement, vous voudrez peut-être voir si des programmes injectent du code dans Chrome et les désinstaller pour les empêcher de falsifier les processus de 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 que cette application s’exécute et injecte du code supplémentaire dans ce processus en cours d’exécution pour modifier son fonctionnement.

Windows comprend une variété d’interfaces de programmation d’application (API) qui peuvent être utilisées pour l’injection de code. Un processus peut s’attacher à 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 d’interférer les uns avec les autres de cette manière.

Pour plus d’informations techniques, consultez cet article de blog expliquant comment les développeurs peuvent injecter des DLL et ce regard sur autres types d’injection de code sous Windows.

Dans certains cas, quelqu’un peut changer le code sous-jacent sur le disque, par exemple en remplaçant un fichier DLL fourni avec un jeu PC par un fichier modifié pour permettre la triche ou le piratage. Ce n’est pas techniquement 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 DLL différente avec le même nom.

Crédit d’image: Lukatme/Shutterstock.com.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment masquer le flux d’articles sur la page Nouvel onglet de Microsoft Edge

Comment modifier les autorisations de sites Web individuels dans tous les navigateurs

Comment modifier les autorisations de sites Web individuels dans tous les navigateurs