From a1953e55a742e25c37049a1dd3ddba9ed0aab69b Mon Sep 17 00:00:00 2001 From: Stefano Moioli Date: Sun, 7 Apr 2024 03:38:35 +0200 Subject: [PATCH] add missing handle in elf_handles_t the second entry seems to be reused for multiple operations --- xzre.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/xzre.h b/xzre.h index aa4e655..8ac6a0f 100644 --- a/xzre.h +++ b/xzre.h @@ -81,8 +81,9 @@ typedef enum { typedef enum { X_ELF_MAIN = 0, - X_ELF_LIBCRYPTO = 1, - X_ELF_LIBC = 2 + X_ELF_TMP = 1, + X_ELF_LIBC = 2, + X_ELF_LIBCRYPTO = 3 } ElfId; #define assert_offset(t, f, o) static_assert(offsetof(t, f) == o) @@ -526,13 +527,18 @@ static_assert(sizeof(global_context_t) == 0x168); */ typedef struct __attribute__((packed)) { elf_info_t *main; - elf_info_t *libcrypto; + /** + * @brief used for multiple ELFs + */ + elf_info_t *tmp; elf_info_t *libc; + elf_info_t *libcrypto; } elf_handles_t; assert_offset(elf_handles_t, main, 0x0); -assert_offset(elf_handles_t, libcrypto, 0x8); +assert_offset(elf_handles_t, tmp, 0x8); assert_offset(elf_handles_t, libc, 0x10); +assert_offset(elf_handles_t, libcrypto, 0x18); typedef struct __attribute__((packed)) { elf_handles_t *handles; @@ -567,7 +573,6 @@ typedef struct __attribute__((packed)) backdoor_data { PADDING(0x30); elf_handles_t elf_handles; - PADDING(sizeof(elf_info_t *)); /** * @brief points to @ref libcrypto_info */