diff --git a/fuzzers/python_qemu/README.md b/fuzzers/python_qemu/README.md new file mode 100644 index 0000000000..7b2f08143a --- /dev/null +++ b/fuzzers/python_qemu/README.md @@ -0,0 +1,17 @@ +# Python LibAFL QEMU + +## Build + +First, install python bindings (check `LibAFL/bindings/pylibafl`) and use the virtual environment. + +Then, create the `in` folder and put some input inside +```bash +$ mkdir in +$ echo aaaaa > in/input +``` + +## Run + +```bash +$ python fuzzer.py +``` diff --git a/fuzzers/python_qemu/fuzzer.py b/fuzzers/python_qemu/fuzzer.py index fd0245a497..71fc023580 100644 --- a/fuzzers/python_qemu/fuzzer.py +++ b/fuzzers/python_qemu/fuzzer.py @@ -6,7 +6,7 @@ import lief MAX_SIZE = 0x100 BINARY_PATH = './a.out' -emu = qemu.Emulator(['qemu-x86_64', BINARY_PATH], []) +emu = qemu.Qemu(['qemu-x86_64', BINARY_PATH], []) elf = lief.parse(BINARY_PATH) test_one_input = elf.get_function_address("LLVMFuzzerTestOneInput") diff --git a/libafl_qemu/src/emu.rs b/libafl_qemu/src/emu.rs index f5e10a38a8..9e3043898e 100644 --- a/libafl_qemu/src/emu.rs +++ b/libafl_qemu/src/emu.rs @@ -1813,6 +1813,12 @@ pub mod pybind { Ok(Qemu { qemu }) } + fn run(&self) { + unsafe { + self.qemu.run().unwrap(); + } + } + fn write_mem(&self, addr: GuestAddr, buf: &[u8]) { unsafe { self.qemu.write_mem(addr, buf); diff --git a/libafl_sugar/src/qemu.rs b/libafl_sugar/src/qemu.rs index e9bb51e498..376bfd1ca7 100644 --- a/libafl_sugar/src/qemu.rs +++ b/libafl_sugar/src/qemu.rs @@ -209,7 +209,7 @@ where let mut harness = |input: &BytesInput| { let target = input.target_bytes(); let buf = target.as_slice(); - (harness_bytes)(buf); + harness_bytes(buf); ExitKind::Ok };