diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 251f479..895427b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,7 +31,7 @@ diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/helper/AppTalker.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/helper/AppTalker.kt index 2d7b71d..09e2bfc 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/helper/AppTalker.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/helper/AppTalker.kt @@ -3,9 +3,11 @@ package moe.fuqiuluo.shamrock.xposed.helper import android.content.ContentValues import android.net.Uri import mqq.app.MobileQQ +import kotlin.random.Random internal object AppTalker { - private val URI = Uri.parse("content://moe.fuqiuluo.xqbot.provider") + val uriName = "content://moe.fuqiuluo.108.provider" // 你是真的闲,这都上个检测 + val URI = Uri.parse(uriName) fun talk(values: ContentValues, onFailure: ((Throwable) -> Unit)? = null) { val ctx = MobileQQ.getContext() 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 8d1e7c0..ead260a 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,9 +1,12 @@ @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 @@ -15,6 +18,7 @@ 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 @@ -25,12 +29,26 @@ class AntiDetection: IAction { override fun invoke(ctx: Context) { antiFindPackage(ctx) + antiProviderDetection() antiNativeDetection() if (ShamrockConfig.isAntiTrace()) antiTrace() antiMemoryWalking() } + private fun antiProviderDetection() { + ContentResolver::class.java.hookMethod("acquireContentProviderClient").before { + val uri = it.args[0] as String + if (uri == "moe.fuqiuluo.108.provider" || uri == "moe.fuqiuluo.xqbot.provider") { + it.result = null + LogCenter.log("AntiDetection: 检测到对Shamrock的检测,欺骗ContentResolver", Level.WARN) + } + //else { + // LogCenter.log(uri) + //} + } + } + val isModuleStack = fun String.(): Boolean { return contains("fuqiuluo") || contains("shamrock") || contains("whitechi") || contains("lsposed") || contains("xposed") }