diff --git a/app/src/main/cpp/main.cpp b/app/src/main/cpp/main.cpp index cb16512..253cd92 100644 --- a/app/src/main/cpp/main.cpp +++ b/app/src/main/cpp/main.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include "zygisk.hpp" @@ -18,8 +17,6 @@ static int verboseLogs = 0; static std::map jsonProps; -static std::string unameRelease; - typedef void (*T_Callback)(void *, const char *, const char *, uint32_t); static std::map callbacks; @@ -70,27 +67,7 @@ static void my_system_property_read_callback(const prop_info *pi, T_Callback cal return o_system_property_read_callback(pi, modify_callback, cookie); } -static int (*o_uname_callback)(struct utsname *); - -static int my_uname_callback(struct utsname *buf) { - auto ret = o_uname_callback(buf); - - if (buf && ret == 0) { - const char *value = unameRelease.c_str(); - const char *oldValue = buf->release; - - if (unameRelease.empty() || oldValue == value) { - if (verboseLogs > 2) LOGD("[uname_release]: %s (unchanged)", oldValue); - } else if (unameRelease.size() < SYS_NMLN) { - LOGD("[uname_release]: %s -> %s", oldValue, value); - strncpy(buf->release, value, unameRelease.size()); - } - } - - return ret; -} - -static void doPropHook() { +static void doHook() { void *handle = DobbySymbolResolver(nullptr, "__system_property_read_callback"); if (handle == nullptr) { LOGD("Couldn't find '__system_property_read_callback' handle"); @@ -101,17 +78,6 @@ static void doPropHook() { reinterpret_cast(&o_system_property_read_callback)); } -static void doUnameHook() { - void *handle = DobbySymbolResolver(nullptr, "uname"); - if (handle == nullptr) { - LOGD("Couldn't find 'uname' handle"); - return; - } - LOGD("Found 'uname' handle at %p", handle); - DobbyHook(handle, reinterpret_cast(my_uname_callback), - reinterpret_cast(&o_uname_callback)); -} - class PlayIntegrityFix : public zygisk::ModuleBase { public: void onLoad(zygisk::Api *api, JNIEnv *env) override { @@ -198,8 +164,7 @@ public: if (dexVector.empty() || json.empty()) return; readJson(); - doPropHook(); - doUnameHook(); + doHook(); inject(); dexVector.clear(); @@ -230,17 +195,6 @@ private: json.erase("verbose_logs"); } - // Parse kernel uname release string as a special case (neither field or property) - if (json.contains("uname_release")) { - if (verboseLogs > 1) LOGD("Parsing uname_release"); - if (!json["uname_release"].is_null() && json["uname_release"].is_string() && json["uname_release"] != "") { - unameRelease = json["uname_release"].get(); - } else { - LOGD("Error parsing uname_release!"); - } - json.erase("uname_release"); - } - std::vector eraseKeys; for (auto &jsonList: json.items()) { if (verboseLogs > 1) LOGD("Parsing %s", jsonList.key().c_str());