From aa65a781edae4858eb9c3849cc3849b6fef56dbc Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Thu, 7 Aug 2025 16:36:27 -0700 Subject: [PATCH] XenonUtils: Fix image size for basic compressed XEX and expose resource info. --- XenonUtils/image.h | 3 +++ XenonUtils/xex.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/XenonUtils/image.h b/XenonUtils/image.h index be61119..df5d2f3 100644 --- a/XenonUtils/image.h +++ b/XenonUtils/image.h @@ -11,6 +11,9 @@ struct Image size_t base{}; uint32_t size{}; + uint32_t resource_offset{}; + uint32_t resource_size{}; + size_t entry_point{}; std::set sections{}; SymbolTable symbols{}; diff --git a/XenonUtils/xex.cpp b/XenonUtils/xex.cpp index 4e79042..4e0b28b 100644 --- a/XenonUtils/xex.cpp +++ b/XenonUtils/xex.cpp @@ -258,7 +258,7 @@ Image Xex2LoadImage(const uint8_t* data, size_t dataSize) } image.data = std::move(result); - image.size = security->imageSize; + image.size = imageSize; // Map image const auto* dosHeader = reinterpret_cast(image.data.get()); @@ -270,6 +270,13 @@ Image Xex2LoadImage(const uint8_t* data, size_t dataSize) { image.base = *reinterpret_cast*>(xex2BaseAddressPtr); } + const void* xex2ResourceInfoPtr = getOptHeaderPtr(data, XEX_HEADER_RESOURCE_INFO); + if (xex2ResourceInfoPtr != nullptr) + { + const Xex2ResourceInfo* resourceInfo = reinterpret_cast(xex2ResourceInfoPtr); + image.resource_offset = resourceInfo->offset; + image.resource_size = resourceInfo->sizeOfData; + } const void* xex2EntryPointPtr = getOptHeaderPtr(data, XEX_HEADER_ENTRY_POINT); if (xex2EntryPointPtr != nullptr) {