about summary refs log tree commit diff
path: root/src/afl-common.c
diff options
context:
space:
mode:
authorAkira Moroo <retrage01@gmail.com>2021-06-22 05:34:20 +0000
committerAkira Moroo <retrage01@gmail.com>2021-11-11 09:52:21 +0000
commit9100f3c416707d926fc100d4441cf32bb1da6dd6 (patch)
treebd0d24e3919acd56c48cda64f5266f5fb99585ef /src/afl-common.c
parent26238516804a45636f8c675d492b048c32b82d31 (diff)
downloadafl++-9100f3c416707d926fc100d4441cf32bb1da6dd6.tar.gz
Add initial CoreSight mode support
The original code is:
https://github.com/RICSecLab/AFLplusplus-cs/tree/retrage/coresight-mode-pr

Signed-off-by: Akira Moroo <retrage01@gmail.com>
Diffstat (limited to 'src/afl-common.c')
-rw-r--r--src/afl-common.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/afl-common.c b/src/afl-common.c
index ec3b2f3f..6c2d0753 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -204,6 +204,35 @@ void argv_cpy_free(char **argv) {
 
 }
 
+/* Rewrite argv for CoreSight process tracer. */
+
+char **get_cs_argv(u8 *own_loc, u8 **target_path_p, int argc, char **argv) {
+
+  if (unlikely(getenv("AFL_CS_CUSTOM_BIN"))) {
+
+    WARNF(
+        "AFL_CS_CUSTOM_BIN is enabled. "
+        "You must run your target under afl-cs-proxy on your own!");
+    return argv;
+
+  }
+
+  char **new_argv = ck_alloc(sizeof(char *) * (argc + 4));
+  if (unlikely(!new_argv)) { FATAL("Illegal amount of arguments specified"); }
+
+  memcpy(&new_argv[3], &argv[1], (int)(sizeof(char *)) * (argc - 1));
+  new_argv[argc + 3] = NULL;
+
+  new_argv[2] = *target_path_p;
+  new_argv[1] = "--";
+
+  /* Now we need to actually find the cs-proxy binary to put in argv[0]. */
+
+  *target_path_p = new_argv[0] = find_afl_binary(own_loc, "afl-cs-proxy");
+  return new_argv;
+
+}
+
 /* Rewrite argv for QEMU. */
 
 char **get_qemu_argv(u8 *own_loc, u8 **target_path_p, int argc, char **argv) {