about summary refs log tree commit diff
path: root/frida_mode/src/main.c
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-11-19 11:20:23 +0100
committerGitHub <noreply@github.com>2021-11-19 11:20:23 +0100
commit9283967a6e1b2c2b20c4b6810e58bf7b13c9645a (patch)
tree8b978be289cdadeb9ac0f2e68c148ed73e9d170c /frida_mode/src/main.c
parentb18b8f553fed1c6d62f3e9348573d46348d0857c (diff)
parentb0f7691c2986eb3bcfc5a7c42fc4a4f022dfe961 (diff)
downloadafl++-9283967a6e1b2c2b20c4b6810e58bf7b13c9645a.tar.gz
Merge pull request #1167 from WorksButNotTested/js
Js
Diffstat (limited to 'frida_mode/src/main.c')
-rw-r--r--frida_mode/src/main.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/frida_mode/src/main.c b/frida_mode/src/main.c
index cb88eabe..913e3a46 100644
--- a/frida_mode/src/main.c
+++ b/frida_mode/src/main.c
@@ -36,13 +36,13 @@
 extern mach_port_t mach_task_self();
 extern GumAddress  gum_darwin_find_entrypoint(mach_port_t task);
 #else
-extern int  __libc_start_main(int *(main)(int, char **, char **), int argc,
+extern int  __libc_start_main(int (*main)(int, char **, char **), int argc,
                               char **ubp_av, void (*init)(void),
                               void (*fini)(void), void (*rtld_fini)(void),
                               void(*stack_end));
 #endif
 
-typedef int *(*main_fn_t)(int argc, char **argv, char **envp);
+typedef int (*main_fn_t)(int argc, char **argv, char **envp);
 
 static main_fn_t main_fn = NULL;
 
@@ -217,7 +217,7 @@ __attribute__((visibility("default"))) void afl_frida_start(void) {
 
 }
 
-static int *on_main(int argc, char **argv, char **envp) {
+static int on_main(int argc, char **argv, char **envp) {
 
   on_main_os(argc, argv, envp);
 
@@ -225,12 +225,20 @@ static int *on_main(int argc, char **argv, char **envp) {
 
   afl_frida_start();
 
-  return main_fn(argc, argv, envp);
+  if (js_main_hook != NULL) {
+
+    return js_main_hook(argc, argv, envp);
+
+  } else {
+
+    return main_fn(argc, argv, envp);
+
+  }
 
 }
 
 #if defined(EMBEDDED)
-extern int *main(int argc, char **argv, char **envp);
+extern int main(int argc, char **argv, char **envp);
 
 static void intercept_main(void) {
 
@@ -253,7 +261,7 @@ static void intercept_main(void) {
 }
 
 #else
-static int on_libc_start_main(int *(main)(int, char **, char **), int argc,
+static int on_libc_start_main(int (*main)(int, char **, char **), int argc,
                               char **ubp_av, void (*init)(void),
                               void (*fini)(void), void (*rtld_fini)(void),
                               void(*stack_end)) {