aboutsummaryrefslogtreecommitdiff
path: root/frida_mode/src/asan
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-11-18 10:24:25 +0100
committerGitHub <noreply@github.com>2021-11-18 10:24:25 +0100
commite131d0fc55ddc34e2a59c13b3bb24f4bc559301b (patch)
tree97b9b112d4529a96d2fe46d3a7f481dee2a2b175 /frida_mode/src/asan
parent132630d48d0f9fe50e9388f941433c85636587da (diff)
parenta7b94338505d96a5d18b68916a4da6aa280e3f12 (diff)
downloadafl++-e131d0fc55ddc34e2a59c13b3bb24f4bc559301b.tar.gz
Merge pull request #1164 from WorksButNotTested/fix
Fix
Diffstat (limited to 'frida_mode/src/asan')
-rw-r--r--frida_mode/src/asan/asan.c32
-rw-r--r--frida_mode/src/asan/asan_arm64.c2
-rw-r--r--frida_mode/src/asan/asan_x64.c2
-rw-r--r--frida_mode/src/asan/asan_x86.c2
4 files changed, 38 insertions, 0 deletions
diff --git a/frida_mode/src/asan/asan.c b/frida_mode/src/asan/asan.c
index d649bd76..fae1d655 100644
--- a/frida_mode/src/asan/asan.c
+++ b/frida_mode/src/asan/asan.c
@@ -1,6 +1,7 @@
#include "frida-gumjs.h"
#include "asan.h"
+#include "ranges.h"
#include "util.h"
static gboolean asan_enabled = FALSE;
@@ -32,3 +33,34 @@ void asan_init(void) {
}
+gboolean asan_exclude_range(const GumRangeDetails *details,
+ gpointer user_data) {
+
+ UNUSED_PARAMETER(user_data);
+
+ FOKF("Exclude ASAN: 0x%016lx-0x%016lx", details->range->base_address,
+ details->range->base_address + details->range->size);
+
+ ranges_add_exclude((GumMemoryRange *)details->range);
+
+}
+
+static gboolean asan_exclude_module(const GumModuleDetails *details,
+ gpointer user_data) {
+
+ gchar * symbol_name = (gchar *)user_data;
+ GumAddress address;
+
+ address = gum_module_find_export_by_name(details->name, symbol_name);
+ if (address == 0) { return TRUE; }
+
+ gum_process_enumerate_ranges(GUM_PAGE_NO_ACCESS, asan_exclude_range, NULL);
+
+}
+
+void asan_exclude_module_by_symbol(gchar *symbol_name) {
+
+ gum_process_enumerate_modules(asan_exclude_module, "__asan_loadN");
+
+}
+
diff --git a/frida_mode/src/asan/asan_arm64.c b/frida_mode/src/asan/asan_arm64.c
index 88c76535..b2adfa52 100644
--- a/frida_mode/src/asan/asan_arm64.c
+++ b/frida_mode/src/asan/asan_arm64.c
@@ -88,6 +88,8 @@ void asan_arch_init(void) {
}
+ asan_exclude_module_by_symbol("__asan_loadN");
+
}
#endif
diff --git a/frida_mode/src/asan/asan_x64.c b/frida_mode/src/asan/asan_x64.c
index c7b70967..a287ea34 100644
--- a/frida_mode/src/asan/asan_x64.c
+++ b/frida_mode/src/asan/asan_x64.c
@@ -85,6 +85,8 @@ void asan_arch_init(void) {
}
+ asan_exclude_module_by_symbol("__asan_loadN");
+
}
#endif
diff --git a/frida_mode/src/asan/asan_x86.c b/frida_mode/src/asan/asan_x86.c
index afc89936..331d026b 100644
--- a/frida_mode/src/asan/asan_x86.c
+++ b/frida_mode/src/asan/asan_x86.c
@@ -85,6 +85,8 @@ void asan_arch_init(void) {
}
+ asan_exclude_module_by_symbol("__asan_loadN");
+
}
#endif