Je suis à la recherche d'un moyen (en C++/Windows) à la liste des fonctions exportées dans une DLL (et peut-être même des méthodes qui ne sont pas exportées) en utilisant dbgHelp.
Est-ce que quelqu'un sait quelle méthode peut le faire?
merci :)Liste des fonctions exportées d'une DLL
Répondre
Il y a un code here pour le faire. Je l'ai nettoyé un peu et cela a fonctionné dans le scénario montré ci-dessous, en récupérant les noms de fonction de Kernel32.Dll
.
#include "imagehlp.h"
void ListDLLFunctions(string sADllName, vector<string>& slListOfDllFunctions)
{
DWORD *dNameRVAs(0);
_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory;
unsigned long cDirSize;
_LOADED_IMAGE LoadedImage;
string sName;
slListOfDllFunctions.clear();
if (MapAndLoad(sADllName.c_str(), NULL, &LoadedImage, TRUE, TRUE))
{
ImageExportDirectory = (_IMAGE_EXPORT_DIRECTORY*)
ImageDirectoryEntryToData(LoadedImage.MappedAddress,
false, IMAGE_DIRECTORY_ENTRY_EXPORT, &cDirSize);
if (ImageExportDirectory != NULL)
{
dNameRVAs = (DWORD *)ImageRvaToVa(LoadedImage.FileHeader,
LoadedImage.MappedAddress,
ImageExportDirectory->AddressOfNames, NULL);
for(size_t i = 0; i < ImageExportDirectory->NumberOfNames; i++)
{
sName = (char *)ImageRvaToVa(LoadedImage.FileHeader,
LoadedImage.MappedAddress,
dNameRVAs[i], NULL);
slListOfDllFunctions.push_back(sName);
}
}
UnMapAndLoad(&LoadedImage);
}
}
int main(int argc, char* argv[])
{
vector<string> names;
ListDLLFunctions("KERNEL32.DLL", names);
return 0;
}
L'OP demande une solution basée sur dbghelp, qui inclurait des symboles non exportés ... – wj32
Si vous êtes satisfait avec d'autres outils, il existe un certain nombre qui énumère les fonctions exportées. l'un est dumpbin
de Microsoft. utilisez l'option /exports
.
acclamations & HTH.,
La requête concerne l'utilisation de dbgHelp Apis. – Chubsdad
double possible de [API Win32 pour énumérer les fonctions d'exportation dll?] (Http://stackoverflow.com/questions/1128150/win32-api-to-enumerate-dll-export-functions) – icecrime
Un débogueur doesn Peu importe si une fonction est exportée ou non. L'exemple de code est ici: http://msdn.microsoft.com/en-us/library/ms679318%28VS.85%29.aspx –
mais je regarde un cas dans lequel je n'ai pas les PDB. Est-ce que SymLoadModuleEx m'aidera ici? – Idov