From a161aac7c1eb8b689f4afc818b25072796e62746 Mon Sep 17 00:00:00 2001 From: Giovanni Di Santi Date: Sat, 29 Jun 2024 22:05:22 +0200 Subject: ijon set: init --- frida_mode/src/instrument/instrument.c | 6 ++++++ frida_mode/src/js/api.js | 7 +++++++ frida_mode/src/js/js_api.c | 6 ++++++ 3 files changed, 19 insertions(+) (limited to 'frida_mode/src') diff --git a/frida_mode/src/instrument/instrument.c b/frida_mode/src/instrument/instrument.c index db73d845..cbb8afd9 100644 --- a/frida_mode/src/instrument/instrument.c +++ b/frida_mode/src/instrument/instrument.c @@ -449,3 +449,9 @@ void instrument_regs_format(int fd, char *format, ...) { } +void ijon_set(uint32_t edge) { + + __afl_ijon_set(edge); + +} + diff --git a/frida_mode/src/js/api.js b/frida_mode/src/js/api.js index a65d32df..9e2b15c5 100644 --- a/frida_mode/src/js/api.js +++ b/frida_mode/src/js/api.js @@ -326,6 +326,12 @@ class Afl { static jsApiGetSymbol(name) { return Afl.module.getExportByName(name); } + + static IJON = class { + static set(addr, val) { + Afl.jsApiIjonSet((addr ^ val) & 0xffffffff); + } + } } /** * Field containing the `Module` object for `afl-frida-trace.so` (the FRIDA mode @@ -377,3 +383,4 @@ Afl.jsApiSetVerbose = Afl.jsApiGetFunction("js_api_set_verbose", "void", []); Afl.jsApiWrite = new NativeFunction( /* tslint:disable-next-line:no-null-keyword */ Module.getExportByName(null, "write"), "int", ["int", "pointer", "int"]); +Afl.jsApiIjonSet = Afl.jsApiGetFunction("js_api_ijon_set", "void", ["uint32"]); diff --git a/frida_mode/src/js/js_api.c b/frida_mode/src/js/js_api.c index 288aec95..274cd1bc 100644 --- a/frida_mode/src/js/js_api.c +++ b/frida_mode/src/js/js_api.c @@ -316,3 +316,9 @@ __attribute__((visibility("default"))) void js_api_set_verbose(void) { } +__attribute__((visibility("default"))) void js_api_ijon_set(uint32_t edge) { + + ijon_set(edge); + +} + -- cgit v1.2.3 From 8fbeeb143989f4ebbcc238a96305e4c534e074c7 Mon Sep 17 00:00:00 2001 From: Giovanni Di Santi Date: Sun, 30 Jun 2024 15:50:37 +0200 Subject: ijon set: discard source code instrumentation --- frida_mode/src/instrument/instrument.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'frida_mode/src') diff --git a/frida_mode/src/instrument/instrument.c b/frida_mode/src/instrument/instrument.c index cbb8afd9..e0495cdf 100644 --- a/frida_mode/src/instrument/instrument.c +++ b/frida_mode/src/instrument/instrument.c @@ -451,7 +451,7 @@ void instrument_regs_format(int fd, char *format, ...) { void ijon_set(uint32_t edge) { - __afl_ijon_set(edge); + __afl_area_ptr[edge % __afl_map_size] |= 1; } -- cgit v1.2.3 From 77bad3ad239c557d17ab2788837d2a7aa854b235 Mon Sep 17 00:00:00 2001 From: Giovanni Di Santi Date: Wed, 10 Jul 2024 10:16:14 +0200 Subject: ijon set: use __afl_coverage_interesting --- frida_mode/src/instrument/instrument.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'frida_mode/src') diff --git a/frida_mode/src/instrument/instrument.c b/frida_mode/src/instrument/instrument.c index e0495cdf..d30e21ec 100644 --- a/frida_mode/src/instrument/instrument.c +++ b/frida_mode/src/instrument/instrument.c @@ -451,7 +451,7 @@ void instrument_regs_format(int fd, char *format, ...) { void ijon_set(uint32_t edge) { - __afl_area_ptr[edge % __afl_map_size] |= 1; + __afl_coverage_interesting(1, edge); } -- cgit v1.2.3