diff --git a/core/src/main/cpp/main/Android.mk b/core/src/main/cpp/main/Android.mk index bf47e448..74774520 100644 --- a/core/src/main/cpp/main/Android.mk +++ b/core/src/main/cpp/main/Android.mk @@ -15,7 +15,7 @@ else ifeq ($(API), zygisk) LOCAL_SRC_FILES += api/zygisk_main.cpp endif LOCAL_CFLAGS += -DINJECTED_AID=${INJECTED_AID} -LOCAL_LDLIBS := -llog +LOCAL_LDLIBS := -llog -landroid include $(BUILD_SHARED_LIBRARY) $(LOCAL_PATH)/api/config.cpp : FORCE diff --git a/core/src/main/cpp/main/api/zygisk_main.cpp b/core/src/main/cpp/main/api/zygisk_main.cpp index 4e4dc0ba..26346ec3 100644 --- a/core/src/main/cpp/main/api/zygisk_main.cpp +++ b/core/src/main/cpp/main/api/zygisk_main.cpp @@ -19,7 +19,8 @@ #include #include -#include +#include +#include #include "jni/zygisk.h" #include "logging.h" @@ -173,24 +174,6 @@ namespace lspd { int *allowUnload = &allow_unload; class SharedMem { - inline static void *cutils = nullptr; - - inline static int (*ashmem_create_region)(const char *name, std::size_t size) = nullptr; - - inline static int (*ashmem_set_prot_region)(int fd, int prot) = nullptr; - - inline static bool init = false; - - static void Init() { - if (init) return; - cutils = dlopen("/system/lib" LP_SELECT("", "64") "/libcutils.so", 0); - ashmem_create_region = cutils ? reinterpret_cast( - dlsym(cutils, "ashmem_create_region")) : nullptr; - ashmem_set_prot_region = cutils ? reinterpret_cast( - dlsym(cutils, "ashmem_set_prot_region")) : nullptr; - init = true; - } - int fd_ = -1; std::size_t size_ = 0; @@ -245,8 +228,7 @@ namespace lspd { constexpr bool ok() const { return fd_ > 0 && size_ > 0; } SharedMem(std::string_view name, std::size_t size) { - Init(); - if (ashmem_create_region && (fd_ = ashmem_create_region(name.data(), size)) > 0) { + if ((fd_ = ASharedMemory_create(name.data(), size)) > 0) { size_ = size; LOGD("using memfd"); } else { @@ -261,12 +243,10 @@ namespace lspd { } void SetProt(int prot) { - ashmem_set_prot_region(fd_, prot); + ASharedMemory_setProt(fd_, prot); } - SharedMem() : fd_(-1), size_(0) { - Init(); - } + SharedMem() : fd_(-1), size_(0) {} constexpr auto get() const { return fd_; }