Я пытаюсь получить имя функции по адресу.
Я использую VS Community 2019, и мой первый шаг - скопировать примеры Microsoft, которые вы можете найти по адресу:https://docs.microsoft.com/en-us/windows/desktop/debug/initializing-the-symbol-handler
https://docs.microsoft.com/en-us/windows/desktop/debug/retrieving-symbol-information-by-address
#include <stdio.h>
#include <windows.h>
#include <dbghelp.h>
#pragma comment(lib, "dbghelp")
int main() {
DWORD64 SOME_ADDRESS = (DWORD64) (main);
// https://docs.microsoft.com/en-us/windows/desktop/debug/initializing-the-symbol-handler
DWORD error;
HANDLE hProcess;
SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS);
hProcess = GetCurrentProcess();
if (!SymInitialize(hProcess, NULL, TRUE))
{
// SymInitialize failed
error = GetLastError();
printf("SymInitialize returned error : %d\n", error);
return FALSE;
}
// https://docs.microsoft.com/en-us/windows/desktop/debug/retrieving-symbol-information-by-address
DWORD64 dwDisplacement = 0;
DWORD64 dwAddress = SOME_ADDRESS;
char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(TCHAR)];
PSYMBOL_INFO pSymbol = (PSYMBOL_INFO)buffer;
pSymbol->SizeOfStruct = sizeof(SYMBOL_INFO);
pSymbol->MaxNameLen = MAX_SYM_NAME;
if (SymFromAddr(hProcess, dwAddress, &dwDisplacement, pSymbol))
{
// SymFromAddr returned success
}
else
{
// SymFromAddr failed
DWORD error = GetLastError();
printf("SymFromAddr returned error : %d\n", error);
}
}
Но этот код печатает всегда "SymFromAddr вернул ошибку: 487" ...Я думаю, что я делаю что-то не так.Вы можете помочь?
Спасибо,Alberto