diff options
author | van Hauser <vh@thc.org> | 2020-07-14 23:26:11 +0200 |
---|---|---|
committer | van Hauser <vh@thc.org> | 2020-07-14 23:26:11 +0200 |
commit | 383b280531a92a8b81d112a9acb4e44c08987be0 (patch) | |
tree | 1d23c9fb0762e62db06a5a3f856387f255f700b5 /examples/afl_frida/afl-frida.h | |
parent | 95276f7da6ed9dd72556236f505a8997bee23387 (diff) | |
download | afl++-383b280531a92a8b81d112a9acb4e44c08987be0.tar.gz |
added frida gum extension
Diffstat (limited to 'examples/afl_frida/afl-frida.h')
-rw-r--r-- | examples/afl_frida/afl-frida.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/afl_frida/afl-frida.h b/examples/afl_frida/afl-frida.h new file mode 100644 index 00000000..efa3440f --- /dev/null +++ b/examples/afl_frida/afl-frida.h @@ -0,0 +1,53 @@ +extern int is_persistent; + +G_BEGIN_DECLS + +#define GUM_TYPE_FAKE_EVENT_SINK (gum_fake_event_sink_get_type()) + +G_DECLARE_FINAL_TYPE(GumFakeEventSink, gum_fake_event_sink, GUM, + FAKE_EVENT_SINK, GObject) + +struct _GumFakeEventSink { + + GObject parent; + GumEventType mask; + +}; + +GumEventSink *gum_fake_event_sink_new(void); +void gum_fake_event_sink_reset(GumFakeEventSink *self); + +G_END_DECLS + +typedef struct { + + GumAddress base_address; + guint64 code_start, code_end; + +} range_t; + +void instr_basic_block(GumStalkerIterator *iterator, GumStalkerOutput *output, + gpointer user_data); +#pragma once + +void afl_setup(void); +void afl_start_forkserver(void); +int __afl_persistent_loop(unsigned int max_cnt); + +inline static inline void afl_maybe_log(guint64 current_pc) { + + extern unsigned int afl_instr_rms; + extern uint8_t * afl_area_ptr; + + static __thread guint64 previous_pc; + + current_pc = (current_pc >> 4) ^ (current_pc << 8); + current_pc &= MAP_SIZE - 1; + + if (current_pc >= afl_instr_rms) return; + + afl_area_ptr[current_pc ^ previous_pc]++; + previous_pc = current_pc >> 1; + +} + |