I have several hundred DLLs belonging to a huge spaghetti-code-project and need to see which calls they export or import. And it would be also great if I would be able to get a dependency graph between DLLs. Could anyone recommend me free and reliable utilities for that?
Edit: Dependency walker seems to be not enough: I need to get a list not only for required DLL开发者_运维问答s but also to know what those DLLs are for.
Dependency Walker (depends.exe) can do that and is free. It also has a profile feature so you can see which DLLs get loaded dynamically.
If your DLLs are .Net assemblies you can use Reflector and if it is a COM DLL with a Type Library you can use OleView to get more information. To get more information out of a regular dll you would have to resort to disassemblers and reading assembly.
http://www.ntcore.com/exsuite.php "CFF Explorer" this tool has everything you want. Read features it includes on the main page. Good luck!
Dependencies
Dependency Walker has some issues on Windows 10 (e.g Dependency walker hangs), there is an upgraded version of it, it is called Dependencies: https://github.com/lucasg/Dependencies It works properly on Windows 10.
There is no way to get information what DLLs are used. You have to read the software documentation of your project - hope for you that there is some. Also study the makefiles carefully.
You can only see which DLLs were included (statically - well in a different meaning then normally used) at link time but this is a subset of DLL's. It will not return any plugins or real dynamic loaded libraries.
To get this used at link time libraries you should use the "dumpbin" tool which comes with MSVC. "Dependancy walker" is just a frontend to this tool.
Then write a few scripts and/or use grep to filter the output to analyse the DLL contents.
You can search SO for other reverse engineering techniques. I believe you will find a lot of information because it is a common skill for programmers.
精彩评论