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) {