是否有任何本机DLL导出函数查看器?

时间:2009-10-10 18:01:24

标签: dll function native dllimport

是否有免费的本机Windows DLL导出函数查看器,它显示函数名称及其参数列表?

5 个答案:

答案 0 :(得分:80)

Visual Studio命令提示符中的

dumpbin

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

答案 1 :(得分:65)

您可以使用Dependency Walker查看功能名称。 只有在装饰时才能看到函数的参数。 请阅读常见问题解答中的以下内容:

如何查看参数和返回函数类型? 对于大多数功能,此信息根本不存在于模块中。 Windows的模块文件格式仅提供单个文本字符串来标识每个函数。没有结构化的方法来列出参数的数量,参数类型或返回类型。但是,有些语言会执行称为“装饰”或“修改”的功能,这是将信息编码到文本字符串中的过程。例如,使用简单装饰编码的int Foo(int,int)函数可能会导出为_Foo @ 8。 8指的是参数使用的字节数。如果使用C ++修饰,该函数将被导出为?Foo @@ YGHHH @ Z,它可以直接解码回函数的原始原型:int Foo(int,int)。 Dependency Walker使用Undecorate C ++ Functions命令支持C ++ undecoration。

答案 2 :(得分:18)

DLL Export Viewer之后的{p> NirSoft可用于在DLL中显示导出的函数。

  

此实用程序显示所有导出功能及其列表   指定DLL文件的虚拟内存地址。你很容易   复制所需功能的内存地址,将其粘贴到您的   调试器,并为此内存地址设置断点。当这个   函数被调用,调试器将在此开始时停止   功能

enter image description here

答案 3 :(得分:8)

如果您没有源代码和API文档,机器代码就是全部,您需要使用类似IDA Pro的内容来反汇编dll库,另一个选项是使用{{{}的试用版本3}}

PE Explorer提供了反汇编程序。只有一种方法可以找出参数:运行反汇编程序并读取反汇编输出。不幸的是,这种对接口进行逆向工程的任务无法实现自动化。

PE Explorer捆绑了39种不同库的描述,包括核心Windows®操作系统库(例如KERNEL32,GDI32,USER32,SHELL32,WSOCK32),关键图形库(DDRAW,OPENGL32)等。

PE Explorer
(来源:alt text

答案 4 :(得分:2)

不确定其参数列表,但following TotalCommander plugin非常有用。