diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/hooks/AntiDetection.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/hooks/AntiDetection.kt index ead260a..ad94175 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/hooks/AntiDetection.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/hooks/AntiDetection.kt @@ -1,12 +1,10 @@ @file:Suppress("UNCHECKED_CAST", "LocalVariableName") package moe.fuqiuluo.shamrock.xposed.hooks -import android.content.ContentProviderClient import android.content.ContentResolver import android.content.Context import android.content.pm.PackageManager import android.content.pm.VersionedPackage -import android.net.Uri import android.os.Build import android.os.Looper import de.robv.android.xposed.XC_MethodReplacement @@ -18,7 +16,6 @@ import moe.fuqiuluo.shamrock.remote.service.config.ShamrockConfig import moe.fuqiuluo.shamrock.tools.MethodHooker import moe.fuqiuluo.shamrock.tools.hookMethod import moe.fuqiuluo.shamrock.xposed.XposedEntry -import moe.fuqiuluo.shamrock.xposed.helper.AppTalker import moe.fuqiuluo.shamrock.xposed.loader.LuoClassloader import moe.fuqiuluo.shamrock.xposed.loader.NativeLoader import moe.fuqiuluo.symbols.XposedHook @@ -28,7 +25,10 @@ class AntiDetection: IAction { private external fun antiNativeDetections(): Boolean override fun invoke(ctx: Context) { - antiFindPackage(ctx) + try { + antiFindPackage(ctx) + }catch(_:Throwable){ } //某个大聪明在外面隐藏了shamrock,导致这个代码抛出异常,俺不说是谁>_< + antiGetPackageGidsDetection(ctx) antiProviderDetection() antiNativeDetection() if (ShamrockConfig.isAntiTrace()) @@ -36,6 +36,18 @@ class AntiDetection: IAction { antiMemoryWalking() } + private fun antiGetPackageGidsDetection(ctx: Context) { + //通过 android.content.pm.PackageManager->getPackageGids(Ljava/lang/String;)[I 扫 moe.fuqiuluo.shamrock + ctx.packageManager::class.java.hookMethod("getPackageGids").before { + val packageName = it.args[0] as String + if (packageName == "moe.fuqiuluo.shamrock") { + it.result = null + it.throwable = PackageManager.NameNotFoundException(packageName) + LogCenter.log("AntiDetection: 检测到对Shamrock的检测,欺骗GetPackageGids") + } + } + } + private fun antiProviderDetection() { ContentResolver::class.java.hookMethod("acquireContentProviderClient").before { val uri = it.args[0] as String