You might have noticed that some programs require certain .DLL or .OCX files in order to run. Similarly to programs that are created and compiled using Microsoft Visual C#, the program would require .NET framework to be installed on the target computer to run. Another example would be a program created using Visual Basic 6 would probably require MSVBVM60.dll to be present in either the system32 or the program’s folder. At least Microsoft has made an effort to ensure that VB6 applications can be executed on newer Windows operating system including Windows 10.
When a required .DLL is not found in either the program’s or system32 folder, you will get a system error window saying “The program can’t start because XXXXX.dll is missing from your computer. Try reinstalling the program to fix the problem” when attempting to run the program.
Solving the above problem is as easy as searching for the required .DLL or .OCX file on the Internet and placing it in the program’s folder. If you need to re-distribute a program without getting the error above, you must first know what are the dependencies of the software. Fortunately there are third party software that can scan and tell you the program’s dependencies. Here’s 5 of them.
1. Dependency Walker
Dependency Walker is a free and portable tool that can analyze any Windows module such as EXE, DLL, OCX, SYS and tell you the file’s dependencies. Simply run the program, click on File > Open and select the file that you want to check. A hierarchical tree diagram will be displayed on the program. A powerful feature found on Dependency Walker is the ability to detect all kinds of dependencies including the dynamic loading, delay loaded, injected and etc.
PeStudio is actually a tool meant to analyze executable files to detect any anomalies without even running it on the computer. It can tell you a lot of information about the loaded executable file such as the programming language used to code the program, Virustotal scan result, MD5/SHA1 hash, architecture (32-bit or 64-bit), certificates, resources, strings, and many more. To see the dependencies, simply look at the Imported Libraries from the hierarchical tree and it shows the different types of dependencies such as implicit, delay-loaded and etc.
3. MiTeC EXE Explorer
An advantage in MiTeC EXE Explorer is the ability to support many different types of files such as executables, DLLs, activeX, drivers, codecs, VxD, fonts, screensavers, borland packages and even control panel applets! To check for a file’s dependency, first load it into the program and check the Imports tab. A report can be saved as a text file from the file menu.
4. CFF Explorer
Although there is a newer version called PE Insider that is created by the same author of CFF Explorer, we still prefer the older version because the features are more complete while the newer PE Insider is a very basic viewer. Other than the built-in dependency walker, CFF Explorer also comes with a hex editor, an identifier to check the programming language used for the loaded file, quick disassembler, resource editor and even an UPX compressor.
Although many PE editors or readers claim to support .NET applications, AdmiralDebilitate is probably the only one that can truly show the dependencies of a .NET application. It also tells you the required .NET framework version at the Assembly Details window. Do note that the program itself requires .NET Framework 3.5 to run which is not included in Windows 8.1 by default. Although the official website of AdmiralDebilitate is no longer accessible, thankfully you can still find the source code and program hosted at Collaborative RCE Tool Library.
Additional Tip: If you want to re-distribute an executable file together with the dependencies and making sure that they can be run on most Windows operating systems, it is not necessary to include all the detected dependencies shown by the tools mentioned above. Most of the time you will just need to include only the DLL files that are not found in a fresh Windows operating system. Nirsoft has created 3 informational sites containing a standard default list of DLL files located in the system32 directory of Windows XP, 7 and 8.