diff --git a/.gitmodules b/.gitmodules
index b19bd06..7523432 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "libcxx"]
- path = app/src/main/cpp/libcxx
- url = https://github.com/topjohnwu/libcxx.git
-[submodule "shadowhook"]
- path = app/src/main/cpp/shadowhook
- url = https://github.com/bytedance/android-inline-hook
+[submodule "Dobby"]
+ path = app/src/main/cpp/Dobby
+ url = https://github.com/jmpews/Dobby
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 25dfc0f..8011b03 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,6 +2,6 @@
-
+
-
\ No newline at end of file
+
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 06b33ce..e3572f5 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -8,6 +8,17 @@ android {
ndkVersion = "26.1.10909125"
buildToolsVersion = "34.0.0"
+ buildFeatures {
+ prefab = true
+ }
+
+ packaging {
+ jniLibs {
+ excludes += "**/liblog.so"
+ excludes += "**/libdobby.so"
+ }
+ }
+
defaultConfig {
applicationId = "es.chiteroman.playintegrityfix"
minSdk = 26
@@ -16,10 +27,15 @@ android {
versionName = "1.0"
externalNativeBuild {
- ndk {
- jobs = Runtime.getRuntime().availableProcessors()
- abiFilters += "armeabi-v7a"
- abiFilters += "arm64-v8a"
+ cmake {
+ arguments += "-DANDROID_STL=none"
+ arguments += "-DCMAKE_BUILD_TYPE=Release"
+
+ cppFlags += "-std=c++20"
+ cppFlags += "-fno-exceptions"
+ cppFlags += "-fno-rtti"
+ cppFlags += "-fvisibility=hidden"
+ cppFlags += "-fvisibility-inlines-hidden"
}
}
}
@@ -38,12 +54,17 @@ android {
}
externalNativeBuild {
- ndkBuild {
- path = file("src/main/cpp/Android.mk")
+ cmake {
+ path = file("src/main/cpp/CMakeLists.txt")
+ version = "3.22.1"
}
}
}
+dependencies {
+ implementation("dev.rikka.ndk.thirdparty:cxx:1.2.0")
+}
+
tasks.register("copyFiles") {
doLast {
val moduleFolder = project.rootDir.resolve("module")
diff --git a/app/src/main/cpp/Android.mk b/app/src/main/cpp/Android.mk
deleted file mode 100644
index 08042e0..0000000
--- a/app/src/main/cpp/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := zygisk
-LOCAL_SRC_FILES := main.cpp
-LOCAL_C_INCLUDES := $(LOCAL_PATH)
-
-LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/*.c)
-LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/common/*.c)
-LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/third_party/xdl/*.c)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/common
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/include
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/third_party/bsd
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/third_party/lss
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/third_party/xdl
-
-ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
- LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/arch/arm/*.c)
- LOCAL_C_INCLUDES += $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/arch/arm
-endif
-
-ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
- LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/arch/arm64/*.c)
- LOCAL_C_INCLUDES += $(LOCAL_PATH)/shadowhook/shadowhook/src/main/cpp/arch/arm64
-endif
-
-LOCAL_STATIC_LIBRARIES := libcxx
-LOCAL_LDLIBS := -llog
-include $(BUILD_SHARED_LIBRARY)
-
-include $(LOCAL_PATH)/libcxx/Android.mk
diff --git a/app/src/main/cpp/Application.mk b/app/src/main/cpp/Application.mk
deleted file mode 100644
index 51fecb7..0000000
--- a/app/src/main/cpp/Application.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-APP_STL := none
-APP_CFLAGS := -Oz -fno-exceptions -fno-rtti -fvisibility=hidden -fvisibility-inlines-hidden
-APP_CPPFLAGS := -std=c++20
diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt
index bd0e7e6..27d6f6b 100644
--- a/app/src/main/cpp/CMakeLists.txt
+++ b/app/src/main/cpp/CMakeLists.txt
@@ -2,14 +2,14 @@ cmake_minimum_required(VERSION 3.22.1)
project(zygisk)
-include_directories(${CMAKE_SOURCE_DIR}/libcxx/include)
+find_package(cxx REQUIRED CONFIG)
-link_libraries(${CMAKE_SOURCE_DIR}/libcxx/${CMAKE_ANDROID_ARCH_ABI}.a)
+link_libraries(cxx::cxx)
add_library(${CMAKE_PROJECT_NAME} SHARED ${CMAKE_SOURCE_DIR}/main.cpp)
+add_subdirectory(Dobby)
+
SET_OPTION(Plugin.Android.BionicLinkerUtil ON)
-target_compile_features(${CMAKE_PROJECT_NAME} PRIVATE c_std_23 cxx_std_23)
-
-target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE log)
+target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE log dobby_static)
diff --git a/app/src/main/cpp/Dobby b/app/src/main/cpp/Dobby
new file mode 160000
index 0000000..b0176de
--- /dev/null
+++ b/app/src/main/cpp/Dobby
@@ -0,0 +1 @@
+Subproject commit b0176de574104726bb68dff3b77ee666300fc338
diff --git a/app/src/main/cpp/libcxx b/app/src/main/cpp/libcxx
deleted file mode 160000
index 12c8f4e..0000000
--- a/app/src/main/cpp/libcxx
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 12c8f4e93f196a700137e983dcceeac43cf807f2
diff --git a/app/src/main/cpp/main.cpp b/app/src/main/cpp/main.cpp
index 2d03402..81dc536 100644
--- a/app/src/main/cpp/main.cpp
+++ b/app/src/main/cpp/main.cpp
@@ -3,7 +3,7 @@
#include
#include "zygisk.hpp"
-#include "shadowhook.h"
+#include "dobby.h"
#include "json.hpp"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "PIF/Native", __VA_ARGS__)
@@ -67,18 +67,17 @@ static void my_system_property_read_callback(const prop_info *pi, T_Callback cal
}
static void doHook() {
- shadowhook_init(SHADOWHOOK_MODE_UNIQUE, false);
- void *handle = shadowhook_hook_sym_name(
- "libc.so",
- "__system_property_read_callback",
- reinterpret_cast(my_system_property_read_callback),
- reinterpret_cast(&o_system_property_read_callback)
- );
+ void *handle = DobbySymbolResolver(nullptr, "__system_property_read_callback");
if (handle == nullptr) {
LOGD("Couldn't find '__system_property_read_callback' handle");
return;
}
LOGD("Found '__system_property_read_callback' handle at %p", handle);
+ DobbyHook(
+ handle,
+ reinterpret_cast(my_system_property_read_callback),
+ reinterpret_cast(&o_system_property_read_callback)
+ );
}
class PlayIntegrityFix : public zygisk::ModuleBase {
diff --git a/app/src/main/cpp/shadowhook b/app/src/main/cpp/shadowhook
deleted file mode 160000
index b2537df..0000000
--- a/app/src/main/cpp/shadowhook
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b2537df077b9fa25aaa4c7b82cf4c64aac148da9
diff --git a/build.gradle.kts b/build.gradle.kts
index 68bcdaf..410a94a 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,3 +1,3 @@
plugins {
- id("com.android.application") version "8.2.0" apply false
+ id("com.android.application") version "8.2.1" apply false
}