diff options
author | Your Name <you@example.com> | 2021-11-18 17:08:39 +0000 |
---|---|---|
committer | Your Name <you@example.com> | 2021-11-18 17:08:39 +0000 |
commit | af02fa1670db6d19feaf0a3e54d9d8013ad3312f (patch) | |
tree | 72cffafe0ca3340659f0321bad548e2d336e4a12 /frida_mode/test/js/main.js | |
parent | 3b9545854fdfb5be111a9891675882c187801fb0 (diff) | |
download | afl++-af02fa1670db6d19feaf0a3e54d9d8013ad3312f.tar.gz |
Improve JS bindings for hooking functions
Diffstat (limited to 'frida_mode/test/js/main.js')
-rw-r--r-- | frida_mode/test/js/main.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/frida_mode/test/js/main.js b/frida_mode/test/js/main.js new file mode 100644 index 00000000..06306fc4 --- /dev/null +++ b/frida_mode/test/js/main.js @@ -0,0 +1,44 @@ +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 main = DebugSymbol.fromName('main').address; +Afl.print(`main: ${main}`); + +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); + + int main(int argc, char **argv) { + + LLVMFuzzerTestOneInput(__afl_fuzz_ptr, *__afl_fuzz_len); + + } + `, + { + LLVMFuzzerTestOneInput: LLVMFuzzerTestOneInput, + __afl_fuzz_ptr: Afl.getAflFuzzPtr(), + __afl_fuzz_len: Afl.getAflFuzzLen() + }); + +Afl.setEntryPoint(cm.main); +Afl.setPersistentAddress(cm.main); +Afl.setInMemoryFuzzing(); +Afl.setJsMainHook(cm.main); +Afl.print("done"); +Afl.done(); |