aboutsummaryrefslogtreecommitdiff
path: root/frida_mode/src/js
diff options
context:
space:
mode:
authorllzmb <46303940+llzmb@users.noreply.github.com>2021-08-31 21:19:04 +0200
committerGitHub <noreply@github.com>2021-08-31 21:19:04 +0200
commit9747ac42213126ec99fe8ea47f1320be54135bd1 (patch)
tree677b0cf3143a1964134a67a1922b70dc20f6be19 /frida_mode/src/js
parentec4cae448b10acc0a8c84fc75f298bfaed88195a (diff)
parentfe5b2c355f097705bf0bd7b35b0484b16f87964f (diff)
downloadafl++-9747ac42213126ec99fe8ea47f1320be54135bd1.tar.gz
Merge branch 'dev' into docs_edit_readme_move_content_to_docs
Diffstat (limited to 'frida_mode/src/js')
-rw-r--r--frida_mode/src/js/api.js48
-rw-r--r--frida_mode/src/js/js_api.c44
2 files changed, 79 insertions, 13 deletions
diff --git a/frida_mode/src/js/api.js b/frida_mode/src/js/api.js
index b8f2d39a..40bb4a16 100644
--- a/frida_mode/src/js/api.js
+++ b/frida_mode/src/js/api.js
@@ -86,6 +86,14 @@ class Afl {
Afl.jsApiAflSharedMemFuzzing.writeInt(1);
}
/**
+ * See `AFL_FRIDA_INST_COVERAGE_FILE`. This function takes a single `string`
+ * as an argument.
+ */
+ static setInstrumentCoverageFile(file) {
+ const buf = Memory.allocUtf8String(file);
+ Afl.jsApiSetInstrumentCoverageFile(buf);
+ }
+ /**
* See `AFL_FRIDA_INST_DEBUG_FILE`. This function takes a single `string` as
* an argument.
*/
@@ -130,6 +138,14 @@ class Afl {
Afl.jsApiSetInstrumentTraceUnique();
}
/**
+ * See `AFL_FRIDA_INST_UNSTABLE_COVERAGE_FILE`. This function takes a single
+ * `string` as an argument.
+ */
+ static setInstrumentUnstableCoverageFile(file) {
+ const buf = Memory.allocUtf8String(file);
+ Afl.jsApiSetInstrumentUnstableCoverageFile(buf);
+ }
+ /**
* This is equivalent to setting `AFL_FRIDA_PERSISTENT_ADDR`, again a
* `NativePointer` should be provided as it's argument.
*/
@@ -164,11 +180,25 @@ class Afl {
Afl.jsApiSetPersistentReturn(address);
}
/**
+ * See `AFL_FRIDA_INST_NO_PREFETCH_BACKPATCH`.
+ */
+ static setPrefetchBackpatchDisable() {
+ Afl.jsApiSetPrefetchBackpatchDisable();
+ }
+ /**
* See `AFL_FRIDA_INST_NO_PREFETCH`.
*/
static setPrefetchDisable() {
Afl.jsApiSetPrefetchDisable();
}
+ /**
+ * See `AFL_FRIDA_SECCOMP_FILE`. This function takes a single `string` as
+ * an argument.
+ */
+ static setSeccompFile(file) {
+ const buf = Memory.allocUtf8String(file);
+ Afl.jsApiSetSeccompFile(buf);
+ }
/*
* Set a function to be called for each instruction which is instrumented
* by AFL FRIDA mode.
@@ -177,6 +207,12 @@ class Afl {
Afl.jsApiSetStalkerCallback(callback);
}
/**
+ * See `AFL_FRIDA_STALKER_IC_ENTRIES`.
+ */
+ static setStalkerIcEntries(val) {
+ Afl.jsApiSetStalkerIcEntries(val);
+ }
+ /**
* See `AFL_FRIDA_STATS_FILE`. This function takes a single `string` as
* an argument.
*/
@@ -192,12 +228,6 @@ class Afl {
Afl.jsApiSetStatsInterval(interval);
}
/**
- * See `AFL_FRIDA_STATS_TRANSITIONS`
- */
- static setStatsTransitions() {
- Afl.jsApiSetStatsTransitions();
- }
- /**
* See `AFL_FRIDA_OUTPUT_STDERR`. This function takes a single `string` as
* an argument.
*/
@@ -233,6 +263,7 @@ Afl.jsApiDone = Afl.jsApiGetFunction("js_api_done", "void", []);
Afl.jsApiError = Afl.jsApiGetFunction("js_api_error", "void", ["pointer"]);
Afl.jsApiSetDebugMaps = Afl.jsApiGetFunction("js_api_set_debug_maps", "void", []);
Afl.jsApiSetEntryPoint = Afl.jsApiGetFunction("js_api_set_entrypoint", "void", ["pointer"]);
+Afl.jsApiSetInstrumentCoverageFile = Afl.jsApiGetFunction("js_api_set_instrument_coverage_file", "void", ["pointer"]);
Afl.jsApiSetInstrumentDebugFile = Afl.jsApiGetFunction("js_api_set_instrument_debug_file", "void", ["pointer"]);
Afl.jsApiSetInstrumentJit = Afl.jsApiGetFunction("js_api_set_instrument_jit", "void", []);
Afl.jsApiSetInstrumentLibraries = Afl.jsApiGetFunction("js_api_set_instrument_libraries", "void", []);
@@ -240,16 +271,19 @@ Afl.jsApiSetInstrumentNoOptimize = Afl.jsApiGetFunction("js_api_set_instrument_n
Afl.jsApiSetInstrumentSeed = Afl.jsApiGetFunction("js_api_set_instrument_seed", "void", ["uint64"]);
Afl.jsApiSetInstrumentTrace = Afl.jsApiGetFunction("js_api_set_instrument_trace", "void", []);
Afl.jsApiSetInstrumentTraceUnique = Afl.jsApiGetFunction("js_api_set_instrument_trace_unique", "void", []);
+Afl.jsApiSetInstrumentUnstableCoverageFile = Afl.jsApiGetFunction("js_api_set_instrument_unstable_coverage_file", "void", ["pointer"]);
Afl.jsApiSetPersistentAddress = Afl.jsApiGetFunction("js_api_set_persistent_address", "void", ["pointer"]);
Afl.jsApiSetPersistentCount = Afl.jsApiGetFunction("js_api_set_persistent_count", "void", ["uint64"]);
Afl.jsApiSetPersistentDebug = Afl.jsApiGetFunction("js_api_set_persistent_debug", "void", []);
Afl.jsApiSetPersistentHook = Afl.jsApiGetFunction("js_api_set_persistent_hook", "void", ["pointer"]);
Afl.jsApiSetPersistentReturn = Afl.jsApiGetFunction("js_api_set_persistent_return", "void", ["pointer"]);
+Afl.jsApiSetPrefetchBackpatchDisable = Afl.jsApiGetFunction("js_api_set_prefetch_backpatch_disable", "void", []);
Afl.jsApiSetPrefetchDisable = Afl.jsApiGetFunction("js_api_set_prefetch_disable", "void", []);
+Afl.jsApiSetSeccompFile = Afl.jsApiGetFunction("js_api_set_seccomp_file", "void", ["pointer"]);
Afl.jsApiSetStalkerCallback = Afl.jsApiGetFunction("js_api_set_stalker_callback", "void", ["pointer"]);
+Afl.jsApiSetStalkerIcEntries = Afl.jsApiGetFunction("js_api_set_stalker_ic_entries", "void", ["uint32"]);
Afl.jsApiSetStatsFile = Afl.jsApiGetFunction("js_api_set_stats_file", "void", ["pointer"]);
Afl.jsApiSetStatsInterval = Afl.jsApiGetFunction("js_api_set_stats_interval", "void", ["uint64"]);
-Afl.jsApiSetStatsTransitions = Afl.jsApiGetFunction("js_api_set_stats_transitions", "void", []);
Afl.jsApiSetStdErr = Afl.jsApiGetFunction("js_api_set_stderr", "void", ["pointer"]);
Afl.jsApiSetStdOut = Afl.jsApiGetFunction("js_api_set_stdout", "void", ["pointer"]);
Afl.jsApiWrite = new NativeFunction(
diff --git a/frida_mode/src/js/js_api.c b/frida_mode/src/js/js_api.c
index 930a6dc0..9dba79aa 100644
--- a/frida_mode/src/js/js_api.c
+++ b/frida_mode/src/js/js_api.c
@@ -7,8 +7,11 @@
#include "persistent.h"
#include "prefetch.h"
#include "ranges.h"
+#include "seccomp.h"
+#include "stalker.h"
#include "stats.h"
#include "util.h"
+
__attribute__((visibility("default"))) void js_api_done() {
js_done = TRUE;
@@ -107,6 +110,13 @@ __attribute__((visibility("default"))) void js_api_set_instrument_libraries() {
}
+__attribute__((visibility("default"))) void js_api_set_instrument_coverage_file(
+ char *path) {
+
+ instrument_coverage_filename = g_strdup(path);
+
+}
+
__attribute__((visibility("default"))) void js_api_set_instrument_debug_file(
char *path) {
@@ -120,6 +130,13 @@ __attribute__((visibility("default"))) void js_api_set_prefetch_disable(void) {
}
+__attribute__((visibility("default"))) void
+js_api_set_prefetch_backpatch_disable(void) {
+
+ prefetch_backpatch = FALSE;
+
+}
+
__attribute__((visibility("default"))) void js_api_set_instrument_no_optimize(
void) {
@@ -148,6 +165,20 @@ __attribute__((visibility("default"))) void js_api_set_instrument_trace_unique(
}
+__attribute__((visibility("default"))) void
+js_api_set_instrument_unstable_coverage_file(char *path) {
+
+ instrument_coverage_unstable_filename = g_strdup(path);
+
+}
+
+__attribute__((visibility("default"))) void js_api_set_seccomp_file(
+ char *file) {
+
+ seccomp_filename = g_strdup(file);
+
+}
+
__attribute__((visibility("default"))) void js_api_set_stdout(char *file) {
output_stdout = g_strdup(file);
@@ -173,12 +204,6 @@ __attribute__((visibility("default"))) void js_api_set_stats_interval(
}
-__attribute__((visibility("default"))) void js_api_set_stats_transitions() {
-
- stats_transitions = TRUE;
-
-}
-
__attribute__((visibility("default"))) void js_api_set_persistent_hook(
void *address) {
@@ -199,3 +224,10 @@ __attribute__((visibility("default"))) void js_api_set_stalker_callback(
}
+__attribute__((visibility("default"))) void js_api_set_stalker_ic_entries(
+ guint val) {
+
+ stalker_ic_entries = val;
+
+}
+