Shamrock: Anti Provider Detection

This commit is contained in:
白池 2024-02-02 09:12:36 +08:00
parent a22dc50f14
commit 262af4108b
3 changed files with 22 additions and 2 deletions

View File

@ -31,7 +31,7 @@
<provider
android:name=".ui.service.internal.MultifunctionalProvider"
android:authorities="moe.fuqiuluo.xqbot.provider"
android:authorities="moe.fuqiuluo.108.provider"
android:exported="true"
android:grantUriPermissions="true"
tools:ignore="ExportedContentProvider" />

View File

@ -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()

View File

@ -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")
}