[c/win32] injection de dll 2 méthodes (remotethread propre & registry)

Soyez le premier à donner votre avis sur cette source.

Vue 8 065 fois - Téléchargée 633 fois

Description

Yop à tous,

Je sais qu'il existe déjà quelques source sur l'injection de dll, mais ma source apporte certaine chose en plus :

- Avec la méthode RemoteThread, outre la fonction qui permet d'injecter, j'ai ajouter celle qui permet de supprimer la dll injectée des ressources du processus cible (une sorte de Free).
- Noté aussi l'utilisation de la fonction WaitForSingleObject(hThread, INFINITE); qui permet d'attendre la fin de l'éxécution du thread.
- J'ai ajouté une méthode qui pourrait être intéressente dans certain cas. L'injection via la clef de registre AppInit_DLLs .

Petite explication sur la méthode d'injection avec la registry :
Tout dabord il faut savoir que l'injection de dll ce fait au démarrage de windows sur tous les processus qui utilise User32, c'est a dire la totalité des applications GUI, donc pour les applications CUI cette méthode ne convient pas.
Ensuite, comme dit plus haut, cette dll sera injectée dans beaucoup de processus , si vous voulez cibler un processus en particulier utilisé plutot la méthode RemoteThread.
Et enfin votre dll une fois injecté restera comme ressource des processus pendant toute la durée de leurs vie.
J'allais oublié comme la dll est injectée au démarrage vous devez évidement redémarrer votre pc.

Source / Exemple :


/* Tout est dans le zip. */

Conclusion :


Petite note pour l'utilisation du programme :

-Pour ajouter une dll dans la clef de registre, vous devez séparer les différentes dll par un espace.
ex :

c:\dll1 dll2 dll3

Attention que à la première dll avec un chemin rencontré , tous les autres sont ignoré, cet pour cela qu'il est préférable de mettre les dll dans le répertoire système de windows avec toutes les autres ;) .
-Pour supprimer la dll injectée de la clef de registre vous devez entrer celle-ci tel que vous l'avez taper dans le chemin des dll.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
134
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
14 novembre 2009

Sous visual studio 2008 en 32Bits ça marche en 64Bits 2 truc ne marche pas:
1) le menu du type d'injection/d'éjection
2) probleme dans la source dans une fonction d'injection
Messages postés
103
Date d'inscription
vendredi 7 juillet 2006
Statut
Membre
Dernière intervention
7 janvier 2010

Moi je n'arrive pas a le compiler avec DevC++
jai ces erreurs :
[Linker error] undefined reference to `CreateFontA@56'
[Linker error] undefined reference to `GetOpenFileNameA@4'
[Linker error] undefined reference to `CreateFontA@56'
[Linker error] undefined reference to `CreateFontA@56'
ld returned 1 exit status

quand jouvre DCK_DLLinjector.cpp et que je veut le compile :/

help me svp
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Merci Buno,

Bonne réflexion Juju12, il faudrait demander cela a Richter, je n'ai même pas penser à aller voir ce que prenait LoadLibrary, mais cela passe en effet. Il est vrai que si elle attend un handle meModule.hModule serait plus logique :)
Messages postés
15189
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
29 novembre 2021
100
Hum..bon, en fait, mon problème est corrigé, petite erreur de ma part. Rien à voir avec la source!
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Une petite remarque:
lors de la libération de la dll (méthode remotethread), tu appelles FreeLibrary dans le contexte du processus cible mais en lui passant comme paramètre (via CreateRemoteThread) l'adresse de base de la dll...alors que FreeLibrary attend plutôt un handle sur le module (qui aurait éventuellement pu être récupéré par le code de retour du thread LoadLibrary)?! Quelque chose m'aurait-il échappé?
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.