This reverts commit 449b48e77f.
This commit is contained in:
parent
a160bdca9e
commit
5589ecd29f
|
|
@ -15,7 +15,7 @@ else ifeq ($(API), zygisk)
|
||||||
LOCAL_SRC_FILES += api/zygisk_main.cpp
|
LOCAL_SRC_FILES += api/zygisk_main.cpp
|
||||||
endif
|
endif
|
||||||
LOCAL_CFLAGS += -DINJECTED_AID=${INJECTED_AID}
|
LOCAL_CFLAGS += -DINJECTED_AID=${INJECTED_AID}
|
||||||
LOCAL_LDLIBS := -llog -landroid
|
LOCAL_LDLIBS := -llog
|
||||||
include $(BUILD_SHARED_LIBRARY)
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
|
|
||||||
$(LOCAL_PATH)/api/config.cpp : FORCE
|
$(LOCAL_PATH)/api/config.cpp : FORCE
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,7 @@
|
||||||
|
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <android/sharedmem.h>
|
#include <dlfcn.h>
|
||||||
#include <android/sharedmem_jni.h>
|
|
||||||
|
|
||||||
#include "jni/zygisk.h"
|
#include "jni/zygisk.h"
|
||||||
#include "logging.h"
|
#include "logging.h"
|
||||||
|
|
@ -174,6 +173,24 @@ namespace lspd {
|
||||||
int *allowUnload = &allow_unload;
|
int *allowUnload = &allow_unload;
|
||||||
|
|
||||||
class SharedMem {
|
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<decltype(ashmem_create_region)>(
|
||||||
|
dlsym(cutils, "ashmem_create_region")) : nullptr;
|
||||||
|
ashmem_set_prot_region = cutils ? reinterpret_cast<decltype(ashmem_set_prot_region)>(
|
||||||
|
dlsym(cutils, "ashmem_set_prot_region")) : nullptr;
|
||||||
|
init = true;
|
||||||
|
}
|
||||||
|
|
||||||
int fd_ = -1;
|
int fd_ = -1;
|
||||||
std::size_t size_ = 0;
|
std::size_t size_ = 0;
|
||||||
|
|
||||||
|
|
@ -228,7 +245,8 @@ namespace lspd {
|
||||||
constexpr bool ok() const { return fd_ > 0 && size_ > 0; }
|
constexpr bool ok() const { return fd_ > 0 && size_ > 0; }
|
||||||
|
|
||||||
SharedMem(std::string_view name, std::size_t size) {
|
SharedMem(std::string_view name, std::size_t size) {
|
||||||
if ((fd_ = ASharedMemory_create(name.data(), size)) > 0) {
|
Init();
|
||||||
|
if (ashmem_create_region && (fd_ = ashmem_create_region(name.data(), size)) > 0) {
|
||||||
size_ = size;
|
size_ = size;
|
||||||
LOGD("using memfd");
|
LOGD("using memfd");
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -243,10 +261,12 @@ namespace lspd {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetProt(int prot) {
|
void SetProt(int prot) {
|
||||||
ASharedMemory_setProt(fd_, prot);
|
ashmem_set_prot_region(fd_, prot);
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedMem() : fd_(-1), size_(0) {}
|
SharedMem() : fd_(-1), size_(0) {
|
||||||
|
Init();
|
||||||
|
}
|
||||||
|
|
||||||
constexpr auto get() const { return fd_; }
|
constexpr auto get() const { return fd_; }
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue