On that special day, jason, (
[email protected]) said...
Sorry, but I can't really tell. Until now, I had believed that
"dynamical loading" does mean, a dll file isn't loaded at the start time
of a given application, but only whern it is really needed, and that the
reference to the dll which is meant to be loaded only when needed, is
still stored in the exe file of the application. So, if you scan an
exefile for dll and vbx entries, you will still find these, be them
loaded at once or later on.
Of course, any given loaded module/dll/vbx may load more related
libraries, which again would have to be scanned for, and several of the
most basic modules of Windows are referencing each other, so if you
aren't careful enough, using the method described above, might cause the
program to track the references in a never ending loop.
Why should a program only check for modules that are loaded, while the
application is running? It doesn't make much sense.
Think of Office. You open word, and write a letter, and have Dependency
Walker log, what Word is calling for. Fine. But by now, Dependency
Walker has listed only *part* of what Word really needs.
Imagine that at the next time, you might open Word and use it to create
a Children's Birthday Invitation (as you don't have Powerpoint), and of
course insert some pictures, and print in landscape mode. Suddenly, Word
uses a very different set of libraries.
If you had relied on the information given by "Word used only these
libraries for the letter", and had deleted all the rest, some of the
functions which are called by changing the apperance of the text,
inserting graphics, and printing in landscape, might not work, because
the supporting libraries had been removed. This is surely not what you
want.
I wouldn't rely on the information what is *currently* loaded. It isn't
worth risking the system's integrity.