From 79f2594a2f3c1dc20a95a160ffbb20fce09b7179 Mon Sep 17 00:00:00 2001 From: WhiteChi Date: Sun, 29 Oct 2023 18:04:03 +0800 Subject: [PATCH] =?UTF-8?q?`Shamrock`:=20=E6=9B=B4=E6=96=B0=E5=8F=8D?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: WhiteChi --- .../service/api/GlobalEventTransmitter.kt | 3 +- .../shamrock/xposed/actions/AntiDetection.kt | 34 +++++++++++++++++++ .../shamrock/xposed/loader/ActionLoader.kt | 1 + 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/actions/AntiDetection.kt diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/GlobalEventTransmitter.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/GlobalEventTransmitter.kt index a65bc89..da1a2a5 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/GlobalEventTransmitter.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/GlobalEventTransmitter.kt @@ -345,7 +345,8 @@ internal object GlobalEventTransmitter: BaseSvc() { @ShamrockDsl suspend inline fun onNoticeEvent(collector: FlowCollector) { - noticeEventFlow.collect(collector) + noticeEventFlow + .collect(collector) } } diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/actions/AntiDetection.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/actions/AntiDetection.kt new file mode 100644 index 0000000..6d09116 --- /dev/null +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/actions/AntiDetection.kt @@ -0,0 +1,34 @@ +@file:Suppress("UNCHECKED_CAST") +package moe.fuqiuluo.shamrock.xposed.actions + +import android.content.Context +import moe.fuqiuluo.shamrock.tools.hookMethod +import java.lang.Exception + +/** + * 反检测 + */ +class AntiDetection: IAction { + override fun invoke(ctx: Context) { + Thread::class.java.hookMethod("getStackTrace").after { + val result = it.result as Array + it.result = result.filter { + !it.className.contains("fuqiuluo") && !it.className.contains("shamrock") + }.toTypedArray() + } + + Throwable::class.java.hookMethod("getStackTrace").after { + val result = it.result as Array + it.result = result.filter { + !it.className.contains("fuqiuluo") && !it.className.contains("shamrock") + }.toTypedArray() + } + + Throwable::class.java.hookMethod("getOurStackTrace").after { + val result = it.result as Array + it.result = result.filter { + !it.className.contains("fuqiuluo") && !it.className.contains("shamrock") + }.toTypedArray() + } + } +} \ No newline at end of file diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/loader/ActionLoader.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/loader/ActionLoader.kt index cb1005f..9bec8e9 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/loader/ActionLoader.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/loader/ActionLoader.kt @@ -8,6 +8,7 @@ import kotlin.reflect.full.createInstance object ActionLoader { private val ACTION_FIRST_LIST = arrayOf( + AntiDetection::class, DataReceiver::class, // 注册一个接收数据的动态广播 IpcService::class, PullConfig::class, // 从APP进程拉扯配置文件