fix(native): dobby crash

This commit is contained in:
rhunk
2024-05-31 18:34:37 +02:00
parent d28733275b
commit 8ca4cd6995
8 changed files with 23 additions and 6 deletions

View File

@@ -0,0 +1,16 @@
#pragma once
#include <pthread.h>
#include <sys/mman.h>
#include <string.h>
#include <dobby.h>
#include "logger.h"
static pthread_mutex_t hook_mutex = PTHREAD_MUTEX_INITIALIZER;
static void inline SafeHook(void *addr, void *hook, void **original) {
pthread_mutex_lock(&hook_mutex);
DobbyHook(addr, hook, original);
pthread_mutex_unlock(&hook_mutex);
}

View File

@@ -184,6 +184,6 @@ namespace ComposerHook {
LOGE("js_eval_ptr signature not found");
return;
}
DobbyHook((void*) js_eval_ptr, (void *) js_eval, (void **) &js_eval_original);
SafeHook((void*) js_eval_ptr, (void *) js_eval, (void **) &js_eval_original);
}
}

View File

@@ -15,6 +15,6 @@ namespace CustomEmojiFont {
}
void init() {
DobbyHook((void *) DobbySymbolResolver("libc.so", "open"), (void *)open_hook, (void **)&open_hook_original);
SafeHook((void *) DobbySymbolResolver("libc.so", "open"), (void *)open_hook, (void **)&open_hook_original);
}
}

View File

@@ -21,6 +21,6 @@ namespace DuplexHook {
}
void init(JNIEnv* env) {
DobbyHook((void *)env->functions->IsSameObject, (void *)IsSameObject, (void **)&IsSameObject_original);
SafeHook((void *)env->functions->IsSameObject, (void *)IsSameObject, (void **)&IsSameObject_original);
}
}

View File

@@ -22,6 +22,6 @@ namespace FstatHook {
}
void init() {
DobbyHook((void *)DobbySymbolResolver("libc.so", "fstat"), (void *)fstat_hook, (void **)&fstat_hook_original);
SafeHook((void *)DobbySymbolResolver("libc.so", "fstat"), (void *)fstat_hook, (void **)&fstat_hook_original);
}
}

View File

@@ -41,6 +41,6 @@ namespace SqliteMutexHook {
LOGE("sqlite3 openDatabase sig not found");
return;
}
DobbyHook((void *) open_database_sig, (void *) sqlite3_open_hook, (void **) &sqlite3_open_hook_original);
SafeHook((void *) open_database_sig, (void *) sqlite3_open_hook, (void **) &sqlite3_open_hook_original);
}
}

View File

@@ -79,7 +79,7 @@ namespace UnaryCallHook {
native_lib_on_unary_call_method = env->GetMethodID(env->GetObjectClass(common::native_lib_object), "onNativeUnaryCall", "(Ljava/lang/String;[B)L" BUILD_NAMESPACE "/NativeRequestData;");
if (unaryCall_func != 0) {
DobbyHook((void *)unaryCall_func, (void *)unaryCall_hook, (void **)&unaryCall_hook_original);
SafeHook((void *)unaryCall_func, (void *)unaryCall_hook, (void **)&unaryCall_hook_original);
} else {
LOGE("Can't find unaryCall signature");
}

View File

@@ -4,6 +4,7 @@
#include <vector>
#include <thread>
#include "dobby_helper.h"
#include "logger.h"
#include "common.h"
#include "hooks/unary_call.h"