2009-10-10 3 views

Antwort

56

können Sie Dependency Walker verwenden, um den Funktionsnamen anzuzeigen. Sie können die Parameter der Funktion nur sehen, wenn sie dekoriert ist. lesen Sie die folgenden aus den FAQ:

Wie kann ich die Parameter und Rückgabetypen einer Funktion anzeigen? Für die meisten Funktionen sind diese Informationen im Modul nicht vorhanden. Das Windows-Moduldateiformat stellt nur eine einzige Textzeichenfolge zur Verfügung, um jede Funktion zu identifizieren. Es gibt keine strukturierte Möglichkeit, die Anzahl der Parameter, die Parametertypen oder den Rückgabetyp aufzulisten. In einigen Sprachen wird jedoch die Funktion "Dekoration" oder "Mangling" verwendet, bei der Informationen in die Textzeichenfolge geschrieben werden. Zum Beispiel kann eine Funktion wie int Foo (int, int), die mit einer einfachen Dekoration kodiert ist, als _Foo @ 8 exportiert werden. Die 8 bezieht sich auf die Anzahl der Bytes, die von den Parametern verwendet werden. Wenn C++ - Dekoration verwendet wird, wird die Funktion als? Foo @@ YGHHH @ Z exportiert, die direkt in den ursprünglichen Prototyp der Funktion zurückdecodiert werden kann: int Foo (int, int). Dependency Walker unterstützt die C++ - Uncoration mithilfe des Befehls Undecorate C++ Functions.

+0

Danke, aber wenn ich versuche, eine DLL zu öffnen, wird es im Protokollfenster angezeigt: Fehler: Mindestens ein Modul hat aufgrund einer fehlenden Exportfunktion in einem implizit abhängigen Modul einen nicht aufgelösten Import. Fehler: Module mit verschiedenen CPU-Typen wurden gefunden. Warnung: Mindestens ein Abhängigkeitslastabhängigkeitsmodul wurde nicht gefunden. Warnung: Mindestens ein Modul hat einen nicht aufgelösten Import aufgrund einer fehlenden Exportfunktion in einem verzögerungslastabhängigen Modul. –

+0

Ich benutze Windows 7 x64 Final. –

+3

@Alon: Nun, Ihre Anwendung ist ruhig durcheinander :) der erste Fehler zeigt an, dass einige Ihrer DLLs für 32-Bit-Systeme und einige für 64-Bit-Systeme kompiliert werden. Sie können nur DLLs mit derselben CPU-Architektur im selben Prozess laden. Sie können mit den anderen beiden Fehlern leben, solange die Anwendung sie verarbeitet. –

2

Nicht sicher über seine Parameter Liste, aber following TotalCommander plugin ist sehr nützlich.

+8

Ich bin nicht sicher, ob die Leute wollen einen binären herunterladen, ohne genau zu wissen, was es ist. Die Plugin-Seite ist hier: http://physio-a.univ-tours.fr/tcplugins/ – RedGlyph

+0

@RedGlyph Fühlen Sie sich frei, meine Antwort zu bearbeiten – Restuta

8

Wenn Sie nicht über den Quellcode und API-Dokumentation haben, das Maschinencode ist alles, was es ist, müssen Sie die DLL-Bibliothek mit so etwas wie IDA Pro zerlegen, ist eine weitere Option, um die Testversion von PE Explorer verwenden.

PE Explorer bietet einen Disassembler. Es gibt nur einen Weg, die Parameter herauszufinden: Führen Sie den Disassembler aus und lesen Sie den Disassembly-Ausgang. Leider kann diese Aufgabe des Reverse Engineering der Schnittstelle nicht automatisiert werden.

PE Explorer wird mit Beschreibungen für 39 verschiedene Bibliotheken geliefert, einschließlich der Kern-Windows®-Betriebssystembibliotheken (z. B. KERNEL32, GDI32, USER32, SHELL32, WSOCK32), Schlüsselgrafikbibliotheken (DDRAW, OPENGL32) und mehr.

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

+0

Wie unterscheidet sich dies von Nirsoft DLL Export Viewer? – Pacerier

60

dumpbin aus der Visual Studio-Eingabeaufforderung:

C: \ Users \ Andrew \ src2011 \ Kryptografie \ cspsdk> dumpbin/export csp.dll

Microsoft (R) COFF/PE Dumper Version 10.00.30319.01 Urheberrecht (C) Microsoft Corporation. Alle Rechte vorbehalten.

Dump der Datei csp.dll

Dateityp: DLL

Abschnitt die folgenden Export CSP.dll enthält

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 

Zusammenfassung

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

Achten Sie darauf, "dumpbin/export" nicht versehentlich auszuführen ('s' fehlt am Ende), es ist ein komplett anderer Befehl. –

+1

Ich vergesse dumpbin und muss diese Antwort alle sechs Monate oder so nachschlagen. Vielen Dank! – tofutim

17

DLL Export Viewer von NirSoft können verwendet werden, um exportierte Funktionen in einer DLL anzuzeigen.

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's Anwendung zeigt keine namenlosen Funktionen :-( – TCS

+0

@MagnusLindhe Ich benutze diese App kopieren Sie die Adresse und setzen Sie es als Haltepunkt, aber wenn ich es mit Visual Studio debuggen (Debug-Modus, Win32) es nicht pausiert wann Die Funktion wird aufgerufen. Ich habe sowohl die Adresse als auch die relative Adresse verwendet, um dies zu versuchen. Sie funktionieren nicht. Was mache ich falsch? Vielleicht wissen Sie? Ich kann nicht mehr Informationen dazu finden. –

+0

Die Suche nach DLL-Taste ist für mich abgeschlossen, zeigt auch keine Funktionen in Dlls. Ich verwende Windows 10 (64bit) – Owl

Verwandte Themen