fix(native): dobby crash
This commit is contained in:
16
native/jni/src/dobby_helper.h
Normal file
16
native/jni/src/dobby_helper.h
Normal 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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
|
||||
#include "dobby_helper.h"
|
||||
#include "logger.h"
|
||||
#include "common.h"
|
||||
#include "hooks/unary_call.h"
|
||||
|
||||
Reference in New Issue
Block a user