我有一个很长的名单,所有的电话我有一个程序。 我需要知道的是每个呼叫所属的DLL。 我怎么会find这个?
谢谢,
哼…你的头衔和你的问题指向不同的东西。 系统调用意味着非常具体的东西,一个调用操作系统内核(和那些不在 dll中)。
事实上,Windows不直接公开这些信息,而是暴露系统DLL中负责调用系统调用的API。
假设你实际上没有系统调用列表,而是调用列表。 这个列表是从二进制生成的吗? 二进制文件实际上有一个他们依赖的dll的列表,并且一个dumpbin /imports binary.exe
将实际上列出你要求的东西。
鉴于可执行文件,最简单的方法可能是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 GetmoduleeHandleA 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
根据您的可执行文件,您将获得更多无关信息的机会相当可观。 既然你已经有一个你关心的功能列表,应该很容易过滤这个来获取你所需要的信息,而把剩下的信息排除在外。