在VC++中,有什么方法可以知道不带任何头文件的dll的导出class?

In VC++, is there any way to know the export class of a dll without any header files?

如果C++ Dll中有几个导出class,但我没有Dll共享头文件。所以我不知道这些exportclass的定义,唯一知道的就是class这个名字。有没有办法找到这些导出 class 并使用它们?

现在只能用GetProcAddress API找导出函数,有没有类似API找导出classes的?

我使用 VC++ 2008 编译器。

您可以使用各种工具
1. http://www.dependencywalker.com
2. http://www.nirsoft.net/utils/dll_export_viewer.html
3.http://www.heaventools.com/PE_Explorer_syntax_lookup.htm

最接近的方法是通过逆向工程(使用调试器)在调用构造函数之前找到所需的内存大小,也许您可​​以弄清楚成员的用途(以及继承和其他好处) ,但是除了导出的函数之外,您肯定不会有任何正确的名称。它可能会奏效,但这是一项艰巨的任务。

有两种方法可以从 DLL 中导出函数。 1) 显式链接到 DLL 2) 隐式链接到 DLL

1) 如果要使用第一种方法创建的DLL 你需要

  • .h 文件
  • .DLL 文件
  • .bin文件

2) 如果你想使用第二种方法创建的DLL 你需要

  • .DLL 文件而已

在第二种情况下你需要 - 自己加载DLL - 自己计算函数地址 -> GetProcAddress() - 自己卸载 DLL

如果您有 DLL,但不知道它正在导出哪个 类 或函数 - 使用 Dumpbin 和 /Exports 选项来了解所有导出的函数。

请让我知道我是否澄清了你的斗