Répondre

0

La table d'exportation contient seulement des entrées pour des fonctions exportées. Si vous déboguez des informations disponibles, il y aura généralement des entrées pour la plupart des autres fonctions. Sans cela, il y a de fortes chances que l'exécutable ne contienne aucune information sur les fonctions qui n'ont pas été exportées.

+0

Je dépouille toutes les informations de débogage pour séparer le fichier PDB et mon projet compilé en mode "Release". – Usman

+0

@Usman: En supposant que le fichier pdb est disponible, vous pouvez utiliser les fonctions de débogage de Windows (en particulier SymInitialize et compagnie) pour obtenir des données sur les fonctions (exportées ou non). –

+0

Si vraiment est-il possible en présence de fichiers dbg, que nous puissions prendre toutes les adresses de fonctions et d'adresses win32 exe non exportées simples, alors dbghelp api aiderait à effectuer toutes ces opérations? Ce serait assez bien. – Usman

0

Utilisez dumpbin qui vient avec Visual Studio C++ Express ou télécharger le package OpenWatcom C/C++ et là il y a un wdump associé ...

 
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. 

Edit: Vous ne pouvez pas extraire ces fonctions d'exportation directement par des moyens programmatiques, l'utilitaire ci-dessus affichera les adresses en utilisant le Commutateurs de ligne de commande, y compris l'affichage de l'adresse des fonctions d'exportation pour 'LoadLibrary', 'FreeLibrary'. Lorsqu'un appel à 'GetProcAddress' est utilisé, en interne, il effectue une recherche dans le répertoire d'exportation pour trouver l'adresse pertinente de la fonction exportée avant de renvoyer un pointeur de fonction pour cette fonction exportée.

Edit # 2: @UsMan: Vous pouvez vider les adresses des fonctions d'exportation, mais de trouver les signatures n'est pas facile que vous auriez besoin de démonter le fichier EXE est pertinent et de travailler les paramètres de la recherche à l'appel empiler. Autre que cela, si vous avez une DLL tierce, mais ne vient pas avec un fichier d'en-tête et un fichier lib, pour vous montrer les signatures de fonction ... vous n'avez pas beaucoup de chance sauf démonter le code ... Si vous êtes parler d'une version EXE ou DLL, il sera plus difficile que l'information de débogage aurait été dépouillé, chargeant dans le débogueur pour élaborer la pile, les appels utilisés et les paramètres qui seraient un point discutable. Pouvez-vous s'il vous plaît modifier votre question pour clarifier plus précisément sur quel est votre objectif car je me tire dans le pied et risquer de tomber en panne à la suite de votre dés-satisfaction de cette réponse .... est il un MFC, ATL, DLL, ce qui est l'EXE, DLL, etc ...

+0

Ce que ça va faire Pour moi Il affichera temporairement toutes les listes de fonct non exportées (fonctions simples Win32 Exe). J'ai besoin d'extraire toutes ces adresses prgramatiquement et requises de tous ceux qui les appellent aussi. – Usman

+0

@Usman: vous avez Visual Studio? Et non, ce n'est pas 'montrer temporairement toutes les listes de fonctions non exportées' ... – t0mm13b

+0

yup Visual Studio 2008.NET, VS.2003.NET. Mon travail consiste à extraire toutes les signatures de Win32 exe (fonctions exportées DLL non Win32 Je sais que chaque table d'exportation contient toutes les adresses de fonctions et noms décorés) .J'ai besoin d'EXTRAIRE ADRESSES DE WIN 32 EXE FUNCS et FULL SIGNATURES. – Usman