mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
Shamrock
: 允许禁止QQ启动无关紧要的进程服务
This commit is contained in:
parent
cf943fd13a
commit
494b1f1fd0
@ -229,6 +229,16 @@ object ShamrockConfig {
|
||||
return preferences.getBoolean("anti_qq_trace", true)
|
||||
}
|
||||
|
||||
fun isForbidUselessProcess(ctx: Context): Boolean {
|
||||
val preferences = ctx.getSharedPreferences("config", 0)
|
||||
return preferences.getBoolean("forbid_useless_process", false)
|
||||
}
|
||||
|
||||
fun setForbidUselessProcess(ctx: Context, v: Boolean) {
|
||||
val preferences = ctx.getSharedPreferences("config", 0)
|
||||
preferences.edit().putBoolean("forbid_useless_process", v).apply()
|
||||
}
|
||||
|
||||
fun setAntiTrace(ctx: Context, v: Boolean) {
|
||||
val preferences = ctx.getSharedPreferences("config", 0)
|
||||
preferences.edit().putBoolean("anti_qq_trace", v).apply()
|
||||
@ -333,6 +343,7 @@ object ShamrockConfig {
|
||||
"alive_reply" to preferences.getBoolean("alive_reply", false),
|
||||
"enable_sync_msg_as_sent_msg" to preferences.getBoolean("enable_sync_msg_as_sent_msg", false),
|
||||
"disable_auto_sync_setting" to preferences.getBoolean("disable_auto_sync_setting", false),
|
||||
"forbid_useless_process" to preferences.getBoolean("forbid_useless_process", false)
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -100,17 +100,16 @@ fun LabFragment() {
|
||||
thickness = 0.2.dp
|
||||
)
|
||||
|
||||
/*
|
||||
Function(
|
||||
title = "自动清理QQ垃圾",
|
||||
desc = "也许会导致奇怪的问题(无效)。",
|
||||
title = "禁止无用进程",
|
||||
desc = "禁止QQ生成无用进程浪费内存",
|
||||
descColor = color,
|
||||
isSwitch = ShamrockConfig.isAutoClean(ctx)
|
||||
isSwitch = ShamrockConfig.isForbidUselessProcess(ctx)
|
||||
) {
|
||||
ShamrockConfig.setAutoClean(ctx, it)
|
||||
ShamrockConfig.setForbidUselessProcess(ctx, it)
|
||||
ShamrockConfig.pushUpdate(ctx)
|
||||
return@Function false
|
||||
}*/
|
||||
return@Function true
|
||||
}
|
||||
|
||||
Function(
|
||||
title = "自回复测试",
|
||||
|
@ -76,6 +76,7 @@ internal object ShamrockConfig {
|
||||
putBoolean("enable_self_msg", intent.getBooleanExtra("enable_self_msg", false)) // 推送自己发的消息
|
||||
putBoolean("shell", intent.getBooleanExtra("shell", false)) // 开启Shell接口
|
||||
putBoolean("enable_sync_msg_as_sent_msg", intent.getBooleanExtra("enable_sync_msg_as_sent_msg", false)) // 推送同步消息
|
||||
putBoolean("forbid_useless_process", intent.getBooleanExtra("forbid_useless_process", false)) // 禁用QQ生成无用进程
|
||||
}
|
||||
Config.defaultToken = intent.getStringExtra("token")
|
||||
Config.antiTrace = intent.getBooleanExtra("anti_qq_trace", true)
|
||||
@ -126,6 +127,10 @@ internal object ShamrockConfig {
|
||||
return mmkv.getBoolean("enable_self_msg", false)
|
||||
}
|
||||
|
||||
fun forbidUselessProcess(): Boolean {
|
||||
return mmkv.getBoolean("forbid_useless_process", false)
|
||||
}
|
||||
|
||||
fun openWebSocketClient(): Boolean {
|
||||
return mmkv.getBoolean("ws_client", false)
|
||||
}
|
||||
|
@ -1,10 +1,14 @@
|
||||
package moe.fuqiuluo.shamrock.xposed
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Process
|
||||
import de.robv.android.xposed.IXposedHookLoadPackage
|
||||
import de.robv.android.xposed.XposedBridge
|
||||
import de.robv.android.xposed.callbacks.XC_LoadPackage
|
||||
import de.robv.android.xposed.XposedBridge.log
|
||||
import moe.fuqiuluo.shamrock.helper.Level
|
||||
import moe.fuqiuluo.shamrock.helper.LogCenter
|
||||
import moe.fuqiuluo.shamrock.remote.service.config.ShamrockConfig
|
||||
import moe.fuqiuluo.shamrock.utils.MMKVFetcher
|
||||
import moe.fuqiuluo.shamrock.xposed.loader.KeepAlive
|
||||
import moe.fuqiuluo.shamrock.xposed.loader.LuoClassloader
|
||||
@ -15,12 +19,14 @@ import moe.fuqiuluo.shamrock.xposed.hooks.runFirstActions
|
||||
import mqq.app.MobileQQ
|
||||
import java.lang.reflect.Field
|
||||
import java.lang.reflect.Modifier
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
internal const val PACKAGE_NAME_QQ = "com.tencent.mobileqq"
|
||||
internal const val PACKAGE_NAME_QQ_INTERNATIONAL = "com.tencent.mobileqqi"
|
||||
internal const val PACKAGE_NAME_QQ_LITE = "com.tencent.qqlite"
|
||||
internal const val PACKAGE_NAME_TIM = "com.tencent.tim"
|
||||
private const val PACKAGE_NAME_QQ = "com.tencent.mobileqq"
|
||||
private const val PACKAGE_NAME_QQ_INTERNATIONAL = "com.tencent.mobileqqi"
|
||||
private const val PACKAGE_NAME_QQ_LITE = "com.tencent.qqlite"
|
||||
private const val PACKAGE_NAME_TIM = "com.tencent.tim"
|
||||
|
||||
private val uselessProcess = listOf("peak", "tool", "mini", "qzone")
|
||||
|
||||
internal class XposedEntry: IXposedHookLoadPackage {
|
||||
companion object {
|
||||
@ -121,9 +127,7 @@ internal class XposedEntry: IXposedHookLoadPackage {
|
||||
System.setProperty("qxbot_flag", "1")
|
||||
} else return
|
||||
|
||||
log("Process Name = " + MobileQQ.getMobileQQ().qqProcessName)
|
||||
|
||||
PlatformUtils.isTim()
|
||||
val processName = MobileQQ.getMobileQQ().qqProcessName
|
||||
|
||||
// MSG LISTENER 进程运行在主进程
|
||||
// API 也应该开放在主进程
|
||||
@ -134,6 +138,20 @@ internal class XposedEntry: IXposedHookLoadPackage {
|
||||
MMKVFetcher.initMMKV(ctx)
|
||||
}
|
||||
|
||||
if (ShamrockConfig.forbidUselessProcess()) {
|
||||
if(uselessProcess.any {
|
||||
processName.contains(it, ignoreCase = true)
|
||||
}) {
|
||||
log("[Shamrock] Useless process detected: $processName, exit.")
|
||||
Process.killProcess(Process.myPid())
|
||||
exitProcess(0)
|
||||
}
|
||||
} else {
|
||||
log("[Shamrock] Useless process detection is disabled.")
|
||||
}
|
||||
|
||||
log("Process Name = $processName")
|
||||
|
||||
runFirstActions(ctx)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user