【发布时间】:2010-12-05 15:20:57
【问题描述】:
是否有任何免费的本地 Windows DLL 导出函数查看器,它显示函数名称及其参数列表?
【问题讨论】:
标签: dll function native dllimport
是否有任何免费的本地 Windows DLL 导出函数查看器,它显示函数名称及其参数列表?
【问题讨论】:
标签: dll function native dllimport
您可以使用Dependency Walker 查看函数名称。 只有经过修饰才能看到函数的参数。 阅读常见问题解答中的以下内容:
如何查看函数的参数和返回类型? 对于大多数功能,此信息根本不存在于模块中。 Windows 的模块文件格式仅提供单个文本字符串来标识每个函数。没有结构化的方式来列出参数的数量、参数类型或返回类型。但是,有些语言会做一些称为函数“装饰”或“修饰”的事情,这是将信息编码到文本字符串中的过程。例如,像 int Foo(int, int) 这样用简单修饰编码的函数可能会导出为 _Foo@8。 8 是指参数使用的字节数。如果使用C++修饰,函数会导出为?Foo@@YGHHH@Z,可以直接解码回函数的原始原型:int Foo(int, int)。 Dependency Walker 通过使用 Undecorate C++ Functions 命令支持 C++ 取消修饰。
【讨论】:
如果你没有源代码和API文档,只有机器码,你需要使用IDA Pro之类的反汇编dll库,另一个选择是使用PE Explorer的试用版。
PE Explorer 提供了一个反汇编器。只有一种方法可以计算出参数:运行反汇编程序并读取反汇编输出。不幸的是,这个界面逆向工程任务不能自动化。
PE Explorer 捆绑了 39 个不同库的描述,包括核心 Windows® 操作系统库(例如 KERNEL32、GDI32、USER32、SHELL32、WSOCK32)、关键图形库(DDRAW、OPENGL32)等等。
(来源:heaventools.com)
【讨论】:
dumpbin 来自 Visual Studio 命令提示符:
dumpbin /exports csp.dll
输出示例:
Microsoft (R) COFF/PE Dumper Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file csp.dll
File Type: DLL
Section contains the following exports for CSP.dll
00000000 characteristics
3B1D0B77 time date stamp Tue Jun 05 12:40:23 2001
0.00 version
1 ordinal base
25 number of functions
25 number of names
ordinal hint RVA name
1 0 00001470 CPAcquireContext
2 1 000014B0 CPCreateHash
3 2 00001520 CPDecrypt
4 3 000014B0 CPDeriveKey
5 4 00001590 CPDestroyHash
6 5 00001590 CPDestroyKey
7 6 00001560 CPEncrypt
8 7 00001520 CPExportKey
9 8 00001490 CPGenKey
10 9 000015B0 CPGenRandom
11 A 000014D0 CPGetHashParam
12 B 000014D0 CPGetKeyParam
13 C 00001500 CPGetProvParam
14 D 000015C0 CPGetUserKey
15 E 00001580 CPHashData
16 F 000014F0 CPHashSessionKey
17 10 00001540 CPImportKey
18 11 00001590 CPReleaseContext
19 12 00001580 CPSetHashParam
20 13 00001580 CPSetKeyParam
21 14 000014F0 CPSetProvParam
22 15 00001520 CPSignHash
23 16 000015A0 CPVerifySignature
24 17 00001060 DllRegisterServer
25 18 00001000 DllUnregisterServer
Summary
1000 .data
1000 .rdata
1000 .reloc
1000 .rsrc
1000 .text
【讨论】:
NirSoft 的DLL Export Viewer 可用于在 DLL 中显示导出的函数。
此实用程序显示所有导出函数的列表及其 指定 DLL 文件的虚拟内存地址。您可以轻松 复制所需函数的内存地址,将其粘贴到您的 调试器,并为此内存地址设置断点。当这 函数被调用,调试器将在此开始处停止 功能。
【讨论】: