Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[GCC][WIN32][DEV-C++] COMMANDE LDD SOUS WIN32/PE - VERSION 0.2.0 BUILD 4 (MISE À JOUR)


Information sur la source

Catégorie :Système Classé sous : dll, librairie, système, windows Niveau : Initié Date de création : 22/12/2004 Date de mise à jour : 22/11/2007 12:26:28 Vu / téléchargé: 7 086 / 247

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Les développeurs sous Linux connaissent bien la commande 'ldd', laquelle permet de lister les librairies partagées de type *.so utilisées par un programme ou une librairie.

En me basant sur un code source permettant de "dumper" des fichiers (exécutables ou non) de type WIN32/PE, j'ai essayé de réaliser un clône de cette commande sous Windows.
En conséquence, on traite donc ici des DLL utilisées par un programme ou une autre DLL.

L'intérêt principal réside dans la connaissance immédiate de l'ensemble des librairies éventuellement manquantes lors de l'exécution d'un programme ou lors de l'utilisation d'une librairie.
 

Source

  • Dépôt SVN : http://svn.fmichaud.com/app/win32ldd/trunk/
Dépôt SVN : http://svn.fmichaud.com/app/win32ldd/trunk/

Conclusion

Compilation réalisée avec Dev-C++ (fichier .dev dans le zip).

Compilation et installation sous Cygwin (installation par défaut dans le répertoire /usr/local):
./configure
make
make install


 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

22 décembre 2004 18:15:03 :
.
22 décembre 2004 22:27:08 :
- Correction ligne 228, fonction DumpImportsSection, concernant l'allocation dynamique de mémoire pour la chaîne de caractères spFullPath. En attente de validation.
23 décembre 2004 15:22:32 :
+ v.0.1.0.3 - 2004.12.23 12:14 - modification de la fonction 'wordchar', retournant le caractère séparateur de la variable d'environnement PATH. Abandon de la macro définissant l'environnement de compilation (CYGWIN ou WIN32) au profit d'un test dynamique. - 2004.12.23 12:18 - ajout de commentaires fonction wordchar. - 2004.12.23 12:37 - correction de la fonction 'DumpFile' : test de premier niveau sur l'existence du fichier, écriture des erreurs sur la sortie d'erreur, code retour programme en erreur (=> 1). - 2004.12.23 12:39 - ajout d'informations de construction au sein de l'exécutable 'ldd.exe'. - 2004.12.23 12:56 - ajout de commentaires fonction 'words'. définissant le nom du programme pour les sorties standard et d'erreur. - 2004.12.23 13:05 - modification texte fonction 'PrintVersion'. - 2004.12.23 13:12 - inclusions fichiers 'win32ldd_private.h' & 'win32ldd.h' (nouveauté : prototypes des fonctions). - 2004.12.23 13:18 - limitation des commentaires de fonctions au fichier d'en-têtes 'win32ldd.h', à l'exception de la fonction 'main'. En attente validation.
09 août 2005 17:34:45 :
+ Mise en place du mode "verbose" (récursivité sur les dépendances trouvées). + Amélioration et correction des bugs sous Win32/Cywgin. + Adoption de la licence CeCILL. + Disponibilité sur serveur CVS : http://www.fmichaud.com/cvs-public/ldd_for_win32/
22 novembre 2007 12:26:28 :
Ajout du lien vers le début subversion [http://svn.fmichaud.com/app/win32ldd/trunk/]

Commentaires et avis

signaler à un administrateur
Commentaire de Nebula le 22/12/2004 20:18:49

C'est intéressant, mais connais-tu objdump ? Il fait partie de la suite GCC et fait (entre autres) cette liste de librairies, pour la plupart (sinon tous) des formats exécutables gérés par GCC ;-)

signaler à un administrateur
Commentaire de Nebula le 22/12/2004 20:21:25

J'oubliais : le format de tes commentaires est une simple habitude, ou il fait partie d'un programme de documentation automatique (et si oui, pourrais-je connaître son nom) ?

signaler à un administrateur
Commentaire de Nebula le 22/12/2004 20:35:32

Hm je viens de tester le programme, et il plante systématiquement sur la deuxième DLL importée (testé le ldd.exe du zip et une version que j'ai recompilée, sur eux-même et sur notepad.exe). J'utilise MinGW et Windows XP SP2.

Voici la sortie de GDB pour t'aider à débugger :
(gdb) set args notepad.exe
(gdb) run
warning: HEAP[a.exe]:
warning: Heap block at 003D27F0 modified at 003D2818 past requested size of 20
Program received signal SIGTRAP, Trace/breakpoint trap.
0x7c911231 in _libmsvcrt_a_iname ()
(gdb) bt
#0  0x7c911231 in _libmsvcrt_a_iname ()
#1  0x7c97c943 in _libmsvcrt_a_iname ()
#2  0x7c96db9c in _libmsvcrt_a_iname ()
#3  0x7c97cd11 in _libmsvcrt_a_iname ()
#4  0x7c97df66 in _libmsvcrt_a_iname ()
#5  0x7c95a5d0 in _libmsvcrt_a_iname ()
#6  0x7c9368ad in _libmsvcrt_a_iname ()
#7  0x77bfc2de in _libmsvcrt_a_iname ()
#8  0x00401694 in DumpImportsSection (base=5111808, pNTHeader=0x4e00e0) at win32ldd.c:251
#9  0x004016ef in DumpExeFile (dosHeader=0x4e0000) at win32ldd.c:282
#10 0x00401841 in DumpFile (filename=0x3d24a8 "notepad.exe") at win32ldd.c:331
#11 0x00401a3f in main (argc=2, argv=0x3d2510) at win32ldd.c:422
(gdb)

signaler à un administrateur
Commentaire de meech le 22/12/2004 22:11:48

Bonjour Nébula,

1. Oui, je connais 'objdump' (lequel doit faire sensiblement la même chose). Du reste, je me suis basé sur les sorties de ce programme pour "valider" ce code.
2. Pour les commentaires, les "--- debut ---" et "--- fin ---" appartiennent bel et bien à une sale habitude. Toutefois, les commentaires directs des fonctions (du style @param) sont traités par l'outil libre Doxygen (ici j'ai utilisé ce qui est appelé le "Java-Style"). Ce n'est peut-être pas la référence, mais bon... désolé...
3. Comme tu le soulignes, les erreurs sont la preuve que ce dump n'est pas validé. Erreur de ma part donc... Pas de XP-SP2 chez moi, mais je fais au plus vite pour corriger cette grosse bévue.

En tout cas, merci de tes remarques particulièrement pertinente qui m'apprendront à vérifier avant de publier.

PS. Merci pour la sortie dbg.

signaler à un administrateur
Commentaire de meech le 22/12/2004 22:23:14

Nébula,

Ne serait-ce pas par hasard la ligne 228, où l'allocation dynamique de mémoire est réalisée, qui serait en cause.
A priori, il faudra ajouter au vieux calcul 2 (en raison du caractère de fin de chaîne et du slash que j'ajoute par la suite).

Je viens de corriger cela, et au cas où tu as un peu de temps, fais-moi signe si ce code foire encore.

Encore merci ;-)

signaler à un administrateur
Commentaire de Nebula le 22/12/2004 23:07:35

A priori c'était bien cela, le programme tourne désormais convenablement. Je vais jeter un oeil du côté de Doxygen, je cherche justement de tels outils... Merci :)

signaler à un administrateur
Commentaire de meech le 23/12/2004 10:10:39

Deux remarques encore :
1. Réctificatif : ce n'est pas objdump qui s'inspire de ce code mais plutôt l'inverse ;-) [cf. mon minable commentaire du 22/12/2004 22:11:48].
2. Je ne crois pas que la commande objdump puisse spécifier si la dll est trouvée ou non dans le PATH de Windows.

Une question :
Quelqu'un sait-il à quoi correspond précisément l'adresse mémoire spécifiée entre paranthèses lors de l'exécution de ldd sous linux ? En effet, j'aimerais à l'avenir améliorer la correspondance entre la véritable commande ldd et ce code (je pense également au mode 'verbose' et aux relocations).

Nébula -> merci pour ta note ;-) sympa.

signaler à un administrateur
Commentaire de Nebula le 23/12/2004 17:36:43

J'ai vu que tu avais restructuré ton code, je préfère ainsi c'est beaucoup plus clair :)

Pour ce qui est des valeurs entre parenthèses je n'en ai aucune idée, man ldd ne donne pas d'explications (sur NetBSD en tout cas). Et je n'ai jamais utilisé Cygwin, donc...

Bonne continuation !

signaler à un administrateur
Commentaire de meech le 04/01/2005 01:21:55

Je te rassure, Nébula, "man ldd" ne donne pas plus sur ma Debian...

signaler à un administrateur
Commentaire de mezos le 31/10/2007 15:11:03

Bonjour,

merci pour ce petit bout de soft très pratique.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Integrer une DLL au projet [ par Mike ] Salut a tousJe souhaite integrer la DLL "iphlpapi.dll" (windows/system32) pour utiliser la fonction "GetIpAddrTable", je souhaite pour le moment simpl Problème Glut + Dev C++ [ par Joel ] Je suis désolé de vous emmerder encore avec ça : mais j'essaie depuis 2 jours, j'ai lu tous les messages du forum et pourtant...J'ai mis les dll (glut Utilisation de DLL dans un système 16 Bits DOS 6.22 [ par yass007 ] Voila,je voudrai savoir tt dabord sil ya des tutoriaux sur comment creer des Dlls sous Turbo C++ 3.0 et compatibles avec un système 16 Bits , en l'occ Une DLL jpeg integre a Windows [ par oRTEEZ ] J'aimerais savoir si il existe integrer a Windows une librairie permettant de manipuler les Jpeg juste la fonction d'encodage en fait.MERkI probleme de librairie [ par zincben ] Bonjour, je travaille sur le portage d'une appli 16bits en 32bits. et j'ai un petit souci.J'ai fait des modifs pour la passer en 32b qui sont en princ LoadLibrary -> Impossible de charger la librairie (builder C++ 6) [ par franckies ] Salut à tous !Voila j'utilise builder C++ 6 et à l'aide d'un tuto j'ai recopié un hook de clavier pour pouvoir réalisé une patite appli.Pour créer ce Linux questions facile [ par xarier ] -------------salut tout le monde comme vous savez tous opengl est multiplate form alors il existe des library qui le rend portable ma question et tout DLL Windows + Linux [ par Macvel ] Salut tout le monde,je cherche à écrire une dll qu'on puisse utiliser à la fois sous Windows et sous Linux ou autre plateforme.Je sais que normalement Au secours!!! Comment debugger sous dev-c++ ( dgb ou insight) [ par smagf ] Quelqu'un peut il m'aider à comprendre comment débugger un prog sous c++ soit avec dgb soit avec insight??? Quand je tente de debugger voilà ce qui se Cherche Librairie OCR en c++ [ par spaceclic ] Bonjour à tous, Je recherche une dll de réseau de neuronnes pour faire un OCR J'en ai trouvé une, mais c'est du c# Sinon j'ai ég


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.