回答

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

相關問題