MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / GetSymbol

Function GetSymbol

PdbParser/main.cpp:92–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

90}
91
92BOOLEAN
93WINAPI
94GetSymbol(
95 IN ULONG64 ImageBase
96)
97{
98 PIMAGE_DEBUG_DIRECTORY DebugDirectory = NULL;
99 ULONG DirectorySize = 0;
100 PDBINFO PDB = { 0 };
101
102 CHAR PDBGUID[64] = { 0 };
103 CHAR SymURL[128] = { 0 };
104 CHAR SymPath[128] = { 0 };
105
106 FILE* File;
107
108 if (ImageBase)
109 {
110 DebugDirectory = (PIMAGE_DEBUG_DIRECTORY)ImageDirectoryEntryToData(
111 (PVOID)ImageBase,
112 FALSE,
113 IMAGE_DIRECTORY_ENTRY_DEBUG,
114 &DirectorySize
115 );
116
117 RtlCopyMemory(&PDB, (PCHAR)ImageBase + DebugDirectory->PointerToRawData, sizeof(PDB));
118
119 sprintf_s(
120 PDBGUID, 64, "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%X",
121 PDB.UID.Data1, PDB.UID.Data2, PDB.UID.Data3,
122 PDB.UID.Data4[0], PDB.UID.Data4[1], PDB.UID.Data4[2],
123 PDB.UID.Data4[3], PDB.UID.Data4[4], PDB.UID.Data4[5],
124 PDB.UID.Data4[6], PDB.UID.Data4[7], PDB.Age
125 );
126
127 sprintf_s(
128 SymURL, 128, "%s/%s/%s/%s",
129 "/download/symbols",
130 PDB.PDBFileName, PDBGUID, PDB.PDBFileName
131 );
132
133 sprintf_s(
134 SymPath, 128, "%s%s",
135 "D:\\", PDB.PDBFileName
136 );
137
138 /*File = fopen(SymPath, "wb+");
139 if (File) {
140 fclose(File);
141 return TRUE;
142 }*/
143 if (DownloadSymbol(SymURL, SymPath)) {
144 return TRUE;
145 }
146 }
147 return FALSE;
148}
149

Callers 1

mainFunction · 0.85

Calls 1

DownloadSymbolFunction · 0.85

Tested by

no test coverage detected