我有一个很长的列表,列出了我所拥有的所有程序。我需要知道的是每个调用属于哪个DLL。我怎么能找到这个?
谢谢,
答案 0 :(得分:2)
实际上,Windows不会直接暴露这些,而是暴露系统DLL中的API,这些API负责自己调用系统调用。
因此,假设您实际上没有系统调用列表,而是一个调用列表。这个列表是从二进制文件生成的吗?二进制文件实际上有一个他们依赖的dll列表,而dumpbin /imports binary.exe
实际上会准确列出你要求的内容。
答案 1 :(得分:1)
鉴于可执行文件,最简单的方法可能是dumpbin /imports <exe_name>
。这将产生如下输出:
KERNEL32.dll
405020 Import Address Table
4060FC Import Name Table
0 time date stamp
0 Index of first forwarder reference
126 GetModuleHandleA
150 GetStartupInfoA
USER32.dll
405480 Import Address Table
40655C Import Name Table
0 time date stamp
0 Index of first forwarder reference
F0 GetClientRect
17A InvalidateRect
B7 EnableWindow
291 UpdateWindow
GDI32.dll
405000 Import Address Table
4060DC Import Name Table
0 time date stamp
0 Index of first forwarder reference
37 CreateFontIndirectA
1AF Rectangle
4D CreateSolidBrush
44 CreatePen
1C7 SelectObject
53 DeleteObject
14F GetObjectA
根据您的可执行文件,您将获得更多无关信息。既然你已经有了一个你关心的函数列表,那么过滤它就可以很容易地得到你需要的信息而忽略了其余部分。