53 std::string
funcNameFromAddr(IN
const ULONG_PTR addr, OUT OPTIONAL
size_t* displacement =
nullptr)
58 CHAR buffer[
sizeof(SYMBOL_INFO) + MAX_SYM_NAME] = { 0 };
59 PSYMBOL_INFO pSymbol = (PSYMBOL_INFO)buffer;
60 pSymbol->SizeOfStruct =
sizeof(SYMBOL_INFO);
61 pSymbol->MaxNameLen = MAX_SYM_NAME;
63 DWORD64 Displacement = 0;
64 if (!SymFromAddr(
hProcess, addr, &Displacement, pSymbol)) {
68 (*displacement) =
static_cast<size_t>(Displacement);
70 std::string funcName = pSymbol->Name;
78 CHAR buffer[
sizeof(SYMBOL_INFO) + MAX_SYM_NAME] = { 0 };
79 PSYMBOL_INFO pSymbol = (PSYMBOL_INFO)buffer;
80 pSymbol->SizeOfStruct =
sizeof(SYMBOL_INFO);
81 pSymbol->MaxNameLen = MAX_SYM_NAME;
83 DWORD64 Displacement = 0;
84 BOOLEAN result = SymFromAddr(
hProcess, addr, &Displacement, pSymbol);
85 std::cout << std::dec <<
"[" << GetProcessId(
hProcess) <<
"] " << std::hex << addr;
87 std::cout <<
" Sym: " << pSymbol->ModBase <<
" : " << pSymbol->Name <<
" disp: " << Displacement
88 <<
" Flags: " << pSymbol->Flags <<
" Tag: " << pSymbol->Tag << std::endl;
89 if (pSymbol->Flags == SYMFLAG_CLR_TOKEN) std::cout <<
" CLR token!\n";
92 std::cout <<
" UNK \n";