From 255116a58781a110720d1abf8a0d35d1e4c65b09 Mon Sep 17 00:00:00 2001 From: otakuxtom Date: Sun, 17 Nov 2024 21:00:43 +0800 Subject: [PATCH] patterns/pe: Fix error when ordinalTableRVA is zero (#315) ordinalTableRVA is not always has value. it might be zero. Whien this happened, it will failed. Signed-off-by: Chunhao Hung Co-authored-by: Chunhao Hung --- patterns/pe.hexpat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/patterns/pe.hexpat b/patterns/pe.hexpat index d9510ea..192a701 100644 --- a/patterns/pe.hexpat +++ b/patterns/pe.hexpat @@ -393,7 +393,9 @@ struct ExportsTable { ExportDirectoryTable directoryTable; ExportAddress exportAddressTable[directoryTable.addressesAmount] @ directoryTable.addressTableRVA - relativeVirtualDifference(); ExportNamePointer exportNamePointerTable[directoryTable.namePointersAmount] @ directoryTable.namePointerTableRVA - relativeVirtualDifference(); - u16 exportOrdinalTable[directoryTable.namePointersAmount] @ directoryTable.ordinalTableRVA - relativeVirtualDifference(); + if (directoryTable.ordinalTableRVA > relativeVirtualDifference()) { + u16 exportOrdinalTable[directoryTable.namePointersAmount] @ directoryTable.ordinalTableRVA - relativeVirtualDifference(); + } char imageName[] @ directoryTable.imageNameRVA - relativeVirtualDifference() [[format("formatNullTerminatedString")]]; $ = addressof(this)+coffHeader.optionalHeader.directories[0].size; };