2010-09-29 3 views
15

Je naviguais sur Internet récemment, quand je suis tombé sur Dll Injection.Dll Injection - Qu'est-ce qui est possible avec?

Je pense que c'est un sujet intéressant, mais, je n'ai aucune idée de ce que le but est? J'ai lu qu'il peut être utilisé pour cracker/pirater des jeux et des logiciels, mais est-il également possible de faire quelque chose de positif avec lui?

si oui, à quoi peut-elle servir?

Et quelles langues supportent cela? Pour l'anecdote, je ne vais pas essayer de pirater/pirater n'importe quel jeu avec des connaissances acquises, aucune intention de faire quelque chose d'illégal!

Merci pour le temps,

Emerion

ps: sites/livres qui sont sur ce sujet seraient appréciés!

Répondre

18

Il y a plusieurs utilisations qui me viennent à l'esprit:

  • Hot rapiéçage: Permet de mettre à jour/parties de patch de votre code sans réellement arrêter le processus ou le redémarrage. Microsoft lui-même a fait en sorte que de grandes parties de Windows soient connectables à chaud en préfixant les fonctions avec un bloc NOP de 5 octets. Pourquoi? Parce que vous pouvez JMP à toute autre partie de votre code dans 5 octets, hot-patching écrase essentiellement les préfixes octets avec un JMP au code mis à jour/patched et voila, votre code fait quelque chose de tout à fait nouveau. Ceci est souvent utilisé en même temps que l'injection de DLL pour charger le nouveau code dans le processus cible, et sans obligation, il est l'un de ses utilise

  • Logging: Dans le même esprit, le code déviant est souvent utilisé pour préfixer un fonction à des fins de journalisation, c'est-à-dire pour voir avec quels paramètres il est appelé. En outre, certaines applications qui enregistrent la sortie d'écran à partir d'applications DirectX le font en faisant un détour par les appels DirectX, ce qui implique également l'injection d'une DLL dans le processus qui surveille les appels.

  • Dérivation de: Pas dans le sens de la POO, mais dans le sens de Windows, à savoir fournir une nouvelle WndProc pour une fenêtre existante pour modifier son comportement.Bien que vous puissiez simplement définir une autre routine de traitement des messages via SetWindowLongPtr, le facteur limitant à cela est que la fonction doit résider dans l'espace d'adressage du processus cible. C'est là que l'injection intervient à nouveau - vous fournissez une nouvelle implémentation dans une DLL, l'injectez dans le processus cible et appelez SetWindowLongPtr. Cela peut être utilisé pour fournir un dessin supplémentaire personnalisé sur une fenêtre étrangère, par exemple.

J'ai personnellement dû faire face à tous les cas d'utilisation ci-dessus dans le passé, dans les applications normales, d'utiliser rapiéçage à chaud pour assurer une disponibilité sur un système de notification critique dans les services médicaux à l'utilisation des détours/journalisation permettre à une gestion d'enregistrements propriétaire (par un magasin de logiciels déjà mort) de dialoguer en temps réel avec une solution CRM complète. Comme toujours, c'est juste un outil dans votre boîte, et il n'y a rien intrinsèquement "mal" à ce sujet. c'est pour tout ce que vous en faites qui compte.

3

Dans la programmation de l'ordinateur, l'injection de DLL est une technique utilisée pour exécuter le code à l'intérieur de l'espace d'adressage d'un autre processus en le forçant à charger une bibliothèque de liaison dynamique. [1] L'injection de DLL est souvent utilisée par des développeurs tiers pour influencer le comportement d'un programme d'une manière que ses auteurs n'ont pas anticipée ou n'ont pas l'intention de faire. Par exemple, le code injecté peut intercepter les appels de fonction système ou lire le contenu des zones de texte de mot de passe, ce qui ne peut pas être fait de la manière habituelle.

Source et plus d'informations ici: http://en.wikipedia.org/wiki/DLL_injection Vous trouverez aussi quelques bonnes références à des sources externes.

Dll Injection peut être utilisé pour une bonne raison lorsque vous avez un système hérité sans code source et que vous devez changer son comportement. C'est un hack sale et devrait être utilisé en dernier recours, IMO.

4

Microsoft Research a réalisé un très bon projet sur ce sujet précis, en se concentrant sur l'interception des appels aux fonctions WinAPI en utilisant l'injection de dll.

C'est le lien, il devrait vous tenir occupé pendant un certain temps: Detours

+1

Detours est agréable, mais pour un nouveau développement, vous devriez probablement préférer http://easyhook.codeplex.com/ à la place - permet ainsi x64 comme kernelmode hooking, et permet aux hooks d'être écrits en tant que code managé (!) – snemarch

+0

@snemarch - nice !! Je savais que Detours était vieux, mais je ne savais pas que quelqu'un avait gardé le concept en marche - je vais aimer jouer avec. – slugster

Questions connexes