aboutsummaryrefslogtreecommitdiff
path: root/frida_mode/src/js
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2022-03-08 11:44:15 +0100
committerGitHub <noreply@github.com>2022-03-08 11:44:15 +0100
commit34d7a6357ed7bab5a934fdaf2622c72ad27c8f28 (patch)
tree2c88b9aaa9e42a51a52a69454717892c8f394d6c /frida_mode/src/js
parentae9897ff7b31b9135b85f78a9a0e4c036d8a0abd (diff)
parent852c036cae97113daac3ba5a791554bbbd5c8903 (diff)
downloadafl++-34d7a6357ed7bab5a934fdaf2622c72ad27c8f28.tar.gz
Merge pull request #1347 from WorksButNotTested/cache
Add global caching of block translation to instrumentation
Diffstat (limited to 'frida_mode/src/js')
-rw-r--r--frida_mode/src/js/api.js15
-rw-r--r--frida_mode/src/js/js_api.c13
2 files changed, 28 insertions, 0 deletions
diff --git a/frida_mode/src/js/api.js b/frida_mode/src/js/api.js
index 82b8e63d..c1c9d36f 100644
--- a/frida_mode/src/js/api.js
+++ b/frida_mode/src/js/api.js
@@ -69,6 +69,12 @@ class Afl {
Afl.jsApiSetBackpatchDisable();
}
/**
+ * See `AFL_FRIDA_INST_NO_CACHE`.
+ */
+ static setCacheDisable() {
+ Afl.jsApiSetCacheDisable();
+ }
+ /**
* See `AFL_FRIDA_DEBUG_MAPS`.
*/
static setDebugMaps() {
@@ -92,6 +98,13 @@ class Afl {
Afl.jsApiAflSharedMemFuzzing.writeInt(1);
}
/**
+ * See `AFL_FRIDA_INST_CACHE_SIZE`. This function takes a single `number`
+ * as an argument.
+ */
+ static setInstrumentCacheSize(size) {
+ Afl.jsApiSetInstrumentCacheSize(size);
+ }
+ /**
* See `AFL_FRIDA_INST_COVERAGE_FILE`. This function takes a single `string`
* as an argument.
*/
@@ -299,8 +312,10 @@ Afl.jsApiAflSharedMemFuzzing = Afl.jsApiGetSymbol("__afl_sharedmem_fuzzing");
Afl.jsApiDone = Afl.jsApiGetFunction("js_api_done", "void", []);
Afl.jsApiError = Afl.jsApiGetFunction("js_api_error", "void", ["pointer"]);
Afl.jsApiSetBackpatchDisable = Afl.jsApiGetFunction("js_api_set_backpatch_disable", "void", []);
+Afl.jsApiSetCacheDisable = Afl.jsApiGetFunction("js_api_set_cache_disable", "void", []);
Afl.jsApiSetDebugMaps = Afl.jsApiGetFunction("js_api_set_debug_maps", "void", []);
Afl.jsApiSetEntryPoint = Afl.jsApiGetFunction("js_api_set_entrypoint", "void", ["pointer"]);
+Afl.jsApiSetInstrumentCacheSize = Afl.jsApiGetFunction("js_api_set_instrument_cache_size", "void", ["size_t"]);
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.jsApiSetInstrumentInstructions = Afl.jsApiGetFunction("js_api_set_instrument_instructions", "void", []);
diff --git a/frida_mode/src/js/js_api.c b/frida_mode/src/js/js_api.c
index 89df7803..7cc8ffc7 100644
--- a/frida_mode/src/js/js_api.c
+++ b/frida_mode/src/js/js_api.c
@@ -262,6 +262,19 @@ __attribute__((visibility("default"))) void js_api_set_stalker_adjacent_blocks(
}
+__attribute__((visibility("default"))) void js_api_set_cache_disable(void) {
+
+ instrument_cache_enabled = FALSE;
+
+}
+
+__attribute__((visibility("default"))) void js_api_set_instrument_cache_size(
+ gsize size) {
+
+ instrument_cache_size = size;
+
+}
+
__attribute__((visibility("default"))) void js_api_set_js_main_hook(
const js_main_hook_t hook) {