about summary refs log tree commit diff
path: root/utils/qbdi_mode/demo-so.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/qbdi_mode/demo-so.c')
-rwxr-xr-xutils/qbdi_mode/demo-so.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/utils/qbdi_mode/demo-so.c b/utils/qbdi_mode/demo-so.c
new file mode 100755
index 00000000..dd367036
--- /dev/null
+++ b/utils/qbdi_mode/demo-so.c
@@ -0,0 +1,41 @@
+#include <stdio.h>

+

+// gcc -shared -o libdemo.so demo-so.c -w

+int target_func(char *buf, int size) {

+
+  printf("buffer:%p, size:%p\n", buf, size);

+  switch (buf[0]) {

+
+    case 1:

+      puts("222");

+      if (buf[1] == '\x44') {

+
+        puts("null ptr deference");

+        *(char *)(0) = 1;

+
+      }

+

+      break;

+    case 0xff:

+      if (buf[2] == '\xff') {

+
+        if (buf[1] == '\x44') {

+
+          puts("crash....");

+          *(char *)(0xdeadbeef) = 1;

+
+        }

+
+      }

+

+      break;

+    default:

+      puts("default action");

+      break;

+
+  }

+

+  return 1;

+
+}

+