我需要知道其導出的表(PE文件)中包含的所有Win32.exe函數或類方法。我在哪裏可以獲得這些信息?我理解PE文件格式的每個部分,但請告訴我如何繼續。導出表是否包含Win32 Exe函數的所有條目?
問候,
穆罕默德·烏斯曼
我需要知道其導出的表(PE文件)中包含的所有Win32.exe函數或類方法。我在哪裏可以獲得這些信息?我理解PE文件格式的每個部分,但請告訴我如何繼續。導出表是否包含Win32 Exe函數的所有條目?
問候,
穆罕默德·烏斯曼
導出表只包含導出函數的條目。如果您調試可用的信息,那麼通常還會有大多數其他功能的條目。沒有這一點,可能性非常好,可執行文件不包含任何有關未導出函數的信息。
使用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等......
它會做什麼.. 對我來說它會臨時顯示非導出funcs(簡單的Win32 Exe函數)的所有列表。我需要提取所有這些所需的地址以及所有這些地址來調用它們。 – Usman 2010-03-17 16:10:39
@Usman:你有Visual Studio嗎?不,它不是'臨時顯示所有非導出函數的列表'... – t0mm13b 2010-03-17 16:28:15
yup Visual Studio 2008.NET,VS.2003.NET。我的工作是提取Win32 exe的所有簽名(不是Win32 DLL的導出函數,我知道每個導出表都包含所有函數地址和裝飾名稱)。我需要提取WIN 32 EXE FUNCS和完整簽名的地址。 – Usman 2010-03-17 16:38:47
我剝離了所有調試信息來分離PDB文件和我的項目編譯爲「釋放」模式。 – Usman 2010-03-17 16:13:08
@Usman:假設pdb文件可用,您可以使用Windows的調試功能(尤其是SymInitialize和company)來獲取有關功能(導出或其他)的數據。 – 2010-03-17 16:35:33
如果確實有可能存在dbg文件,我們可以將非導出的簡單win32 exe funcs和地址的所有地址,然後dbghelp api將協助執行所有這些操作?那會很好。 – Usman 2010-03-17 16:42:57