Make ide happy about native methods
This commit is contained in:
parent
4131c18cb6
commit
91c49dd6d0
|
|
@ -28,6 +28,19 @@
|
||||||
_NATIVEHELPER_JNI_MACRO_CAST(void*) (className ## _ ## functionName) \
|
_NATIVEHELPER_JNI_MACRO_CAST(void*) (className ## _ ## functionName) \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef LSP_NATIVE_METHOD
|
||||||
|
#define LSP_NATIVE_METHOD(className, functionName, signature) \
|
||||||
|
{ #functionName, \
|
||||||
|
signature, \
|
||||||
|
_NATIVEHELPER_JNI_MACRO_CAST(void*) (Java_io_github_lsposed_lspd_nativebridge_## className ## _ ## functionName) \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef LSP_DEF_NATIVE_METHOD
|
||||||
|
#define LSP_DEF_NATIVE_METHOD(ret, className, functionName, ...) \
|
||||||
|
extern "C" ret Java_io_github_lsposed_lspd_nativebridge_## className ## _ ## functionName (JNI_START, ## __VA_ARGS__)
|
||||||
|
#endif
|
||||||
// Intended to construct a JNINativeMethod (when the C name doesn't match the Java name).
|
// Intended to construct a JNINativeMethod (when the C name doesn't match the Java name).
|
||||||
// (Assumes the C name is the ClassName_Identifier).
|
// (Assumes the C name is the ClassName_Identifier).
|
||||||
#ifndef OVERLOADED_NATIVE_METHOD
|
#ifndef OVERLOADED_NATIVE_METHOD
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ inline constexpr bool is64 = Is64();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const auto kEntryClassName = "io.github.lsposed.lspd.core.Main"s;
|
static const auto kEntryClassName = "io.github.lsposed.lspd.core.Main"s;
|
||||||
static const auto kClassLinkerClassName = "io.github.lsposed.lspd.art.ClassLinker"s;
|
static const auto kClassLinkerClassName = "io.github.lsposed.lspd.nativebridge.ClassLinker"s;
|
||||||
static const auto kSandHookClassName = "com.swift.sandhook.SandHook"s;
|
static const auto kSandHookClassName = "com.swift.sandhook.SandHook"s;
|
||||||
static const auto kSandHookNeverCallClassName = "com.swift.sandhook.ClassNeverCall"s;
|
static const auto kSandHookNeverCallClassName = "com.swift.sandhook.ClassNeverCall"s;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ namespace lspd {
|
||||||
|
|
||||||
static std::unordered_set<void *> deopted_methods;
|
static std::unordered_set<void *> deopted_methods;
|
||||||
|
|
||||||
static void ClassLinker_setEntryPointsToInterpreter(JNI_START, jobject method) {
|
LSP_DEF_NATIVE_METHOD(void, ClassLinker, setEntryPointsToInterpreter, jobject method) {
|
||||||
void *reflected_method = getArtMethodYahfa(env, method);
|
void *reflected_method = getArtMethodYahfa(env, method);
|
||||||
if (deopted_methods.count(reflected_method)) {
|
if (deopted_methods.count(reflected_method)) {
|
||||||
LOGD("method %p has been deopted before, skip...", reflected_method);
|
LOGD("method %p has been deopted before, skip...", reflected_method);
|
||||||
|
|
@ -24,7 +24,8 @@ namespace lspd {
|
||||||
}
|
}
|
||||||
|
|
||||||
static JNINativeMethod gMethods[] = {
|
static JNINativeMethod gMethods[] = {
|
||||||
NATIVE_METHOD(ClassLinker, setEntryPointsToInterpreter, "(Ljava/lang/reflect/Member;)V")
|
LSP_NATIVE_METHOD(ClassLinker, setEntryPointsToInterpreter,
|
||||||
|
"(Ljava/lang/reflect/Member;)V")
|
||||||
};
|
};
|
||||||
|
|
||||||
void RegisterArtClassLinker(JNIEnv *env) {
|
void RegisterArtClassLinker(JNIEnv *env) {
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,18 @@
|
||||||
namespace lspd {
|
namespace lspd {
|
||||||
|
|
||||||
|
|
||||||
static jint Heap_waitForGcToComplete(JNI_START) {
|
LSP_DEF_NATIVE_METHOD(jint, Heap, waitForGcToComplete) {
|
||||||
art::gc::collector::GcType gcType = art::gc::Heap::Current()->WaitForGcToComplete(
|
art::gc::collector::GcType gcType = art::gc::Heap::Current()->WaitForGcToComplete(
|
||||||
art::gc::GcCause::kGcCauseNone, art::Thread::Current().Get());
|
art::gc::GcCause::kGcCauseNone, art::Thread::Current().Get());
|
||||||
return gcType;
|
return gcType;
|
||||||
}
|
}
|
||||||
|
|
||||||
static JNINativeMethod gMethods[] = {
|
static JNINativeMethod gMethods[] = {
|
||||||
NATIVE_METHOD(Heap, waitForGcToComplete, "()I")
|
LSP_NATIVE_METHOD(Heap, waitForGcToComplete, "()I")
|
||||||
};
|
};
|
||||||
|
|
||||||
void RegisterArtHeap(JNIEnv *env) {
|
void RegisterArtHeap(JNIEnv *env) {
|
||||||
REGISTER_EDXP_NATIVE_METHODS("io.github.lsposed.lspd.art.Heap");
|
REGISTER_EDXP_NATIVE_METHODS("io.github.lsposed.lspd.nativebridge.Heap");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -7,77 +7,78 @@
|
||||||
|
|
||||||
namespace lspd {
|
namespace lspd {
|
||||||
|
|
||||||
static jboolean ConfigManager_isResourcesHookEnabled(JNI_START) {
|
LSP_DEF_NATIVE_METHOD(jboolean, ConfigManager, isResourcesHookEnabled) {
|
||||||
return (jboolean) ConfigManager::GetInstance()->IsResourcesHookEnabled();
|
return (jboolean) ConfigManager::GetInstance()->IsResourcesHookEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
static jboolean ConfigManager_isNoModuleLogEnabled(JNI_START) {
|
LSP_DEF_NATIVE_METHOD(jboolean, ConfigManager, isNoModuleLogEnabled) {
|
||||||
return (jboolean) ConfigManager::GetInstance()->IsNoModuleLogEnabled();
|
return (jboolean) ConfigManager::GetInstance()->IsNoModuleLogEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getInstallerPackageName(JNI_START) {
|
LSP_DEF_NATIVE_METHOD(jstring, ConfigManager, getInstallerPackageName) {
|
||||||
return env->NewStringUTF(ConfigManager::GetInstance()->GetInstallerPackageName().c_str());
|
return env->NewStringUTF(ConfigManager::GetInstance()->GetInstallerPackageName().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getDataPathPrefix(JNI_START) {
|
LSP_DEF_NATIVE_METHOD(jstring, ConfigManager, getDataPathPrefix) {
|
||||||
return env->NewStringUTF(ConfigManager::GetInstance()->GetDataPathPrefix().c_str());
|
return env->NewStringUTF(ConfigManager::GetInstance()->GetDataPathPrefix().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getConfigPath(JNI_START, jstring jSuffix) {
|
LSP_DEF_NATIVE_METHOD(jstring, ConfigManager, getConfigPath, jstring jSuffix) {
|
||||||
const char *suffix = env->GetStringUTFChars(jSuffix, JNI_FALSE);
|
const char *suffix = env->GetStringUTFChars(jSuffix, JNI_FALSE);
|
||||||
auto result = ConfigManager::GetInstance()->GetConfigPath(suffix);
|
auto result = ConfigManager::GetInstance()->GetConfigPath(suffix);
|
||||||
env->ReleaseStringUTFChars(jSuffix, suffix);
|
env->ReleaseStringUTFChars(jSuffix, suffix);
|
||||||
return env->NewStringUTF(result.c_str());
|
return env->NewStringUTF(result.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getPrefsPath(JNI_START, jstring jSuffix) {
|
LSP_DEF_NATIVE_METHOD(jstring, ConfigManager, getPrefsPath, jstring jSuffix) {
|
||||||
const char *suffix = env->GetStringUTFChars(jSuffix, JNI_FALSE);
|
const char *suffix = env->GetStringUTFChars(jSuffix, JNI_FALSE);
|
||||||
auto result = ConfigManager::GetInstance()->GetPrefsPath(suffix);
|
auto result = ConfigManager::GetInstance()->GetPrefsPath(suffix);
|
||||||
env->ReleaseStringUTFChars(jSuffix, suffix);
|
env->ReleaseStringUTFChars(jSuffix, suffix);
|
||||||
return env->NewStringUTF(result.c_str());
|
return env->NewStringUTF(result.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getCachePath(JNI_START, jstring jSuffix) {
|
LSP_DEF_NATIVE_METHOD(jstring, ConfigManager, getCachePath, jstring jSuffix) {
|
||||||
const char *suffix = env->GetStringUTFChars(jSuffix, JNI_FALSE);
|
const char *suffix = env->GetStringUTFChars(jSuffix, JNI_FALSE);
|
||||||
auto result = ConfigManager::GetCachePath(suffix);
|
auto result = ConfigManager::GetCachePath(suffix);
|
||||||
env->ReleaseStringUTFChars(jSuffix, suffix);
|
env->ReleaseStringUTFChars(jSuffix, suffix);
|
||||||
return env->NewStringUTF(result.c_str());
|
return env->NewStringUTF(result.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getBaseConfigPath(JNI_START) {
|
LSP_DEF_NATIVE_METHOD(jstring, ConfigManager, getBaseConfigPath) {
|
||||||
auto result = ConfigManager::GetInstance()->GetBaseConfigPath();
|
auto result = ConfigManager::GetInstance()->GetBaseConfigPath();
|
||||||
return env->NewStringUTF(result.c_str());
|
return env->NewStringUTF(result.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getMiscPath(JNI_START) {
|
LSP_DEF_NATIVE_METHOD(jstring, ConfigManager, getMiscPath) {
|
||||||
auto result = ConfigManager::GetInstance()->GetMiscPath();
|
auto result = ConfigManager::GetMiscPath();
|
||||||
return env->NewStringUTF(result.c_str());
|
return env->NewStringUTF(result.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getModulesList(JNI_START) {
|
LSP_DEF_NATIVE_METHOD(jstring, ConfigManager, getModulesList) {
|
||||||
auto module_list = Context::GetInstance()->GetAppModulesList();
|
auto module_list = Context::GetInstance()->GetAppModulesList();
|
||||||
std::ostringstream join;
|
std::ostringstream join;
|
||||||
std::copy(module_list.begin(), module_list.end(), std::ostream_iterator<std::string>(join, "\n"));
|
std::copy(module_list.begin(), module_list.end(),
|
||||||
|
std::ostream_iterator<std::string>(join, "\n"));
|
||||||
const auto &list = join.str();
|
const auto &list = join.str();
|
||||||
LOGD("module list: %s", list.c_str());
|
LOGD("module list: %s", list.c_str());
|
||||||
return env->NewStringUTF(list.c_str());
|
return env->NewStringUTF(list.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static JNINativeMethod gMethods[] = {
|
static JNINativeMethod gMethods[] = {
|
||||||
NATIVE_METHOD(ConfigManager, isResourcesHookEnabled, "()Z"),
|
LSP_NATIVE_METHOD(ConfigManager, isResourcesHookEnabled, "()Z"),
|
||||||
NATIVE_METHOD(ConfigManager, isNoModuleLogEnabled, "()Z"),
|
LSP_NATIVE_METHOD(ConfigManager, isNoModuleLogEnabled, "()Z"),
|
||||||
NATIVE_METHOD(ConfigManager, getInstallerPackageName, "()Ljava/lang/String;"),
|
LSP_NATIVE_METHOD(ConfigManager, getInstallerPackageName, "()Ljava/lang/String;"),
|
||||||
NATIVE_METHOD(ConfigManager, getDataPathPrefix, "()Ljava/lang/String;"),
|
LSP_NATIVE_METHOD(ConfigManager, getDataPathPrefix, "()Ljava/lang/String;"),
|
||||||
NATIVE_METHOD(ConfigManager, getPrefsPath,
|
LSP_NATIVE_METHOD(ConfigManager, getPrefsPath,
|
||||||
"(Ljava/lang/String;)Ljava/lang/String;"),
|
"(Ljava/lang/String;)Ljava/lang/String;"),
|
||||||
NATIVE_METHOD(ConfigManager, getCachePath,
|
LSP_NATIVE_METHOD(ConfigManager, getCachePath,
|
||||||
"(Ljava/lang/String;)Ljava/lang/String;"),
|
"(Ljava/lang/String;)Ljava/lang/String;"),
|
||||||
NATIVE_METHOD(ConfigManager, getBaseConfigPath, "()Ljava/lang/String;"),
|
LSP_NATIVE_METHOD(ConfigManager, getBaseConfigPath, "()Ljava/lang/String;"),
|
||||||
NATIVE_METHOD(ConfigManager, getModulesList, "()Ljava/lang/String;"),
|
LSP_NATIVE_METHOD(ConfigManager, getModulesList, "()Ljava/lang/String;"),
|
||||||
};
|
};
|
||||||
|
|
||||||
void RegisterConfigManagerMethods(JNIEnv *env) {
|
void RegisterConfigManagerMethods(JNIEnv *env) {
|
||||||
REGISTER_EDXP_NATIVE_METHODS("io.github.lsposed.lspd.config.ConfigManager");
|
REGISTER_EDXP_NATIVE_METHODS("io.github.lsposed.lspd.nativebridge.ConfigManager");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -9,41 +9,41 @@
|
||||||
|
|
||||||
namespace lspd {
|
namespace lspd {
|
||||||
|
|
||||||
static void Yahfa_init(JNI_START, jint sdkVersion) {
|
LSP_DEF_NATIVE_METHOD(void, Yahfa, init, jint sdkVersion) {
|
||||||
Java_lab_galaxy_yahfa_HookMain_init(env, clazz, sdkVersion);
|
Java_lab_galaxy_yahfa_HookMain_init(env, clazz, sdkVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
static jobject Yahfa_findMethodNative(JNI_START, jclass targetClass,
|
LSP_DEF_NATIVE_METHOD(jobject, Yahfa, findMethodNative, jclass targetClass,
|
||||||
jstring methodName, jstring methodSig) {
|
jstring methodName, jstring methodSig) {
|
||||||
return Java_lab_galaxy_yahfa_HookMain_findMethodNative(env, clazz, targetClass, methodName,
|
return Java_lab_galaxy_yahfa_HookMain_findMethodNative(env, clazz, targetClass, methodName,
|
||||||
methodSig);
|
methodSig);
|
||||||
}
|
}
|
||||||
|
|
||||||
static jboolean Yahfa_backupAndHookNative(JNI_START, jobject target,
|
LSP_DEF_NATIVE_METHOD(jboolean, Yahfa, backupAndHookNative, jobject target,
|
||||||
jobject hook, jobject backup) {
|
jobject hook, jobject backup) {
|
||||||
return Java_lab_galaxy_yahfa_HookMain_backupAndHookNative(env, clazz, target, hook, backup);
|
return Java_lab_galaxy_yahfa_HookMain_backupAndHookNative(env, clazz, target, hook, backup);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Yahfa_recordHooked(JNI_START, jobject member) {
|
LSP_DEF_NATIVE_METHOD(void, Yahfa, recordHooked, jobject member) {
|
||||||
lspd::recordHooked(getArtMethodYahfa(env, member));
|
lspd::recordHooked(getArtMethodYahfa(env, member));
|
||||||
}
|
}
|
||||||
|
|
||||||
static jboolean Yahfa_isHooked(JNI_START, jobject member) {
|
LSP_DEF_NATIVE_METHOD(jboolean, Yahfa, isHooked, jobject member) {
|
||||||
return lspd::isHooked(getArtMethodYahfa(env, member));
|
return lspd::isHooked(getArtMethodYahfa(env, member));
|
||||||
}
|
}
|
||||||
|
|
||||||
static JNINativeMethod gMethods[] = {
|
static JNINativeMethod gMethods[] = {
|
||||||
NATIVE_METHOD(Yahfa, init, "(I)V"),
|
LSP_NATIVE_METHOD(Yahfa, init, "(I)V"),
|
||||||
NATIVE_METHOD(Yahfa, findMethodNative,
|
LSP_NATIVE_METHOD(Yahfa, findMethodNative,
|
||||||
"(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/reflect/Member;"),
|
"(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/reflect/Member;"),
|
||||||
NATIVE_METHOD(Yahfa, backupAndHookNative,
|
LSP_NATIVE_METHOD(Yahfa, backupAndHookNative,
|
||||||
"(Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)Z"),
|
"(Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)Z"),
|
||||||
NATIVE_METHOD(Yahfa, recordHooked, "(Ljava/lang/reflect/Member;)V"),
|
LSP_NATIVE_METHOD(Yahfa, recordHooked, "(Ljava/lang/reflect/Member;)V"),
|
||||||
NATIVE_METHOD(Yahfa, isHooked, "(Ljava/lang/reflect/Member;)Z"),
|
LSP_NATIVE_METHOD(Yahfa, isHooked, "(Ljava/lang/reflect/Member;)Z")
|
||||||
};
|
};
|
||||||
|
|
||||||
void RegisterEdxpYahfa(JNIEnv *env) {
|
void RegisterEdxpYahfa(JNIEnv *env) {
|
||||||
REGISTER_EDXP_NATIVE_METHODS("io.github.lsposed.lspd.core.Yahfa");
|
REGISTER_EDXP_NATIVE_METHODS("io.github.lsposed.lspd.nativebridge.Yahfa");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ import android.content.res.TypedArray;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.BuildConfig;
|
import io.github.lsposed.lspd.BuildConfig;
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.config.LSPdConfigGlobal;
|
import io.github.lsposed.lspd.config.LSPdConfigGlobal;
|
||||||
|
|
||||||
import java.lang.reflect.AccessibleObject;
|
import java.lang.reflect.AccessibleObject;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import android.app.ActivityThread;
|
||||||
import android.app.AndroidAppHelper;
|
import android.app.AndroidAppHelper;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.ResourcesImpl;
|
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.content.res.XResources;
|
import android.content.res.XResources;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
@ -14,7 +13,7 @@ import android.util.ArraySet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.internal.os.ZygoteInit;
|
import com.android.internal.os.ZygoteInit;
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.config.LSPdConfigGlobal;
|
import io.github.lsposed.lspd.config.LSPdConfigGlobal;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import android.content.pm.ApplicationInfo;
|
||||||
import android.content.res.CompatibilityInfo;
|
import android.content.res.CompatibilityInfo;
|
||||||
import android.content.res.XResources;
|
import android.content.res.XResources;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.util.Hookers;
|
import io.github.lsposed.lspd.util.Hookers;
|
||||||
import io.github.lsposed.lspd.util.MetaDataReader;
|
import io.github.lsposed.lspd.util.MetaDataReader;
|
||||||
import io.github.lsposed.lspd.util.Utils;
|
import io.github.lsposed.lspd.util.Utils;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package io.github.lsposed.lspd._hooker.impl;
|
||||||
|
|
||||||
import android.app.LoadedApk;
|
import android.app.LoadedApk;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.hooker.XposedInstallerHooker;
|
import io.github.lsposed.lspd.hooker.XposedInstallerHooker;
|
||||||
import io.github.lsposed.lspd.util.Hookers;
|
import io.github.lsposed.lspd.util.Hookers;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package io.github.lsposed.lspd.config;
|
package io.github.lsposed.lspd.config;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.core.Yahfa;
|
import io.github.lsposed.lspd.nativebridge.Yahfa;
|
||||||
import io.github.lsposed.lspd.deopt.PrebuiltMethodsDeopter;
|
import io.github.lsposed.lspd.deopt.PrebuiltMethodsDeopter;
|
||||||
import io.github.lsposed.lspd.hook.HookProvider;
|
import io.github.lsposed.lspd.hook.HookProvider;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package io.github.lsposed.lspd.core.yahfa;
|
package io.github.lsposed.lspd.core.yahfa;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.art.Heap;
|
import io.github.lsposed.lspd.nativebridge.Heap;
|
||||||
import io.github.lsposed.lspd.core.Yahfa;
|
import io.github.lsposed.lspd.nativebridge.Yahfa;
|
||||||
import io.github.lsposed.lspd.util.Utils;
|
import io.github.lsposed.lspd.util.Utils;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package io.github.lsposed.lspd.deopt;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.config.LSPdConfigGlobal;
|
import io.github.lsposed.lspd.config.LSPdConfigGlobal;
|
||||||
import io.github.lsposed.lspd.util.Utils;
|
import io.github.lsposed.lspd.util.Utils;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import de.robv.android.xposed.XC_MethodReplacement;
|
||||||
import de.robv.android.xposed.XposedBridge;
|
import de.robv.android.xposed.XposedBridge;
|
||||||
import de.robv.android.xposed.XposedHelpers;
|
import de.robv.android.xposed.XposedHelpers;
|
||||||
import io.github.lsposed.lspd.BuildConfig;
|
import io.github.lsposed.lspd.BuildConfig;
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.core.EdxpImpl;
|
import io.github.lsposed.lspd.core.EdxpImpl;
|
||||||
import io.github.lsposed.lspd.core.Main;
|
import io.github.lsposed.lspd.core.Main;
|
||||||
import io.github.lsposed.lspd.util.Utils;
|
import io.github.lsposed.lspd.util.Utils;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package io.github.lsposed.lspd.art;
|
package io.github.lsposed.lspd.nativebridge;
|
||||||
|
|
||||||
import io.github.lsposed.common.KeepAll;
|
import io.github.lsposed.common.KeepAll;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package io.github.lsposed.lspd.config;
|
package io.github.lsposed.lspd.nativebridge;
|
||||||
|
|
||||||
public class ConfigManager {
|
public class ConfigManager {
|
||||||
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package io.github.lsposed.lspd.art;
|
package io.github.lsposed.lspd.nativebridge;
|
||||||
|
|
||||||
public class Heap {
|
public class Heap {
|
||||||
|
|
||||||
public static native int waitForGcToComplete();
|
public static native int waitForGcToComplete();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package io.github.lsposed.lspd.core;
|
package io.github.lsposed.lspd.nativebridge;
|
||||||
|
|
||||||
import java.lang.reflect.Member;
|
import java.lang.reflect.Member;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package io.github.lsposed.lspd.proxy;
|
package io.github.lsposed.lspd.proxy;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.deopt.PrebuiltMethodsDeopter;
|
import io.github.lsposed.lspd.deopt.PrebuiltMethodsDeopter;
|
||||||
import io.github.lsposed.lspd.util.Utils;
|
import io.github.lsposed.lspd.util.Utils;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ package io.github.lsposed.lspd.sandhook.config;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.art.ClassLinker;
|
import io.github.lsposed.lspd.nativebridge.ClassLinker;
|
||||||
import io.github.lsposed.lspd.config.BaseHookProvider;
|
import io.github.lsposed.lspd.config.BaseHookProvider;
|
||||||
import io.github.lsposed.lspd.core.ResourcesHook;
|
import io.github.lsposed.lspd.core.ResourcesHook;
|
||||||
import io.github.lsposed.lspd.core.Yahfa;
|
import io.github.lsposed.lspd.nativebridge.Yahfa;
|
||||||
import com.swift.sandhook.xposedcompat.XposedCompat;
|
import com.swift.sandhook.xposedcompat.XposedCompat;
|
||||||
import com.swift.sandhook.xposedcompat.methodgen.SandHookXposedBridge;
|
import com.swift.sandhook.xposedcompat.methodgen.SandHookXposedBridge;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import android.os.Build;
|
||||||
import io.github.lsposed.lspd.core.BaseEdxpImpl;
|
import io.github.lsposed.lspd.core.BaseEdxpImpl;
|
||||||
import io.github.lsposed.lspd.core.EdxpImpl;
|
import io.github.lsposed.lspd.core.EdxpImpl;
|
||||||
import io.github.lsposed.lspd.core.Main;
|
import io.github.lsposed.lspd.core.Main;
|
||||||
import io.github.lsposed.lspd.core.Yahfa;
|
import io.github.lsposed.lspd.nativebridge.Yahfa;
|
||||||
import com.swift.sandhook.xposedcompat.methodgen.SandHookXposedBridge;
|
import com.swift.sandhook.xposedcompat.methodgen.SandHookXposedBridge;
|
||||||
|
|
||||||
public class SandHookEdxpImpl extends BaseEdxpImpl {
|
public class SandHookEdxpImpl extends BaseEdxpImpl {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package io.github.lsposed.lspd.util;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
package io.github.lsposed.lspd.yahfa.config;
|
package io.github.lsposed.lspd.yahfa.config;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.art.ClassLinker;
|
import io.github.lsposed.lspd.nativebridge.ClassLinker;
|
||||||
import io.github.lsposed.lspd.config.BaseHookProvider;
|
import io.github.lsposed.lspd.config.BaseHookProvider;
|
||||||
import io.github.lsposed.lspd.core.ResourcesHook;
|
import io.github.lsposed.lspd.core.ResourcesHook;
|
||||||
import io.github.lsposed.lspd.core.Yahfa;
|
import io.github.lsposed.lspd.nativebridge.Yahfa;
|
||||||
import io.github.lsposed.lspd.yahfa.dexmaker.DynamicBridge;
|
import io.github.lsposed.lspd.yahfa.dexmaker.DynamicBridge;
|
||||||
|
|
||||||
import java.lang.reflect.Member;
|
import java.lang.reflect.Member;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import io.github.lsposed.lspd.core.BaseEdxpImpl;
|
||||||
import io.github.lsposed.lspd.core.EdxpImpl;
|
import io.github.lsposed.lspd.core.EdxpImpl;
|
||||||
import io.github.lsposed.lspd.core.Main;
|
import io.github.lsposed.lspd.core.Main;
|
||||||
import io.github.lsposed.lspd.core.Proxy;
|
import io.github.lsposed.lspd.core.Proxy;
|
||||||
import io.github.lsposed.lspd.core.Yahfa;
|
import io.github.lsposed.lspd.nativebridge.Yahfa;
|
||||||
import io.github.lsposed.lspd.proxy.NormalProxy;
|
import io.github.lsposed.lspd.proxy.NormalProxy;
|
||||||
import io.github.lsposed.lspd.proxy.Router;
|
import io.github.lsposed.lspd.proxy.Router;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package io.github.lsposed.lspd.yahfa.dexmaker;
|
package io.github.lsposed.lspd.yahfa.dexmaker;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.util.Utils;
|
import io.github.lsposed.lspd.util.Utils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import android.annotation.TargetApi;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.BuildConfig;
|
import io.github.lsposed.lspd.BuildConfig;
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.core.yahfa.HookMain;
|
import io.github.lsposed.lspd.core.yahfa.HookMain;
|
||||||
import io.github.lsposed.lspd.util.ProxyClassLoader;
|
import io.github.lsposed.lspd.util.ProxyClassLoader;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.swift.sandhook.xposedcompat;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.util.FileUtils;
|
import io.github.lsposed.lspd.util.FileUtils;
|
||||||
import io.github.lsposed.lspd.util.ProcessUtils;
|
import io.github.lsposed.lspd.util.ProcessUtils;
|
||||||
import io.github.lsposed.lspd.util.ProxyClassLoader;
|
import io.github.lsposed.lspd.util.ProxyClassLoader;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.swift.sandhook.xposedcompat.methodgen;
|
package com.swift.sandhook.xposedcompat.methodgen;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import com.swift.sandhook.SandHook;
|
import com.swift.sandhook.SandHook;
|
||||||
import com.swift.sandhook.SandHookMethodResolver;
|
import com.swift.sandhook.SandHookMethodResolver;
|
||||||
import com.swift.sandhook.wrapper.HookWrapper;
|
import com.swift.sandhook.wrapper.HookWrapper;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.swift.sandhook.xposedcompat.methodgen;
|
package com.swift.sandhook.xposedcompat.methodgen;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import com.swift.sandhook.SandHook;
|
import com.swift.sandhook.SandHook;
|
||||||
import com.swift.sandhook.wrapper.HookWrapper;
|
import com.swift.sandhook.wrapper.HookWrapper;
|
||||||
import com.swift.sandhook.xposedcompat.hookstub.HookStubManager;
|
import com.swift.sandhook.xposedcompat.hookstub.HookStubManager;
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ import android.os.Build;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.Trace;
|
import android.os.Trace;
|
||||||
|
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.core.Yahfa;
|
import io.github.lsposed.lspd.nativebridge.Yahfa;
|
||||||
import io.github.lsposed.lspd.util.ClassLoaderUtils;
|
import io.github.lsposed.lspd.util.ClassLoaderUtils;
|
||||||
import io.github.lsposed.lspd.util.FileUtils;
|
import io.github.lsposed.lspd.util.FileUtils;
|
||||||
import com.swift.sandhook.SandHook;
|
import com.swift.sandhook.SandHook;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
package com.swift.sandhook.xposedcompat.utils;
|
package com.swift.sandhook.xposedcompat.utils;
|
||||||
import io.github.lsposed.lspd.config.ConfigManager;
|
import io.github.lsposed.lspd.nativebridge.ConfigManager;
|
||||||
import io.github.lsposed.lspd.util.Utils;
|
import io.github.lsposed.lspd.util.Utils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue