From f21224bffb0bbfed644145e8ab7983471ccdc9e9 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 4 Mar 2021 21:18:44 +0100 Subject: Fix injection of PLT Resolver --- src/elfs/elfloader.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 6531a222..8ebc51f1 100755 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -645,13 +645,13 @@ int RelocateElfPlt(lib_t *maplib, lib_t *local_maplib, elfheader_t* head) pltResolver = AddBridge(my_context->system, vFE, PltResolver, 0); } if(head->pltgot) { - *(uintptr_t*)(head->pltgot+head->delta+8) = pltResolver; - *(uintptr_t*)(head->pltgot+head->delta+4) = (uintptr_t)head; - printf_log(LOG_DEBUG, "PLT Resolver injected in plt.got at %p\n", (void*)(head->pltgot+head->delta+8)); + *(uintptr_t*)(head->pltgot+head->delta+16) = pltResolver; + *(uintptr_t*)(head->pltgot+head->delta+8) = (uintptr_t)head; + printf_log(LOG_DEBUG, "PLT Resolver injected in plt.got at %p\n", (void*)(head->pltgot+head->delta+16)); } else if(head->got) { - *(uintptr_t*)(head->got+head->delta+8) = pltResolver; - *(uintptr_t*)(head->got+head->delta+4) = (uintptr_t)head; - printf_log(LOG_DEBUG, "PLT Resolver injected in got at %p\n", (void*)(head->got+head->delta+8)); + *(uintptr_t*)(head->got+head->delta+16) = pltResolver; + *(uintptr_t*)(head->got+head->delta+8) = (uintptr_t)head; + printf_log(LOG_DEBUG, "PLT Resolver injected in got at %p\n", (void*)(head->got+head->delta+16)); } } -- cgit 1.4.1