aboutsummaryrefslogtreecommitdiff
path: root/frida_mode/addr
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2024-07-14 11:23:51 +0200
committerGitHub <noreply@github.com>2024-07-14 11:23:51 +0200
commit19ca7b3761f5abff8b72770d6bbfbde80ef5b985 (patch)
tree62e6316d91ea348228fe3471bfa59ee01e0e393e /frida_mode/addr
parent53409530b369e560c7f6f37ead5a5db9e116efd0 (diff)
parent55a2362348cd467b65d6aea33e93ec44c6de1a38 (diff)
downloadafl++-19ca7b3761f5abff8b72770d6bbfbde80ef5b985.tar.gz
Merge pull request #2158 from AFLplusplus/dev
push to stable
Diffstat (limited to 'frida_mode/addr')
-rw-r--r--frida_mode/addr/addr.c43
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;
}
+