Я ищу способ (на C++/Windows), чтобы отобразить экспортированные функции в DLL (и, возможно, даже методы, которые не экспортируются) с помощью dbgHelp.
Кто-нибудь знает, какой метод может это сделать?
thanks :)Список экспортируемых функций DLL
6
A
ответ
6
Существует код here, чтобы сделать это. Я немного почистил его, и он работал в приведенном ниже сценарии, получив имена функций от 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;
}
9
Если вы довольны другими инструментами, то есть число, отображающее экспортируемые функции. один из них - dumpbin
. используйте опцию /exports
.
веселит & НТН.,
возможно дубликат [Win32 API для перечисления DLL функции экспорта?] (Http://stackoverflow.com/questions/1128150/win32-api-to-enumerate-dll-export-functions) – icecrime 2010-12-04 10:50:28
отладчик Безразлично Не заботьтесь о том, экспортирована ли функция или нет. Пример кода находится здесь: http://msdn.microsoft.com/en-us/library/ms679318%28VS.85%29.aspx – 2010-12-04 14:36:01
, но я смотрю на случай, когда у меня нет PDB. Может ли SymLoadModuleEx помочь мне здесь? – Idov 2010-12-04 15:44:43