禁止版本9.0.20基于getPackageGids的检测 (#263)

* 禁止基于getPackageGids的检测
This commit is contained in:
赵怡然 2024-02-29 01:19:49 +08:00 committed by GitHub
parent bbdb0a65fb
commit e96c356de4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

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