A volte, per necessità o per curiosità, si potrebbe voler sapere quali librerie vengono utilizzate da un determinato programma al fine di individuare le DLL di cui abbiamo bisogno o per accertare eventuali problemi.
Per questo scopo ci viene in aiuto un semplice programmino di nome Dependency Walker: si tratta di un freeware portable sviluppato da un programmatore Microsoft.
Una volta avviato, clicchiamo su File e successivamente su Open. Scegliamo quindi l'eseguibile da analizzare.
Ecco come si presenterà:
Nel riquadro 1 abbiamo una visione in maniera gerarchica dei moduli coinvolti nel programma.
Viene mostrato dunque un elenco ad albero delle librerie utilizzate direttamente e delle relative librerie necessarie al loro funzionamento.
Nel riquadro 2 abbiamo un elenco equivalente al primo, ma che mostra in maniera riassuntiva e semplice tutte le DLL necessarie all'esecuzione del programma.
Cliccando su uno dei moduli nel primo quadrante possiamo vedere la parte relativa alle funzioni:
Più precisamente, nel quadrante 3 vengono mostrate tutte le funzioni chiamate dal programma (Parent Import Function), mentre nel quadrante 4 è presente l'elenco di tutte le funzioni all'interno della DLL in questione (Function Export).
Un programma e/o una libreria possono essere collegati ad altri moduli in tre maniere:
Si tratta di dipendenza implicita quando la libreria è collegata direttamente all'eseguibile. Tale associazione è stata fatta quindi al momento della compilazione del programma.
All'avvio del modulo padre (eseguibile), esso caricherà tutte le librerie a cui è dipendente implicitamente.
Nella dipendenza dinamica invece, il modulo non viene caricato preventivamene, ma è il programma che lo chiama durante il runtime; l'eventuale assenza di una libreria dinamica non impedisce l'avvio del programma ma ne preclude il corretto funzionamento
Si tratta di dipendenza transitiva quando la funzione presente in un modulo, viene caricata da una terza libreria.
In questo caso il modulo in questione viene caricato all'avvio del programma (come nella dipendenza implicita), ma la funzione in questione viene presa da un'altra libreria non associata preventivamente all'eseguibile.
Vediamo ora alcuni simboli mediante i quali Dependency Walker classifica una libreria.
Per comodità si può aggiungere la voce di Dependency Walker nel menu contestuale di un eseguibile.
Per prima cosa copiamo il programma Depends.exe nella cartella C:\windows\system32
Ora apriamo il blocco note ed incolliamo il seguente codice:
Salviamo il file aggiungendo l'estensione .reg e lanciamolo, quindi confermiamo.
Ora avremo comodamente la voce nel menu contestuale, così da vedere le dipendenze di un eseguibile in maniera più comoda e veloce:
MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .
Copyright 2008 MegaLab.it - Tutti i diritti sono riservati