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

Signaler
Messages postés
22
Date d'inscription
mercredi 10 janvier 2007
Statut
Membre
Dernière intervention
11 août 2009
-
Messages postés
22
Date d'inscription
mercredi 10 janvier 2007
Statut
Membre
Dernière intervention
11 août 2009
-
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

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
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.
Messages postés
22
Date d'inscription
mercredi 10 janvier 2007
Statut
Membre
Dernière intervention
11 août 2009

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.