Dependency Walker is your friend.
Note that it's almost impossible to find out which libraries/entry points a program uses by static analysis alone, since the strings passed to LoadLibrary
and GetProcAddress
might be obfuscated, i.e. not visible in the binary. Dependency Walker
catches those calls at runtime, which means a) you need to run the program - which may not be advisable if it's known malware - and b) it still might miss something if you don't execute that path of code. But within these restrictions, it's about the best you can get.