Some software claims to be portable, but how do we know if it is really portable or not? I remembered back in the days when everyone was using Windows 98, a lot of “hacking tools” especially nukers are just one single executable file but it still requires dependency files such as winsck.ocx, msvbvm60.dll and etc. If those DLL or OCX files are not registered in your system32 folder, you won’t be able to run the program.
Another example would be software coded in .NET. Most of the .NET coded software seems to be portable because it doesn’t require installation but since .NET Framework doesn’t come pre-installed in Windows XP, we can’t say that it’s portable. Perhaps when Windows Vista or 7 has totally replaced XP, then we can call software coded in .NET portable.
Last week I tried to run Remove Restriction Tool on one of a customer’s computer that has been infected by a computer virus but it gave an error. I couldn’t figure out what was wrong but I can only suspect that maybe one of the DLL files that was required to run RRT has corrupted but I didn’t know which one. Many years ago I had a tool that was able to check what DLL or OCX files is needed to run the executable file but I’ve lost it since I didn’t have a blog at that time to record it down. I searched around and found a similar tool called Dependency Walker.
Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules. For each module found, it lists all the functions that are exported by that module, and which of those functions are actually being called by other modules. Another view displays the minimum set of required files, along with detailed information about each file including a full path to the file, base address, version numbers, machine type, debug information, and more.
All you need to do is run depends.exe and then load an executable (EXE) file that you want to check what file is required to run it. Within a few seconds Dependency Walker will show you the required files. As you can see on the image above, I loaded RRT.exe (Remove Restriction Tool) unto Dependency Walker and it shows me that KERNEL32.DLL and MSVBVM60.DLL is required. Every Windows has kernel32.dll file so we don’t need to worry on the availability of that file. As for msvbvm60.dll, I can place a working copy of that DLL file at the same folder as where the RRT.exe is and it will automatically load the DLL file if it can’t find one in system32 folder.