禁止版本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") @file:Suppress("UNCHECKED_CAST", "LocalVariableName")
package moe.fuqiuluo.shamrock.xposed.hooks package moe.fuqiuluo.shamrock.xposed.hooks
import android.content.ContentProviderClient
import android.content.ContentResolver import android.content.ContentResolver
import android.content.Context import android.content.Context
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.content.pm.VersionedPackage import android.content.pm.VersionedPackage
import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Looper import android.os.Looper
import de.robv.android.xposed.XC_MethodReplacement 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.MethodHooker
import moe.fuqiuluo.shamrock.tools.hookMethod import moe.fuqiuluo.shamrock.tools.hookMethod
import moe.fuqiuluo.shamrock.xposed.XposedEntry 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.LuoClassloader
import moe.fuqiuluo.shamrock.xposed.loader.NativeLoader import moe.fuqiuluo.shamrock.xposed.loader.NativeLoader
import moe.fuqiuluo.symbols.XposedHook import moe.fuqiuluo.symbols.XposedHook
@ -28,7 +25,10 @@ class AntiDetection: IAction {
private external fun antiNativeDetections(): Boolean private external fun antiNativeDetections(): Boolean
override fun invoke(ctx: Context) { override fun invoke(ctx: Context) {
antiFindPackage(ctx) try {
antiFindPackage(ctx)
}catch(_:Throwable){ } //某个大聪明在外面隐藏了shamrock导致这个代码抛出异常俺不说是谁>_<
antiGetPackageGidsDetection(ctx)
antiProviderDetection() antiProviderDetection()
antiNativeDetection() antiNativeDetection()
if (ShamrockConfig.isAntiTrace()) if (ShamrockConfig.isAntiTrace())
@ -36,6 +36,18 @@ class AntiDetection: IAction {
antiMemoryWalking() 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() { private fun antiProviderDetection() {
ContentResolver::class.java.hookMethod("acquireContentProviderClient").before { ContentResolver::class.java.hookMethod("acquireContentProviderClient").before {
val uri = it.args[0] as String val uri = it.args[0] as String