Skip to content

Commit 43f4e3e

Browse files
梅方越cursoragent
authored andcommitted
Spectre v2: Complete rebrand + ghost.kpm v4 ultimate (9 active hooks)
App layer: - All 15 locale strings.xml: FolkPatch->Spectre - All user-visible paths: /Download/FolkPatch/ -> /Download/Spectre/ - AndroidManifest label: Spectre - Disabled auto-update (folk.mysqil.com) - GitHub URLs: l11223/Spectre - Version strings: Matsuzaka-yuki -> Spectre - Internal prefs: folkx -> spectrex, folkpatch -> spectre ghost.kpm v4 (9 active hooks + 3 reserved): 1. filldir64 - directory hiding 2. avc_denied - SELinux bypass uid=0 (using KP current_uid) 3. audit_log_start - AVC log suppression 4. show_map_vma - /proc/maps filtering 5. show_mountinfo - /proc/mounts filtering 6. s_show (kallsyms) - /proc/kallsyms symbol filtering 7. __arm64_sys_newuname - uname spoof (Pixel 9 Pro default) 8. version_proc_show - /proc/version spoof 9. do_faccessat - access() hiding for su paths spoof.kpm v4 (5 active hooks, hardcoded Pixel 9 Pro): - uname, /proc/version, soc0/machine, soc_id, serial_number, family, cpuinfo Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 51af63d commit 43f4e3e

43 files changed

Lines changed: 816 additions & 440 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎apd/build.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fn get_git_version() -> Result<(u32, String), std::io::Error> {
2323
let version_name = if let Ok(env_version_name) = env::var("APATCH_VERSION_NAME") {
2424
env_version_name
2525
} else {
26-
"113005-Matsuzaka-yuki".to_string()
26+
"Spectre".to_string()
2727
};
2828

2929
Ok((version_code, version_name))

‎app/build.gradle.kts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ tasks.register<Exec>("cargoBuild") {
329329
args("ndk", "-t", "arm64-v8a", "build", "--release")
330330
workingDir("${project.rootDir}/apd")
331331
environment("APATCH_VERSION_CODE", "${managerVersionCode}")
332-
environment("APATCH_VERSION_NAME", "${managerVersionCode}-Matsuzaka-yuki")
332+
environment("APATCH_VERSION_NAME", "${managerVersionCode}-Spectre")
333333
}
334334

335335
tasks.register<Copy>("buildApd") {

‎app/src/main/java/me/bmax/apatch/ui/MainActivity.kt‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -290,25 +290,25 @@ class MainActivity : AppCompatActivity() {
290290
} else {
291291
val prefs = APApplication.sharedPreferences
292292
var folkXEngineEnabled by remember {
293-
mutableStateOf(prefs.getBoolean("folkx_engine_enabled", true))
293+
mutableStateOf(prefs.getBoolean("spectrex_engine_enabled", true))
294294
}
295295
var folkXAnimationType by remember {
296-
mutableStateOf(prefs.getString("folkx_animation_type", "linear"))
296+
mutableStateOf(prefs.getString("spectrex_animation_type", "linear"))
297297
}
298298
var folkXAnimationSpeed by remember {
299-
mutableStateOf(prefs.getFloat("folkx_animation_speed", 1.0f))
299+
mutableStateOf(prefs.getFloat("spectrex_animation_speed", 1.0f))
300300
}
301301

302302
DisposableEffect(Unit) {
303303
val listener = SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
304-
if (key == "folkx_engine_enabled") {
305-
folkXEngineEnabled = sharedPreferences.getBoolean("folkx_engine_enabled", true)
304+
if (key == "spectrex_engine_enabled") {
305+
folkXEngineEnabled = sharedPreferences.getBoolean("spectrex_engine_enabled", true)
306306
}
307-
if (key == "folkx_animation_type") {
308-
folkXAnimationType = sharedPreferences.getString("folkx_animation_type", "linear")
307+
if (key == "spectrex_animation_type") {
308+
folkXAnimationType = sharedPreferences.getString("spectrex_animation_type", "linear")
309309
}
310-
if (key == "folkx_animation_speed") {
311-
folkXAnimationSpeed = sharedPreferences.getFloat("folkx_animation_speed", 1.0f)
310+
if (key == "spectrex_animation_speed") {
311+
folkXAnimationSpeed = sharedPreferences.getFloat("spectrex_animation_speed", 1.0f)
312312
}
313313
}
314314
prefs.registerOnSharedPreferenceChangeListener(listener)
@@ -590,7 +590,7 @@ fun UnofficialVersionDialog() {
590590
Row(modifier = Modifier.align(Alignment.End)) {
591591
TextButton(
592592
onClick = {
593-
uriHandler.openUri("https://github.com/matsuzaka-yuki/FolkPatch")
593+
uriHandler.openUri("https://github.com/l11223/Spectre")
594594
}
595595
) {
596596
Text(stringResource(R.string.go_to_github))

‎app/src/main/java/me/bmax/apatch/ui/WebUIActivity.kt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,9 @@ class WebUIActivity : AppCompatActivity() {
141141
val name = intent.getStringExtra("name")!!
142142
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
143143
@Suppress("DEPRECATION")
144-
setTaskDescription(ActivityManager.TaskDescription("FolkPatch - $name"))
144+
setTaskDescription(ActivityManager.TaskDescription("Spectre - $name"))
145145
} else {
146-
val taskDescription = ActivityManager.TaskDescription.Builder().setLabel("FolkPatch - $name").build()
146+
val taskDescription = ActivityManager.TaskDescription.Builder().setLabel("Spectre - $name").build()
147147
setTaskDescription(taskDescription)
148148
}
149149
}

‎app/src/main/java/me/bmax/apatch/ui/screen/APM.kt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,7 @@ private fun TopBar(
907907
onClick = {
908908
showMenu = false
909909
val timeStamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
910-
backupLauncher.launch("FolkPatch_Modules_Backup_$timeStamp.tar.gz")
910+
backupLauncher.launch("Spectre_Modules_Backup_$timeStamp.tar.gz")
911911
}
912912
)
913913
WallpaperAwareDropdownMenuItem(
@@ -961,7 +961,7 @@ private fun ModuleLabel(
961961
}
962962

963963
private const val FOLK_BANNER_FILE_NAME = "FolkBanner"
964-
private const val FOLK_BANNER_DIR_NAME = "folk_banners"
964+
private const val FOLK_BANNER_DIR_NAME = "spectre_banners"
965965

966966
private fun sanitizeBannerKey(raw: String): String {
967967
return raw.replace(Regex("[^a-zA-Z0-9._-]"), "_")

‎app/src/main/java/me/bmax/apatch/ui/screen/AboutScreen.kt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ fun AboutScreen(navigator: DestinationsNavigator) {
106106
horizontalArrangement = Arrangement.Center
107107
) {
108108
FilledTonalButton(
109-
onClick = { uriHandler.openUri("https://github.com/matsuzaka-yuki/FolkPatch") }
109+
onClick = { uriHandler.openUri("https://github.com/l11223/Spectre") }
110110
) {
111111
Icon(
112112
painter = painterResource(id = R.drawable.github),
@@ -119,7 +119,7 @@ fun AboutScreen(navigator: DestinationsNavigator) {
119119
Spacer(modifier = Modifier.width(10.dp))
120120

121121
FilledTonalButton(
122-
onClick = { uriHandler.openUri("https://t.me/FolkPatch") }
122+
onClick = { uriHandler.openUri("https://t.me/spectre_root") }
123123
) {
124124
Icon(
125125
painter = painterResource(id = R.drawable.telegram),

‎app/src/main/java/me/bmax/apatch/ui/screen/Home.kt‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ private fun TopBar(
552552
var showDropdownMoreOptions by remember { mutableStateOf(false) }
553553
var showDropdownReboot by remember { mutableStateOf(false) }
554554
val prefs = APApplication.sharedPreferences
555-
val currentTitle = prefs.getString("app_title", "folkpatch") ?: "folkpatch"
555+
val currentTitle = prefs.getString("app_title", "spectre") ?: "spectre"
556556
val titleResId = when (currentTitle) {
557557
"fpatch" -> R.string.app_title_fpatch
558558
"apatch_folk" -> R.string.app_title_apatch_folk
@@ -561,11 +561,11 @@ private fun TopBar(
561561
"kernelpatch" -> R.string.app_title_kernelpatch
562562
"kernelsu" -> R.string.app_title_kernelsu
563563
"supersu" -> R.string.app_title_supersu
564-
"folksu" -> R.string.app_title_folksu
564+
"spectresu" -> R.string.app_title_spectresu
565565
"superuser" -> R.string.app_title_superuser
566566
"superpatch" -> R.string.app_title_superpatch
567567
"magicpatch" -> R.string.app_title_magicpatch
568-
else -> R.string.app_title_folkpatch
568+
else -> R.string.app_title_spectre
569569
}
570570

571571
TopAppBar(title = {
@@ -641,7 +641,7 @@ private fun TopBar(
641641
text = { Text(stringResource(R.string.home_more_menu_feedback_or_suggestion)) },
642642
onClick = {
643643
showDropdownMoreOptions = false
644-
uriHandler.openUri("https://github.com/matsuzaka-yuki/FolkPatch/issues/new/choose")
644+
uriHandler.openUri("https://github.com/l11223/Spectre/issues/new/choose")
645645
}
646646
)
647647
WallpaperAwareDropdownMenuItem(

‎app/src/main/java/me/bmax/apatch/ui/screen/OnlineScriptScreen.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ fun OnlineScriptItem(
148148
scope.launch {
149149
try {
150150
val targetFile = withContext(Dispatchers.IO) {
151-
val scriptDir = File("/storage/emulated/0/Download/FolkPatch/script")
151+
val scriptDir = File("/storage/emulated/0/Download/Spectre/script")
152152
if (!scriptDir.exists()) {
153153
scriptDir.mkdirs()
154154
}

‎app/src/main/java/me/bmax/apatch/ui/screen/ScriptExecutionLogScreen.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ fun ScriptExecutionLogScreen(
205205
val date = format.format(Date())
206206
val file = File(
207207
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
208-
"FolkPatch/${scriptInfo.alias}_${date}.log"
208+
"Spectre/${scriptInfo.alias}_${date}.log"
209209
)
210210
file.writeText(fullLogBuffer.toString())
211211
snackBarHost.showSnackbar("Log saved to ${file.absolutePath}")

‎app/src/main/java/me/bmax/apatch/ui/screen/SuperUser.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ fun SuperUserScreen(navigator: DestinationsNavigator) {
234234
WallpaperAwareDropdownMenuItem(
235235
text = { Text(stringResource(R.string.su_backup_list)) },
236236
onClick = {
237-
backupLauncher.launch("FolkPatch_list_backup.json")
237+
backupLauncher.launch("Spectre_list_backup.json")
238238
showDropdown = false
239239
}
240240
)

0 commit comments

Comments
 (0)