Page d'accueil » comment » Qu'est-ce que l'injection de code sous Windows?

    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 tous les cas, elle peut causer des problèmes.

    L'injection de code est également communément 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). Cependant, 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 le mode d'affichage des fenêtres.
    • Stardock's Fences injecte du code pour changer 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 ce faire..
    • Les pilotes graphiques, comme ceux de NVIDIA, injectent 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 constamment utilisée 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 défaillance de Google Chrome. C'est pourquoi Google tente de le bloquer. 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 l'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 d'Outlook..

    En tant qu’employé de Microsoft, c’est dans un blog de développeurs de 2004:

    L'injection de DLL n'est jamais sûre. Vous parlez d'incorporer 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 synchronisation, de synchronisation ou de ressources qui n'existaient pas auparavant ou d'exacerber des problèmes qui existaient déjà.

    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 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 recherchez dans le volet inférieur les DLL chargées. La colonne «Nom de l'entreprise» constitue un moyen utile de filtrer cette liste..

    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 à celui de la "bibliothèque de filtres Avast Script Blocking" dans Chrome..

    Vous ne pouvez pas faire grand chose si l'injection de code est installée sur votre système, mis à part la désinstallation du programme d'injection de programme pour éviter qu'il ne pose problème. Par exemple, si Chrome se bloque régulièrement, vous voudrez peut-être vérifier si des programmes injectent du code dans Chrome et les désinstallent pour les empêcher de modifier 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 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 d'interférer les uns avec les autres comme ceci.

    Pour plus d'informations techniques, consultez ce billet de blog expliquant comment les développeurs peuvent injecter des DLL et découvrez 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é pour permettre la tricherie ou le piratage. Techniquement, ce n'est pas une "injection de code". Le code n'est pas injecté dans un processus en cours d'exécution, mais le programme est amené à charger de manière différente une autre DLL portant le même nom..

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