0

我需要知道其导出表中包含的所有 Win32(PE 文件)函数或类方法。我在哪里可以获得这些信息?我了解 PE 文件格式的每个部分,但我不知道如何进行。

4

2 回答 2

0

使用Visual Studio C++ Expressdumpbin附带的或下载OpenWatcom C/C++包,其中有一个与之相关的...wdump

打开 Watcom 可执行图像转储实用程序 1.8 版
部分版权所有 (c) 1984-2002 Sybase, Inc. 保留所有权利。
源代码可在 Sybase Open Watcom 公共许可证下获得。
有关详细信息,请参见 http://www.openwatcom.org/。

用法:wdump [-?abdefipqrsx] [-A] [-B] [-D] [-S]
   是 DOS EXE 文件、Windows 或 OS/2 可执行文件或 DLL,
            PharLap 可执行文件、NLM、QNX 可执行文件、
            ELF 可执行文件、共享库或目标文件,
            或 COFF 对象。

编辑:您不能通过编程方式直接提取这些导出函数,上面的实用程序将使用命令行开关显示地址,包括显示“LoadLibrary”、“FreeLibrary”的导出函数的地址。当调用“GetProcAddress”时,在内部,它会在返回导出函数的函数指针之前查找导出目录以查找导出函数的相关地址。

编辑#2: @UsMan:您可以转储导出函数的地址,但要找到签名并不容易,因为您需要反汇编相关的 EXE 并通过查看调用堆栈来计算参数。除此之外,如果您有一个 3rd 方 DLL,但没有附带头文件和 lib 文件,以向您显示函数签名...除了反汇编代码之外,您几乎不走运...如果您是谈论发布的 EXE 或 DLL 会更难,因为调试信息会因此被剥离,将其加载到调试器中以计算堆栈、使用的调用和参数,这将是一个有争议的问题。

您能否编辑您的问题,以更清楚地说明您的目标是什么,因为我正在自责,并且由于您对这个答案的不满意而冒着被否决的风险......它是 MFC, ATL、DLL、什么是EXE、DLL等...

于 2010-03-17T16:03:34.513 回答
0

导出表仅包含导出函数的条目。如果您调试信息可用,通常也会有大多数其他功能的条目。否则,很可能可执行文件根本不包含有关尚未导出的函数的任何信息。

于 2010-03-17T16:04:16.690 回答