aboutsummaryrefslogtreecommitdiff
path: root/examples/qemu_persistent_hook/read_into_rdi.c
diff options
context:
space:
mode:
authorAndrea Fioraldi <andreafioraldi@gmail.com>2020-02-07 20:43:17 +0100
committerAndrea Fioraldi <andreafioraldi@gmail.com>2020-02-07 20:43:17 +0100
commitf2f6be5e999632b05ce92b4934ee97531d546a44 (patch)
treec7eeea121fc83b5d0cf76daf59c47634c11bf264 /examples/qemu_persistent_hook/read_into_rdi.c
parentfd8fe4dd088464230df2dc456c5a9fbf905c907f (diff)
downloadafl++-f2f6be5e999632b05ce92b4934ee97531d546a44.tar.gz
afl qemu persistent hook
Diffstat (limited to 'examples/qemu_persistent_hook/read_into_rdi.c')
-rw-r--r--examples/qemu_persistent_hook/read_into_rdi.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/qemu_persistent_hook/read_into_rdi.c b/examples/qemu_persistent_hook/read_into_rdi.c
new file mode 100644
index 00000000..4c5119e0
--- /dev/null
+++ b/examples/qemu_persistent_hook/read_into_rdi.c
@@ -0,0 +1,42 @@
+#include <stdint.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#define g2h(x) ((void *)((unsigned long)(x) + guest_base))
+#define h2g(x) ((uint64_t)(x) - guest_base)
+
+enum {
+ R_EAX = 0,
+ R_ECX = 1,
+ R_EDX = 2,
+ R_EBX = 3,
+ R_ESP = 4,
+ R_EBP = 5,
+ R_ESI = 6,
+ R_EDI = 7,
+ R_R8 = 8,
+ R_R9 = 9,
+ R_R10 = 10,
+ R_R11 = 11,
+ R_R12 = 12,
+ R_R13 = 13,
+ R_R14 = 14,
+ R_R15 = 15,
+
+ R_AL = 0,
+ R_CL = 1,
+ R_DL = 2,
+ R_BL = 3,
+ R_AH = 4,
+ R_CH = 5,
+ R_DH = 6,
+ R_BH = 7,
+};
+
+void afl_persistent_hook(uint64_t* regs, uint64_t guest_base) {
+
+ printf("reading into %p\n", regs[R_EDI]);
+ size_t r = read(0, g2h(regs[R_EDI]), 1024);
+ printf("readed %ld bytes\n", r);
+
+}