diff options
Diffstat (limited to 'frida_mode/addr/addr.c')
-rw-r--r-- | frida_mode/addr/addr.c | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/frida_mode/addr/addr.c b/frida_mode/addr/addr.c index 371f69d4..69a04b17 100644 --- a/frida_mode/addr/addr.c +++ b/frida_mode/addr/addr.c @@ -6,34 +6,39 @@ #define UNUSED_PARAMETER(x) (void)(x) -int phdr_callback(struct dl_phdr_info *info, size_t size, void *data) -{ - UNUSED_PARAMETER (size); +int phdr_callback(struct dl_phdr_info *info, size_t size, void *data) { - ElfW(Addr) * base = data; + UNUSED_PARAMETER(size); + + ElfW(Addr) *base = data; + + if (info->dlpi_name[0] == 0) { *base = info->dlpi_addr; } + return 0; - if (info->dlpi_name[0] == 0) { *base = info->dlpi_addr; } - return 0; } -int main (int argc, char** argv, char** envp) { - UNUSED_PARAMETER (argc); +int main(int argc, char **argv, char **envp) { + + UNUSED_PARAMETER(argc); - ElfW(Addr) base = 0; + ElfW(Addr) base = 0; - int persona = personality(ADDR_NO_RANDOMIZE); - if (persona == -1) { + int persona = personality(ADDR_NO_RANDOMIZE); + if (persona == -1) { - printf("Failed to set ADDR_NO_RANDOMIZE: %d", errno); - return 1; - } + printf("Failed to set ADDR_NO_RANDOMIZE: %d", errno); + return 1; - if ((persona & ADDR_NO_RANDOMIZE) == 0) { execvpe(argv[0], argv, envp); } + } - dl_iterate_phdr(phdr_callback, &base); + if ((persona & ADDR_NO_RANDOMIZE) == 0) { execvpe(argv[0], argv, envp); } - printf("%p\n", (void *)base); - if (base == 0) { return 1; } + dl_iterate_phdr(phdr_callback, &base); + + printf("%p\n", (void *)base); + if (base == 0) { return 1; } + + return 0; - return 0; } + |