DBG: use PointerToRawData in debug directory if no RVA is present
This commit is contained in:
parent
5b43c22a64
commit
f49835b3bf
|
@ -463,7 +463,11 @@ static void ReadDebugDirectory(MODINFO & Info, ULONG_PTR FileMapVA)
|
|||
const auto supported = [&Info](PIMAGE_DEBUG_DIRECTORY entry)
|
||||
{
|
||||
// Check for valid RVA
|
||||
const auto offset = ModRvaToOffset(0, Info.headers, entry->AddressOfRawData);
|
||||
ULONG_PTR offset = 0;
|
||||
if(entry->AddressOfRawData)
|
||||
offset = (ULONG_PTR)ModRvaToOffset(0, Info.headers, entry->AddressOfRawData);
|
||||
else if(entry->PointerToRawData)
|
||||
offset = entry->PointerToRawData;
|
||||
if(!offset)
|
||||
return false;
|
||||
|
||||
|
@ -556,7 +560,12 @@ static void ReadDebugDirectory(MODINFO & Info, ULONG_PTR FileMapVA)
|
|||
}
|
||||
|
||||
// At this point we know the entry is a valid CV one
|
||||
auto cvData = (unsigned char*)(FileMapVA + ModRvaToOffset(0, Info.headers, entry->AddressOfRawData));
|
||||
ULONG_PTR offset = 0;
|
||||
if(entry->AddressOfRawData)
|
||||
offset = (ULONG_PTR)ModRvaToOffset(0, Info.headers, entry->AddressOfRawData);
|
||||
else if(entry->PointerToRawData)
|
||||
offset = entry->PointerToRawData;
|
||||
auto cvData = (unsigned char*)(FileMapVA + offset);
|
||||
auto signature = *(DWORD*)cvData;
|
||||
if(signature == '01BN')
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue