0

I am new in dll files, excuse please my errors if there are any.

I have an old application that I need to edit a dll file to update some functionality. Yet, when I am looking for dependencies of the related .exe, I cannot see the dll file I am looking for as if it is not using that at all. (to check the dependencies I use tasklist /m /fi "imagename eq xxx.exe" command)

The application is installed on an old computer and when I just copy the installation files to my computer and update the dll file, it is working on my machine (Windows 10). For the computer that the dll file should work (Windows 7), unfortunately changing it has no effects.

To my understanding, since the application is installed, related dlls are cached somewhere but I cannot find where to replace them. Any help is much appreciated.

dob
  • 1
  • Have you tried the rewrite of Dependency Walker (Dependencies)? https://github.com/lucasg/Dependencies – JG7 May 03 '21 at 13:35
  • Hi, thanks for your comment. I have checked with that after you mentioned, I can see that the dll I mentioned is linked to the target dll since it is listed in the dependencies. Yet after simply removing the dll, related .exe still works as if the old dll is still there. Therefore, changing the dll there has no effect. – dob May 03 '21 at 13:44
  • The system internals process explorer will show you every DLL that a running application has loaded and it's location. – Señor CMasMas May 03 '21 at 13:50
  • You could try to unregister then register the DLL using the command regsvr32. More information : https://superuser.com/questions/158633/what-is-regsvr32-why-do-we-need-it – S. Brottes May 03 '21 at 13:52
  • I will try both, thanks a lot – dob May 03 '21 at 13:55
  • It was a nice suggestion but registering a DLL is for ***COM ONLY*** @S.Brottes. The regsvr32 tool calls a predefined function in the DLL that sets up registry keys for COM. Regular DLLs don't get registered. – Señor CMasMas May 03 '21 at 14:21
  • Which DLL is that? – harrymc May 03 '21 at 15:36

1 Answers1

0

An application can use LoadLibrary() and GetProcAddress() to use functions in a DLL.

The Dependenciy Walker is of no use unless the dependencies are linked into the import table.

I know of two options to solve this dilemma..

  1. You can open the exe in Microsoft Word to "Recover Text From Any File" and search for .dll (case insensative). There are other tools to extract text from binary files but Word is something many people have.

  2. You can You can painstakingly use the Systeminternals Process Monitor to figure out what DLLs are being loaded that aren't in the import table.

Good luck.

Señor CMasMas
  • 4,794
  • 1
  • 11
  • 27
  • My bad.. that wasn't the problem I guess – Señor CMasMas May 03 '21 at 13:48
  • Hello, thanks for your comment. I have the related decompiler tools which are actually the way that I could reimplement a no-more maintained dll. In those, I can see the dll is linked properly as the path of ...\bin\relateddll.dll. Yet, when I just simply remove it or change it, the behavior of .exe is not changing at all as if the library is still there. Do you have any idea what could cause this issue? – dob May 03 '21 at 13:51
  • `linked properly as the path of ...\bin\relateddll.dll` .. makes no sense to me. DLLs don't get paths unless they are using the LoadLibrary() method I speak of above. Have you tried playing with the actual environment PATH to get your DLL location to the front of the list? – Señor CMasMas May 03 '21 at 14:25