about summary refs log tree commit diff
path: root/frida_mode/test/js/fuzz.js
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-11-19 11:20:23 +0100
committerGitHub <noreply@github.com>2021-11-19 11:20:23 +0100
commit9283967a6e1b2c2b20c4b6810e58bf7b13c9645a (patch)
tree8b978be289cdadeb9ac0f2e68c148ed73e9d170c /frida_mode/test/js/fuzz.js
parentb18b8f553fed1c6d62f3e9348573d46348d0857c (diff)
parentb0f7691c2986eb3bcfc5a7c42fc4a4f022dfe961 (diff)
downloadafl++-9283967a6e1b2c2b20c4b6810e58bf7b13c9645a.tar.gz
Merge pull request #1167 from WorksButNotTested/js
Js
Diffstat (limited to 'frida_mode/test/js/fuzz.js')
-rw-r--r--frida_mode/test/js/fuzz.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/frida_mode/test/js/fuzz.js b/frida_mode/test/js/fuzz.js
new file mode 100644
index 00000000..24eca2b6
--- /dev/null
+++ b/frida_mode/test/js/fuzz.js
@@ -0,0 +1,41 @@
+Afl.print('******************');
+Afl.print('* AFL FRIDA MODE *');
+Afl.print('******************');
+Afl.print('');
+
+Afl.print(`PID: ${Process.id}`);
+
+const name = Process.enumerateModules()[0].name;
+Afl.print(`Name: ${name}`);
+
+new ModuleMap().values().forEach(m => {
+    Afl.print(`${m.base}-${m.base.add(m.size)} ${m.name}`);
+});
+
+const LLVMFuzzerTestOneInput = DebugSymbol.fromName('LLVMFuzzerTestOneInput').address;
+Afl.print(`LLVMFuzzerTestOneInput: ${LLVMFuzzerTestOneInput}`);
+
+const cm = new CModule(`
+
+    extern unsigned char * __afl_fuzz_ptr;
+    extern unsigned int * __afl_fuzz_len;
+    extern void LLVMFuzzerTestOneInput(char *buf, int len);
+
+    void My_LLVMFuzzerTestOneInput(char *buf, int len) {
+
+      LLVMFuzzerTestOneInput(__afl_fuzz_ptr, *__afl_fuzz_len);
+
+    }
+    `,
+    {
+        LLVMFuzzerTestOneInput: LLVMFuzzerTestOneInput,
+        __afl_fuzz_ptr: Afl.getAflFuzzPtr(),
+        __afl_fuzz_len: Afl.getAflFuzzLen()
+    });
+
+Afl.setEntryPoint(cm.My_LLVMFuzzerTestOneInput);
+Afl.setPersistentAddress(cm.My_LLVMFuzzerTestOneInput);
+Afl.setInMemoryFuzzing();
+Interceptor.replace(LLVMFuzzerTestOneInput, cm.My_LLVMFuzzerTestOneInput);
+Afl.print("done");
+Afl.done();