diff options
author | van Hauser <vh@thc.org> | 2024-07-14 11:23:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-14 11:23:51 +0200 |
commit | 19ca7b3761f5abff8b72770d6bbfbde80ef5b985 (patch) | |
tree | 62e6316d91ea348228fe3471bfa59ee01e0e393e /frida_mode/addr/addr.c | |
parent | 53409530b369e560c7f6f37ead5a5db9e116efd0 (diff) | |
parent | 55a2362348cd467b65d6aea33e93ec44c6de1a38 (diff) | |
download | afl++-19ca7b3761f5abff8b72770d6bbfbde80ef5b985.tar.gz |
Merge pull request #2158 from AFLplusplus/dev
push to stable
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; } + |