about summary refs log tree commit diff
path: root/frida_mode/src/stalker.c
diff options
context:
space:
mode:
Diffstat (limited to 'frida_mode/src/stalker.c')
-rw-r--r--frida_mode/src/stalker.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/frida_mode/src/stalker.c b/frida_mode/src/stalker.c
new file mode 100644
index 00000000..5ee519ba
--- /dev/null
+++ b/frida_mode/src/stalker.c
@@ -0,0 +1,49 @@
+#include "debug.h"
+
+#include "instrument.h"
+#include "stalker.h"
+
+static GumStalker *stalker = NULL;
+
+void stalker_init(void) {
+
+  stalker = gum_stalker_new();
+  if (stalker == NULL) { FATAL("Failed to initialize stalker"); }
+
+  gum_stalker_set_trust_threshold(stalker, 0);
+
+}
+
+GumStalker *stalker_get(void) {
+
+  if (stalker == NULL) { FATAL("Stalker uninitialized"); }
+  return stalker;
+
+}
+
+__attribute__((noinline)) static void stalker_activation(void) {
+
+  asm volatile("");
+
+}
+
+void stalker_start(void) {
+
+  GumStalkerTransformer *transformer = instrument_get_transformer();
+  gum_stalker_follow_me(stalker, transformer, NULL);
+
+}
+
+void stalker_pause(void) {
+
+  gum_stalker_deactivate(stalker);
+
+}
+
+void stalker_resume(void) {
+
+  gum_stalker_activate(stalker, stalker_activation);
+  stalker_activation();
+
+}
+