Finding required dll's from Linux

It is possible to find which DLL files are needed for a windows binary or library in Linux.

To do this, you can use standard objdump utility if it supports PE format or you can install mingw cross compiler toolchains and run objdump within mingw:

$ objdump --private-headers my-binary.exe | grep "DLL Name"
	DLL Name: ADVAPI32.dll
	DLL Name: CRYPT32.dll
	DLL Name: KERNEL32.dll
	DLL Name: msvcrt.dll
	DLL Name: USER32.dll
	DLL Name: WS2_32.dll

or

$ sudo apt install mingw-w64
$ x86_64-w64-mingw32-objdump --private-headers my-binary.exe | grep "DLL Name"
	DLL Name: ADVAPI32.dll
	DLL Name: CRYPT32.dll
	DLL Name: KERNEL32.dll
	DLL Name: msvcrt.dll
	DLL Name: USER32.dll
	DLL Name: WS2_32.dll

You can also pipe output to a pager and look at the functions provided by a DLL or used within a binary from other DLL’s inside of Tables sections:

$ objdump -p my-binary.exe | less
...
The Import Tables (interpreted .idata section contents)
 vma:            Hint    Time      Forward  DLL       First
                 Table   Stamp     Chain    Name      Thunk
 00483000       004830a0 00000000 00000000 00485570 00483a20

        DLL Name: ADVAPI32.dll
        vma:  Hint/Ord Member-Name Bound-To
        4843a0   1195  CryptAcquireContextW
        4843b8   1197  CryptCreateHash
        4843ca   1198  CryptDecrypt

or

$ objdump -p mylibrary.dll | less
...
[Ordinal/Name Pointer] Table
        [   0] getDomainStatus
        [   1] utils_load
        [   2] utils_unload