2009-10-10 29 views

回答

56

您可以使用Dependency Walker來查看函數名稱。 只有在裝飾後才能看到該功能的參數。 閱讀常見問題解答如下:

如何查看參數和返回類型的函數? 對於大多數功能,這些信息根本不存在於模塊中。 Windows的模塊文件格式只提供一個文本字符串來標識每個函數。沒有結構化的方式來列出參數數量,參數類型或返回類型。然而,一些語言做了一些叫做「修飾」或「修飾」的功能,這是將信息編碼到文本字符串中的過程。例如,像簡單修飾編碼的int Foo(int,int)這樣的函數可能會被導出爲_Foo @ 8。 8表示參數使用的字節數。如果使用C++裝飾,該函數將被導出爲?Foo @@ YGHHH @ Z,它可以直接解碼回函數的原始原型:int Foo(int,int)。 Dependency Walker通過使用Undecorate C++ Functions Command支持C++ undecoration。

+0

謝謝,但是當我嘗試打開任何DLL時,它顯示在日誌窗口中: 錯誤:由於隱式依賴模塊中缺少導出功能,至少有一個模塊具有未解析的導入。 錯誤:找到具有不同CPU類型的模塊。 警告:未找到至少一個延遲加載依賴項模塊。 警告:由於延遲加載相關模塊中缺少導出功能,因此至少有一個模塊具有未解析的導入。 – 2009-10-10 18:17:38

+0

我正在使用Windows 7 x64 Final。 – 2009-10-10 18:21:24

+3

@Alon:嗯,你的應用程序是安靜的搞砸了:)第一個錯誤表明你的一些dll是爲32位系統編譯的,而一些是爲64位編譯的。你只能在相同的進程中使用相同的CPU架構加載dll。只要應用程序正在處理它們,您就可以忍受其他兩個錯誤。 – 2009-10-10 18:25:32

2

不確定其參數列表,但following TotalCommander plugin是非常有用的。

+8

我不知道人們想下載一個二進制不知道它到底是什麼。插件頁面在這裏:http://physio-a.univ-tours.fr/tcplugins/ – RedGlyph 2009-10-10 18:34:34

+0

@RedGlyph隨時編輯我的答案 – Restuta 2015-10-02 23:13:54

8

如果你沒有源代碼和API文檔,機器碼就是一切,你需要拆開使用類似IDA Pro的dll庫,另一個選擇是使用PE Explorer試用版。

PE Explorer提供反彙編程序。只有一種方法可以找出參數:運行反彙編程序並閱讀反彙編輸出。不幸的是,這個反向工程接口的任務不能自動完成。 PE資源管理器捆綁了39個不同庫的描述,其中包括核心Windows®操作系統庫(例如KERNEL32,GDI32,USER32,SHELL32,WSOCK32),關鍵圖形庫(DDRAW,OPENGL32)等。在Visual Studio命令提示

alt text http://www.heaventools.com/img/tour2-2.gif

+0

這與Nirsoft DLL Export Viewer有何不同? – Pacerier 2017-04-29 23:21:22

60

DUMPBIN:

C:\用戶\安德魯\ src2011 \加密\ cspsdk> DUMPBIN /出口csp.dll

微軟(R)COFF/PE Dumper版本10.00.30319.01 版權所有(C)Microsoft Corporation。版權所有。

文件類型的文件csp.dll的轉儲:DLL

段包含CSP.dll

00000000 characteristics 
3B1D0B77 time date stamp Tue Jun 05 12:40:23 2001 
    0.00 version 
     1 ordinal base 
     25 number of functions 
     25 number of names 

ordinal hint RVA  name 

     1 0 00001470 CPAcquireContext 
     2 1 000014B0 CPCreateHash 
     3 2 00001520 CPDecrypt 
     4 3 000014B0 CPDeriveKey 
     5 4 00001590 CPDestroyHash 
     6 5 00001590 CPDestroyKey 
     7 6 00001560 CPEncrypt 
     8 7 00001520 CPExportKey 
     9 8 00001490 CPGenKey 
    10 9 000015B0 CPGenRandom 
    11 A 000014D0 CPGetHashParam 
    12 B 000014D0 CPGetKeyParam 
    13 C 00001500 CPGetProvParam 
    14 D 000015C0 CPGetUserKey 
    15 E 00001580 CPHashData 
    16 F 000014F0 CPHashSessionKey 
    17 10 00001540 CPImportKey 
    18 11 00001590 CPReleaseContext 
    19 12 00001580 CPSetHashParam 
    20 13 00001580 CPSetKeyParam 
    21 14 000014F0 CPSetProvParam 
    22 15 00001520 CPSignHash 
    23 16 000015A0 CPVerifySignature 
    24 17 00001060 DllRegisterServer 
    25 18 00001000 DllUnregisterServer 

摘要

1000 .data 
    1000 .rdata 
    1000 .reloc 
    1000 .rsrc 
    1000 .text 
+6

注意不要意外執行'dumpbin/export'(最後缺少's'),這是一個完全不同的命令。 – 2013-04-17 01:07:14

+1

我忘記了dumpbin,每六個月左右就必須查找一次這個答案。謝謝! – tofutim 2013-12-05 18:09:29

17

DLL Export Viewer以下出口NirSoft能用於在DLL中顯示導出的函數。

This utility displays the list of all exported functions and their virtual memory addresses for the specified DLL files. You can easily copy the memory address of the desired function, paste it into your debugger, and set a breakpoint for this memory address. When this function is called, the debugger will stop in the beginning of this function.

enter image description here

+1

Nirsoft的應用程序不會顯示無名函數:-( – TCS 2016-09-06 07:44:19

+0

@MagnusLindhe我使用這個應用程序複製地址並將其設置爲斷點,但是當我使用Visual Studio(調試模式,Win32)對其進行調試時,它不會暫停這個函數被調用了,我用了地址和相對地址來試試這個,他們不工作,我做錯了什麼?也許你知道嗎?我找不到更多的信息。 – 2017-01-27 12:21:00

+0

The DLL button的瀏覽('64bit) – Owl 2017-07-14 13:52:15

相關問題