Chargement de la DLL à partir d'un emplacement dans la mémoire
Que la question dit, je veux charger une DLL à partir d'un emplacement en mémoire au lieu d'un fichier, de la même façon à LoadLibrary(Ex). Je ne suis pas expert en WinAPI, donc googlé un peu et trouvé cet article avec MemoryModule bibliothèque qui répond assez bien à mes besoins.
Sur l'autre côté de l'info, il y est assez ancien et de la bibliothèque n'a pas été mis à jour depuis un moment aussi. Donc je voulais savoir si il y a des différents, des façons nouvelles et meilleures de le faire. Aussi, si quelqu'un a utilisé la bibliothèque mentionné dans l'article, ils pourraient fournir de l'information sur ce que je pourrais faire face lors de l'utilisation?
Juste pour les curieux, j'explore le concept de cryptage des plugins pour des applications sans avoir à les stocker la version décryptée sur le disque.
OriginalL'auteur Saulius Žemaitaitis | 2009-03-12
Vous devez vous connecter pour publier un commentaire.
Bien, vous pouvez créer un Disque RAM selon ces instructions, puis copiez la DLL que vous pouvez en mémoire dans un fichier et l'utilisation de LoadLibrary().
Bien sûr, ce n'est pas très pratique si vous envisagez de déployer cela comme une sorte de produit parce que les gens vont l'avis d'un pilote, d'un redémarrage après l'installation et une nouvelle lettre de lecteur dans le poste de travail. Aussi, cela n'a rien à cachent en réalité la DLL depuis sa juste assis là dans le Lecteur RAM pour tout le monde à regarder.
Une autre chose que je me suis intéressé à ce sujet est de savoir Pourquoi vous voulez vraiment faire cela? Peut-être que votre résultat final peut être obtenu par d'autres moyens, autres que le Chargement de la DLL de la mémoire. Par exemple lors de l'utilisation d'un binaire packer comme UPX, la DLL que vous avez sur le disque est différent de celui qui est finalement exécutée. Immédiatement après la DLL est chargée normalement avec la fonction LoadLibrary, L'unpacker coups de pied dans et réécrit de la mémoire qui la DLL est chargée avec le binaire non compressé (la DLL en-tête permet de s'assurer qu'il ya suffisamment d'espace alloué)
OriginalL'auteur shoosh
La mise en œuvre de votre propre chargeur de DLL peut être vraiment poilue vraiment rapide. La lecture de cet article il est facile de rater ce genre de folie au bord des cas, vous pouvez obtenir vous-même en. Je recommande fortement contre elle.
Juste pour un avant-goût - considérez que vous ne pouvez pas utiliser les classiques outils de débogage pour le code de la DLL que vous êtes en train de charger depuis le code que vous êtes d'exécution n'est pas répertorié dans la région de n'importe quelle DLL connu par le système d'exploitation.
Un autre problème grave est de traiter avec DEP dans windows.
Les problèmes qui sont répertoriés dans plus de détails ici: codeproject.com/Tips/430684/...
OriginalL'auteur shoosh