2009-10-10 9 views

Répondre

56

Vous pouvez utiliser Dependency Walker pour afficher le nom de la fonction. vous pouvez voir les paramètres de la fonction seulement si elle est décorée. lire ce qui suit à partir de la FAQ:

Comment visualiser les paramètres et les types de retour d'une fonction? Pour la plupart des fonctions, cette information est simplement absente du module. Le format de fichier du module Windows fournit uniquement une chaîne de texte unique pour identifier chaque fonction. Il n'y a pas de manière structurée de lister le nombre de paramètres, les types de paramètres ou le type de retour. Cependant, certaines langues font ce qu'on appelle la fonction "décoration" ou "mangling", qui est le processus d'encodage des informations dans la chaîne de texte. Par exemple, une fonction comme int Foo (int, int) codée avec une décoration simple peut être exportée en tant que _Foo @ 8. Le 8 se réfère au nombre d'octets utilisés par les paramètres. Si la décoration C++ est utilisée, la fonction sera exportée sous la forme? Foo @@ YGHHH @ Z, qui peut être directement décodée dans le prototype original de la fonction: int Foo (int, int). Dependency Walker prend en charge la déconsignation C++ à l'aide de la commande Undecorate C++ Functions.

+0

Merci, mais quand j'essaie d'ouvrir une DLL, il apparaît dans la fenêtre du journal: Erreur: Au moins un module a une importation non résolue en raison d'une fonction d'exportation manquante dans un module implicitement dépendant. Erreur: Des modules avec différents types de CPU ont été trouvés. Avertissement: Au moins un module de dépendance de charge de retard n'a pas été trouvé. Avertissement: Au moins un module a une importation non résolue en raison d'une fonction d'exportation manquante dans un module dépendant de la charge de retard. –

+0

J'utilise Windows 7 x64 Final. –

+3

@Alon: Eh bien, votre application est silencieuse foiré :) la première erreur indique que certains de vos dll sont compilés pour les systèmes 32 bits et certains pour 64 bits. vous ne pouvez charger que des dll avec la même architecture CPU dans le même processus. vous pouvez vivre avec les deux autres erreurs tant que l'application les gère. –

2

Vous n'êtes pas sûr de sa liste de paramètres, mais following TotalCommander plugin est très utile.

+8

Je ne suis pas sûr que les gens veulent télécharger un fichier binaire sans savoir exactement ce qu'il est. La page du plugin est ici: http://physio-a.univ-tours.fr/tcplugins/ – RedGlyph

+0

@RedGlyph hésitez pas à éditer ma réponse – Restuta

8

Si vous ne disposez pas du code source et la documentation de l'API, le code de la machine est tout ce qu'il ya, vous devez démonter la bibliothèque dll en utilisant quelque chose comme IDA Pro, une autre option est d'utiliser la version d'essai de PE Explorer. PE Explorer fournit un désassembleur.

Il n'y a qu'une seule façon de comprendre les paramètres: exécutez le désassembleur et lisez la sortie de désassemblage. Malheureusement, cette tâche d'ingénierie inverse de l'interface ne peut pas être automatisée. PE Explorer est livré avec des descriptions pour 39 bibliothèques différentes, y compris les principales bibliothèques du système d'exploitation Windows® (par exemple KERNEL32, GDI32, USER32, SHELL32, WSOCK32), les bibliothèques graphiques clés (DDRAW, OPENGL32) et plus encore.

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

+0

En quoi cela diffère-t-il de Nirsoft DLL Export Viewer? – Pacerier

60

dumpbin à partir de l'invite de commande Visual Studio:

C: \ Users \ Andrew \ src2011 \ Cryptography \ cspsdk> dumpbin/exportations csp.dll

COFF Microsoft (R)/PE Dumper Version 10.00.30319.01 Droit d'auteur (C) Microsoft Corporation. Tous les droits sont réservés.

Dump du fichier csp.dll

Type de fichier: DLL

section contient les exportations suivantes pour 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 

Résumé

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

Attention à ne pas exécuter 'dumpbin/export' accidentellement ('s' est manquant à la fin), c'est une commande complètement différente. –

+1

J'oublie de vidage et dois rechercher cette réponse tous les six mois ou plus. Merci! – tofutim

17

DLL Export Viewer par NirSoft peut être utilisé pour afficher les fonctions exportées dans une 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

L'application de Nirsoft ne montre pas de fonctions sans nom :-( – TCS

+0

@MagnusLindhe J'utilise cette application pour copier l'adresse et la définir en tant que point d'arrêt, mais lorsque je la débogue avec Visual Studio (mode Debug, Win32), elle ne s'arrête pas lorsque la fonction est appelée.J'ai utilisé à la fois l'adresse et l'adresse relative pour essayer ceci.Ils ne fonctionnent pas.Que fais-je mal? Peut-être que vous savez? Je ne peux pas trouver plus d'informations à ce sujet –

+0

Le bouton Parcourir pour DLL J'utilise Windows 10 (64bit) – Owl

Questions connexes