回答

0

导出表只包含导出函数的条目。如果您调试可用的信息,那么通常还会有大多数其他功能的条目。没有这一点,可能性非常好,可执行文件不包含任何有关未导出函数的信息。

+0

我剥离了所有调试信息来分离PDB文件和我的项目编译为“释放”模式。 – Usman 2010-03-17 16:13:08

+0

@Usman:假设pdb文件可用,您可以使用Windows的调试功能(尤其是SymInitialize和company)来获取有关功能(导出或其他)的数据。 – 2010-03-17 16:35:33

+0

如果确实有可能存在dbg文件,我们可以将非导出的简单win32 exe funcs和地址的所有地址,然后dbghelp api将协助执行所有这些操作?那会很好。 – Usman 2010-03-17 16:42:57

0

使用dumpbin附带Visual Studio C++ Express或下载OpenWatcom C/C++包,并在那里有一个与之相关的wdump ...

 
Open Watcom Executable Image Dump Utility Version 1.8 
Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved. 
Source code is available under the Sybase Open Watcom Public License. 
See http://www.openwatcom.org/ for details. 

Usage: wdump [-?abdefipqrsx] [-A] [-B] [-D] [-S] 
    is a DOS EXE file, a Windows or OS/2 executable or DLL, 
      a PharLap executable, NLM, a QNX executable, 
      an ELF executable, shared library or object file, 
      or a COFF object. 

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

编辑#2: @UsMan:您可以转储出口函数的地址,但要找到签名并不容易,因为您需要反汇编相关的EXE并从查看调用中计算出参数叠加。除此之外,如果你有一个第三方DLL,但没有附带头文件和lib文件,向你展示函数签名......你几乎不走运,除非反汇编代码......如果你是谈论发行版EXE或DLL时,调试信息将被剥离,将其加载到调试器中以调出堆栈,使用调用和参数,这将是一个争论点,这将变得更加困难。

请问您可以编辑您的问题,使其更清楚地表明您的目标是什么,因为我在脚下拍摄自己,并有可能因为您对此答案不满意而陷入低风险。它是一个MFC,ATL,DLL,什么是EXE,DLL等......

+0

它会做什么.. 对我来说它会临时显示非导出funcs(简单的Win32 Exe函数)的所有列表。我需要提取所有这些所需的地址以及所有这些地址来调用它们。 – Usman 2010-03-17 16:10:39

+0

@Usman:你有Visual Studio吗?不,它不是'临时显示所有非导出函数的列表'... – t0mm13b 2010-03-17 16:28:15

+0

yup Visual Studio 2008.NET,VS.2003.NET。我的工作是提取Win32 exe的所有签名(不是Win32 DLL的导出函数,我知道每个导出表都包含所有函数地址和装饰名称)。我需要提取WIN 32 EXE FUNCS和完整签名的地址。 – Usman 2010-03-17 16:38:47

相关问题