Comment utiliser "loadFrom" dans un manifest d'une application

braxivamov Messages postés 22 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 11 août 2009 - 6 août 2009 à 09:07
braxivamov Messages postés 22 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 11 août 2009 - 11 août 2009 à 12:16
Bonjour,

pour faire simple j'ai recodé quelques dll du style gdi32.dll. J'ai exporté les fonctions de la dll originale, j'ai remplacé le fonctionnement de quelques unes et voila.
Ensuite pour qu'une application utilise ma dll j'ajoute dans le manifest de cette application (application.exe.manifest) cette ligne :
<file name="gdi32.dll"> et donc l'appli cherche dans son répertoire une dll de ce nom et l'utilise.

Mon problème et que je veux appliquer ce principe à plusieures applications mais c'est un peu nul de devoir mettre une copie de ma dll dans chaque répertoire. Après quelques recherchent il semblerait qu'il suffisse d'ajouter loadFrom
->
<file name="gdi32.dll" loadFrom="C:\\MonRep\\gdi32.dll" />

Mais lorsque j'ajoute le loadFrom l'application me lance une erreur du style "_crt_debbuger_hook est introuvable dans msvcr80.dll" et je ne vois pas pourquoi, de plus je n'ai jamais trouvé cette fonction après un dumpbin sur cette dll ...

J'ai pas mal cherché mais je n'ai trouvé aucuns résultats satisfaisant.

Donc si quelqu'un a une piste a me proposer je suis prenneur.

Cordialement.

2 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
7 août 2009 à 23:25
Salut,

msvcr80.dll est contient une librairie standard C de Microsoft, celle utilisée par défaut lorsque l'on utilise Visual Studio 2005. Tu peux aussi utiliser sa version statique pour que la CRT soit incluse dans ton code (/MT). Regarde cette doc.

_crt_debbuger_hook est peut être dans la version debug de cette dll (msvcr80d.dll il me semble).

Il ne faut pas que tu fournisse des binaires (Dll, .exe) en debug. Passe en release si ce n'est pas fait.

Tu peux utiliser depends pour analyser les dépendance de ta dll.
0
braxivamov Messages postés 22 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 11 août 2009
11 août 2009 à 12:16
Salut et merci de tes infos.

Je me suis un peu renseigné sur MSVCR avant de poster mon message ici, et j'ai déjà essayé plusieurs options pour la compilation /MT, /MD, /MTd sans succès ...

J'ai retrouvé la fonction debbugger hook dans une version debug effectivement mais dans msvcr90d.dll ...

Et bien entendu je compile en release.

Et je me pose toujours cette question :
Pourquoi placer ma dll dans un autre dossier que celui de l'application pose ce problème ? (Et comme je l'ai dit dans le manifest de base il utilise msvcr80 qui ne contient pas cette fonction "debuggerhook"), il n'éxiste aucuns liens apparent entre gdi et msvcr, si gdi est dans le repertoire courant ou dans system32 tout se passe bien mais pas ailleurs :(

J'ai également regardé les dépendance de ma dll avec dumpbin /IMPORTS et il n'y aucune dépendance avec msvcrXX.

Pour mettre en place ce "détournement" de dll j'ai utilisé cet article :
http://www.ethicalhacker.net/content/view/207/24/
Un peu long mais facile.
0
Rejoignez-nous