有没有办法从 DLL文件获取所有 API(导出)功能?
我知道依赖和 PE Explorer 等程序可以做到这一点但是没有一个能够检索参数列表。
答案 0 :(得分:5)
除非导出的函数类似于COM DLL或带有munging的C ++,否则信息根本就不存在提供参数。通常可以找到参数的总大小,并且有一个相当不错的机会,除以4将得到接近正确数字的东西,但除此之外,它还是手工劳动,阅读汇编代码以弄清楚参数是如何使用
如果它是一个COM DLL,它可能包含一个类型库,告诉所有关于DLL的内容以及如何使用它。在这种情况下,通常只会有一些非常的导出函数 - 你必须使用COM才能获得真正的功能。
如果他们被称为C ++名称,那么它将取决于用于创建DLL的编译器/工具集。例如,如果它是使用VC ++创建的,则可以使用UnDecorateSymbolName()
来获取全名和参数。
答案 1 :(得分:2)
我提出这种方式(使用vissual studio 2008和windows):
转到
C:\ ..." mvs9.0" \ VC \ BIN
EXEC
dumpbin" nameOfDll" .dll / exports / out c:\ dumpbin.txt
open dumpbin.txt
看起来像这样
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
undname ?? 0CMpeg4Dec @@ QAE @ XZ
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链接是无类型的)。