如何找到DLL文件的API函数?

时间:2009-12-16 20:41:14

标签: winapi api dll export

有没有办法从 DLL文件获取所有 API(导出)功能?

我知道依赖 PE Explorer 等程序可以做到这一点但是没有一个能够检索参数列表。

3 个答案:

答案 0 :(得分:5)

除非导出的函数类似于COM DLL或带有munging的C ++,否则信息根本就不存在提供参数。通常可以找到参数的总大小,并且有一个相当不错的机会,除以4将得到接近正确数字的东西,但除此之外,它还是手工劳动,阅读汇编代码以弄清楚参数是如何使用

如果它是一个COM DLL,它可能包含一个类型库,告诉所有关于DLL的内容以及如何使用它。在这种情况下,通常只会有一些非常的导出函数 - 你必须使用COM才能获得真正的功能。

如果他们被称为C ++名称,那么它将取决于用于创建DLL的编译器/工具集。例如,如果它是使用VC ++创建的,则可以使用UnDecorateSymbolName()来获取全名和参数。

答案 1 :(得分:2)

我提出这种方式(使用vissual studio 2008和windows):

  1. 打开cmd
  2. 转到

      

    C:\ ..." mvs9.0" \ VC \ BIN

  3. EXEC

      

    dumpbin" nameOfDll" .dll / exports / out c:\ dumpbin.txt

  4. open dumpbin.txt

  5. 看起来像这样

        ordinal hint RVA      name
    
          1    0 00001070 ??0CMpeg4Dec@@QAE@XZ
          2    1 000011A0 ??1CMpeg4Dec@@QAE@XZ
          3    2 00001000 ??4CMpeg4Dec@@QAEAAV0@ABV0@@Z
          4    3 00001130 ?CheckFrameType@CMpeg4Dec@@QAEHXZ
          5    4 00001100 ?DecodeFrame@CMpeg4Dec@@QAEHPAE@Z
          6    5 00001150 ?GetHeight@CMpeg4Dec@@QAEHXZ
          7    6 00001160 ?GetPicture@CMpeg4Dec@@QAEPAEXZ
          8    7 00001140 ?GetWidth@CMpeg4Dec@@QAEHXZ
          9    8 000010E0 ?InitDecoder@CMpeg4Dec@@QAEHPAE@Z
         10    9 00001120 ?ReleaseDecoder@CMpeg4Dec@@QAEHXZ
    

    1. EXEC

        

      undname ?? 0CMpeg4Dec @@ QAE @ XZ

    2.      输出是

      Microsoft (R) C++ Name Undecorator
      Copyright (C) Microsoft Corporation. All rights reserved.
      
      Undecoration of :- "??0CMpeg4Dec@@QAE@XZ" is :- "public: __thiscall CMpeg4Dec::CMpeg4Dec(void)"
      

答案 2 :(得分:0)

对于C ++函数,您可以看到参数(以及一些其他属性),取决于可以解除dem)。对于C,没有运气(C链接是无类型的)。​​