mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-06-12 21:27:47 +02:00
fix: remove spoofer from stable
This commit is contained in:
@ -215,18 +215,6 @@
|
||||
"unlimited_multi_snap": {
|
||||
"name": "سناب متعدد غير محدود",
|
||||
"description": "يسمح لك بأخذ كمية غير محدودة من السنابات المتعددة"
|
||||
},
|
||||
"device_spoof": {
|
||||
"name": "خداع قِيَم الجهاز",
|
||||
"description": "محاكاة لقيم الأجهزة"
|
||||
},
|
||||
"device_fingerprint": {
|
||||
"name": "بصمة الجهاز",
|
||||
"description": "Spoofs the device fingerprint"
|
||||
},
|
||||
"android_id": {
|
||||
"name": "Android ID",
|
||||
"description": "Spoofs the devices Android ID"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
@ -418,8 +406,7 @@
|
||||
"clear_cache_title": "تنظيف ذاكرة التخزين المؤقت",
|
||||
"reset_all_title": "إعادة تعيين كل الإعدادات",
|
||||
"reset_all_confirmation": "هل أنت متأكد من أنك تريد إعادة تعيين كل الإعدادات؟",
|
||||
"success_toast": "نجح!",
|
||||
"device_spoofer": "خداع الجهاز"
|
||||
"success_toast": "نجح!"
|
||||
}
|
||||
},
|
||||
"download_processor": {
|
||||
@ -440,8 +427,5 @@
|
||||
"title": "إعدادات SnapEnhance",
|
||||
"selected_text": "{count} المحدد",
|
||||
"invalid_number_toast": "رقم غير صالح!"
|
||||
},
|
||||
"spoof_activity": {
|
||||
"title": "خداع الإعدادات"
|
||||
}
|
||||
}
|
@ -215,18 +215,6 @@
|
||||
"unlimited_multi_snap": {
|
||||
"name": "Unbegrenzte Multi-Snaps",
|
||||
"description": "Ermöglicht die Aufnahme einer unbegrenzten Anzahl von Multi-Snaps"
|
||||
},
|
||||
"device_spoof": {
|
||||
"name": "Device Values Spoofen",
|
||||
"description": "Spoofed bestimmte Werte des Geräts"
|
||||
},
|
||||
"device_fingerprint": {
|
||||
"name": "Gerät Fingerabdruck",
|
||||
"description": "Spoofed den Geräte-Fingerabdruck"
|
||||
},
|
||||
"android_id": {
|
||||
"name": "Android ID",
|
||||
"description": "Spoofed die Android-ID"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
@ -418,8 +406,7 @@
|
||||
"clear_cache_title": "Lösche den Zwischenspeicher",
|
||||
"reset_all_title": "Alle Einstellungen zurücksetzen",
|
||||
"reset_all_confirmation": "Bist du sicher, dass du alle Einstellungen zurücksetzen möchten?",
|
||||
"success_toast": "Erfolgreich!",
|
||||
"device_spoofer": "Device Spoofer"
|
||||
"success_toast": "Erfolgreich!"
|
||||
}
|
||||
},
|
||||
"download_processor": {
|
||||
@ -440,8 +427,5 @@
|
||||
"title": "SnapEnhance Einstellungen",
|
||||
"selected_text": "{count} ausgewählt",
|
||||
"invalid_number_toast": "Ungültige Nummer!"
|
||||
},
|
||||
"spoof_activity": {
|
||||
"title": "Spoof Einstellungen"
|
||||
}
|
||||
}
|
@ -226,18 +226,6 @@
|
||||
"no_friend_score_delay": {
|
||||
"name": "No Friend Score Delay",
|
||||
"description": "Removes the delay in displaying friends scores. It will be updated immediately when you open a profile page"
|
||||
},
|
||||
"device_spoof": {
|
||||
"name": "Spoof Device Values",
|
||||
"description": "Spoofs the devices values"
|
||||
},
|
||||
"device_fingerprint": {
|
||||
"name": "Device Fingerprint",
|
||||
"description": "Spoofs the device fingerprint"
|
||||
},
|
||||
"android_id": {
|
||||
"name": "Android ID",
|
||||
"description": "Spoofs the devices Android ID"
|
||||
}
|
||||
},
|
||||
|
||||
@ -442,8 +430,7 @@
|
||||
"clear_cache_title": "Clear Cache",
|
||||
"reset_all_title": "Reset all settings",
|
||||
"reset_all_confirmation": "Are you sure you want to reset all settings?",
|
||||
"success_toast": "Success!",
|
||||
"device_spoofer": "Device Spoofer"
|
||||
"success_toast": "Success!"
|
||||
}
|
||||
},
|
||||
"download_processor": {
|
||||
@ -464,8 +451,5 @@
|
||||
"title": "SnapEnhance Settings",
|
||||
"selected_text": "{count} selected",
|
||||
"invalid_number_toast": "Invalid number!"
|
||||
},
|
||||
"spoof_activity": {
|
||||
"title": "Spoof Settings"
|
||||
}
|
||||
}
|
@ -215,18 +215,6 @@
|
||||
"unlimited_multi_snap": {
|
||||
"name": "Multi Snap illimité",
|
||||
"description": "Vous permet d'avoir un nombre illimité de multi snap"
|
||||
},
|
||||
"device_spoof": {
|
||||
"name": "Falsifier les valeures de l'appareil",
|
||||
"description": "Falsifie les valeures de l'appareil"
|
||||
},
|
||||
"device_fingerprint": {
|
||||
"name": "Empreinte numérique de l’appareil",
|
||||
"description": "Falsifie l'empreinte numérique de l'appareil"
|
||||
},
|
||||
"android_id": {
|
||||
"name": "Identifiant Android",
|
||||
"description": "Falsifie l'identifiant Android"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
@ -418,8 +406,7 @@
|
||||
"clear_cache_title": "Vider le cache",
|
||||
"reset_all_title": "Réinitialiser tous les réglages",
|
||||
"reset_all_confirmation": "Êtes vous sûr de vouloir réinitialiser tous les réglages?",
|
||||
"success_toast": "Succèss!",
|
||||
"device_spoofer": "Falsification de l'appareil"
|
||||
"success_toast": "Succèss!"
|
||||
}
|
||||
},
|
||||
"download_processor": {
|
||||
@ -440,8 +427,5 @@
|
||||
"title": "Réglages de SnapEnhance",
|
||||
"selected_text": "{count} élément(s) sélectionné(s)",
|
||||
"invalid_number_toast": "Numéro invalide!"
|
||||
},
|
||||
"spoof_activity": {
|
||||
"title": "Paramètres du Falsificateur"
|
||||
}
|
||||
}
|
@ -215,18 +215,6 @@
|
||||
"unlimited_multi_snap": {
|
||||
"name": "अनलिमिटेड मल्टी स्नैप भेजे",
|
||||
"description": "आपको अनलिमिटेड मल्टी स्नैप भेजने दे"
|
||||
},
|
||||
"device_spoof": {
|
||||
"name": "डिवाइस की वैल्यू बदले",
|
||||
"description": "डिवाइस की वैल्यू छुपाये"
|
||||
},
|
||||
"device_fingerprint": {
|
||||
"name": "डिवाइस की फिंगगर्प्रिन्ट",
|
||||
"description": "डिवाइस की फिंगगर्प्रिन्ट बदले"
|
||||
},
|
||||
"android_id": {
|
||||
"name": "एंड्रॉयड आइडी",
|
||||
"description": "एंड्रॉयड की आइडी बदले"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
@ -418,8 +406,7 @@
|
||||
"clear_cache_title": "कैश को साफ़ करें",
|
||||
"reset_all_title": "सभी सेटिंग्स रीसेट करें",
|
||||
"reset_all_confirmation": "क्या आप वाकई सभी सेटिंग्स को रीसेट करना चाहते हैं?",
|
||||
"success_toast": "सफलता!",
|
||||
"device_spoofer": "डिवाइस छुपाये"
|
||||
"success_toast": "सफलता!"
|
||||
}
|
||||
},
|
||||
"download_processor": {
|
||||
@ -440,8 +427,5 @@
|
||||
"title": "SnapEnhance सेटिंग्स",
|
||||
"selected_text": "{count} चयनित",
|
||||
"invalid_number_toast": "अमान्य संख्या!"
|
||||
},
|
||||
"spoof_activity": {
|
||||
"title": "स्पूफ सेटिंग्स"
|
||||
}
|
||||
}
|
@ -215,18 +215,6 @@
|
||||
"unlimited_multi_snap": {
|
||||
"name": "Korlátlan Multi Snap",
|
||||
"description": "Lehetővé teszi, hogy korlátlan számú többszörös pillanatfelvételt készítsen"
|
||||
},
|
||||
"device_spoof": {
|
||||
"name": "Eszközértékek hamisítása",
|
||||
"description": "Meghamisítja az eszközök értékeit"
|
||||
},
|
||||
"device_fingerprint": {
|
||||
"name": "Eszköz Ujjlenyomata",
|
||||
"description": "Eszköz ujjlenyomatának meghamisítása"
|
||||
},
|
||||
"android_id": {
|
||||
"name": "Android Azonosítója",
|
||||
"description": "Meghamísítja az eszköz Android Azonosítóját"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
@ -418,8 +406,7 @@
|
||||
"clear_cache_title": "Gyorsítótár törlése",
|
||||
"reset_all_title": "Beállítások visszaállítása",
|
||||
"reset_all_confirmation": "Biztos alapra szeretnéd helyezni?",
|
||||
"success_toast": "Siker!",
|
||||
"device_spoofer": "Eszköz hamisító"
|
||||
"success_toast": "Siker!"
|
||||
}
|
||||
},
|
||||
"download_processor": {
|
||||
@ -440,8 +427,5 @@
|
||||
"title": "SnapEnhance Beállítások",
|
||||
"selected_text": "{count} kiváltasztva",
|
||||
"invalid_number_toast": "Érvénytelen szám!"
|
||||
},
|
||||
"spoof_activity": {
|
||||
"title": "Hamisítási Beállítások"
|
||||
}
|
||||
}
|
@ -215,18 +215,6 @@
|
||||
"unlimited_multi_snap": {
|
||||
"name": "Snap Multipli Illimitati",
|
||||
"description": "Ti consente di scattare una quantità illimitata di scatti multipli"
|
||||
},
|
||||
"device_spoof": {
|
||||
"name": "Falsifica Valori Dispositivo",
|
||||
"description": "Falsifica i valori del dispositivo"
|
||||
},
|
||||
"device_fingerprint": {
|
||||
"name": "Impronta Digitale del Dispositivo",
|
||||
"description": "Falsifica l'impronta digitale del dispositivo"
|
||||
},
|
||||
"android_id": {
|
||||
"name": "ID Android",
|
||||
"description": "Falsifica gli ID Android dei dispositivi"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
@ -418,8 +406,7 @@
|
||||
"clear_cache_title": "Svuota la Cache",
|
||||
"reset_all_title": "Ripristina tutte le impostazioni",
|
||||
"reset_all_confirmation": "Sei sicuro di voler ripristinare tutte le impostazioni?",
|
||||
"success_toast": "Successo!",
|
||||
"device_spoofer": "Falsificatore Dispositivo"
|
||||
"success_toast": "Successo!"
|
||||
}
|
||||
},
|
||||
"download_processor": {
|
||||
@ -440,8 +427,5 @@
|
||||
"title": "Impostazioni di SnapEnhance",
|
||||
"selected_text": "{count} selezionati",
|
||||
"invalid_number_toast": "Numero non valido!"
|
||||
},
|
||||
"spoof_activity": {
|
||||
"title": "Falsifica Impostazioni"
|
||||
}
|
||||
}
|
@ -215,18 +215,6 @@
|
||||
"unlimited_multi_snap": {
|
||||
"name": "Sınırsız Çoklu Snap",
|
||||
"description": "Sınırsız sayıda çoklu snap çekmenizi sağlar"
|
||||
},
|
||||
"device_spoof": {
|
||||
"name": "Sahte Cihaz Değerleri",
|
||||
"description": "Cihaz değerlerini taklit eder"
|
||||
},
|
||||
"device_fingerprint": {
|
||||
"name": "Cihaz Parmak İzi",
|
||||
"description": "Cihaz parmak izini taklit eder"
|
||||
},
|
||||
"android_id": {
|
||||
"name": "Android Kimliği",
|
||||
"description": "Cihazların Android kimliğini taklit eder"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
@ -418,8 +406,7 @@
|
||||
"clear_cache_title": "Önbelleği Temizle",
|
||||
"reset_all_title": "Tüm ayarları sıfırla",
|
||||
"reset_all_confirmation": "Tüm ayarları sıfırlamak istediğinizden emin misiniz?",
|
||||
"success_toast": "Başarılı!",
|
||||
"device_spoofer": "Cihaz Spoofer"
|
||||
"success_toast": "Başarılı!"
|
||||
}
|
||||
},
|
||||
"download_processor": {
|
||||
@ -440,8 +427,5 @@
|
||||
"title": "SnapEnhance Ayarları",
|
||||
"selected_text": "{count} seçildi",
|
||||
"invalid_number_toast": "Geçersiz sayı!"
|
||||
},
|
||||
"spoof_activity": {
|
||||
"title": "Spoof Ayarları"
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
package me.rhunk.snapenhance.features.impl.experiments
|
||||
|
||||
import me.rhunk.snapenhance.Logger
|
||||
import me.rhunk.snapenhance.config.ConfigProperty
|
||||
import me.rhunk.snapenhance.features.Feature
|
||||
import me.rhunk.snapenhance.features.FeatureLoadParams
|
||||
import me.rhunk.snapenhance.hook.HookStage
|
||||
import me.rhunk.snapenhance.hook.Hooker
|
||||
|
||||
class DeviceSpooferHook: Feature("device_spoofer", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
|
||||
override fun asyncOnActivityCreate() {
|
||||
//FINGERPRINT
|
||||
if(getFingerprint().isNotEmpty()) {
|
||||
val fingerprintClass = android.os.Build::class.java
|
||||
Hooker.hook(fingerprintClass, "FINGERPRINT", HookStage.BEFORE) { hookAdapter ->
|
||||
hookAdapter.setResult(getFingerprint())
|
||||
}
|
||||
Hooker.hook(fingerprintClass, "deriveFingerprint", HookStage.BEFORE) { hookAdapter ->
|
||||
hookAdapter.setResult(getFingerprint())
|
||||
}
|
||||
}
|
||||
else {
|
||||
Logger.xposedLog("Fingerprint is null, not spoofing")
|
||||
}
|
||||
|
||||
//ANDROID ID
|
||||
if(getAndroidId().isNotEmpty()) {
|
||||
val settingsSecureClass = android.provider.Settings.Secure::class.java
|
||||
Hooker.hook(settingsSecureClass, "getString", HookStage.BEFORE) { hookAdapter ->
|
||||
if(hookAdapter.args()[1] == "android_id") {
|
||||
hookAdapter.setResult(getAndroidId())
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
Logger.xposedLog("Android ID is null, not spoofing")
|
||||
}
|
||||
}
|
||||
private fun getFingerprint():String {
|
||||
return context.config.string(ConfigProperty.FINGERPRINT)
|
||||
}
|
||||
|
||||
private fun getAndroidId():String {
|
||||
return context.config.string(ConfigProperty.ANDROID_ID)
|
||||
}
|
||||
|
||||
}
|
@ -11,7 +11,6 @@ import me.rhunk.snapenhance.features.impl.downloader.AntiAutoDownload
|
||||
import me.rhunk.snapenhance.features.impl.downloader.MediaDownloader
|
||||
import me.rhunk.snapenhance.features.impl.experiments.AmoledDarkMode
|
||||
import me.rhunk.snapenhance.features.impl.experiments.AppPasscode
|
||||
import me.rhunk.snapenhance.features.impl.experiments.DeviceSpooferHook
|
||||
import me.rhunk.snapenhance.features.impl.experiments.InfiniteStoryBoost
|
||||
import me.rhunk.snapenhance.features.impl.experiments.MeoPasscodeBypass
|
||||
import me.rhunk.snapenhance.features.impl.experiments.NoFriendScoreDelay
|
||||
@ -91,7 +90,6 @@ class FeatureManager(private val context: ModContext) : Manager {
|
||||
register(AmoledDarkMode::class)
|
||||
register(PinConversations::class)
|
||||
register(UnlimitedMultiSnap::class)
|
||||
register(DeviceSpooferHook::class)
|
||||
register(StartupPageOverride::class)
|
||||
register(GooglePlayServicesDialogs::class)
|
||||
register(NoFriendScoreDelay::class)
|
||||
|
@ -13,7 +13,6 @@ import me.rhunk.snapenhance.R
|
||||
import me.rhunk.snapenhance.SharedContext
|
||||
import me.rhunk.snapenhance.bridge.types.BridgeFileType
|
||||
import me.rhunk.snapenhance.ui.config.ConfigActivity
|
||||
import me.rhunk.snapenhance.ui.spoof.DeviceSpooferActivity
|
||||
import java.io.File
|
||||
|
||||
class ActionListAdapter(
|
||||
@ -71,9 +70,6 @@ class DebugSettingsLayoutInflater(
|
||||
add(SharedContext.translation["config_activity.title"] to {
|
||||
activity.startActivity(Intent(activity, ConfigActivity::class.java))
|
||||
})
|
||||
add(SharedContext.translation["spoof_activity.title"] to {
|
||||
activity.startActivity(Intent(activity, DeviceSpooferActivity::class.java))
|
||||
})
|
||||
add(debugSettingsTranslation["clear_cache_title"] to {
|
||||
context.cacheDir.listFiles()?.forEach {
|
||||
it.deleteRecursively()
|
||||
|
@ -1,111 +0,0 @@
|
||||
package me.rhunk.snapenhance.ui.spoof
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Bundle
|
||||
import android.text.InputType
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageButton
|
||||
import android.widget.Switch
|
||||
import android.widget.TextView
|
||||
import me.rhunk.snapenhance.R
|
||||
import me.rhunk.snapenhance.SharedContext
|
||||
import me.rhunk.snapenhance.config.ConfigCategory
|
||||
import me.rhunk.snapenhance.config.impl.ConfigIntegerValue
|
||||
import me.rhunk.snapenhance.config.impl.ConfigStateValue
|
||||
import me.rhunk.snapenhance.config.impl.ConfigStringValue
|
||||
import me.rhunk.snapenhance.ui.ItemHelper
|
||||
|
||||
class DeviceSpooferActivity: Activity() {
|
||||
private val itemHelper = ItemHelper(this)
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
SharedContext.ensureInitialized(this)
|
||||
setContentView(R.layout.device_spoofer_activity)
|
||||
|
||||
findViewById<TextView>(R.id.title).text = "Device Spoofer"
|
||||
findViewById<ImageButton>(R.id.back_button).setOnClickListener { finish() }
|
||||
val propertyListLayout = findViewById<ViewGroup>(R.id.spoof_property_list)
|
||||
|
||||
SharedContext.config.entries().filter { it.key.category == ConfigCategory.DEVICE_SPOOFER }.forEach { (property, value) ->
|
||||
val configItem = layoutInflater.inflate(R.layout.config_activity_item, propertyListLayout, false)
|
||||
|
||||
val propertyName = SharedContext.translation["property.${property.translationKey}.name"]
|
||||
|
||||
fun addSeparator() {
|
||||
//add separator
|
||||
propertyListLayout.addView(View(this).apply {
|
||||
layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1)
|
||||
setBackgroundColor(getColor(R.color.tertiaryBackground))
|
||||
})
|
||||
}
|
||||
|
||||
configItem.findViewById<TextView>(R.id.name).text = propertyName
|
||||
configItem.findViewById<TextView>(R.id.description).also {
|
||||
it.text = SharedContext.translation["property.${property.translationKey}.description"]
|
||||
it.visibility = if (it.text.isEmpty()) View.GONE else View.VISIBLE
|
||||
}
|
||||
|
||||
fun addValueView(view: View) {
|
||||
configItem.findViewById<ViewGroup>(R.id.value).addView(view)
|
||||
}
|
||||
|
||||
when (value) {
|
||||
is ConfigStateValue -> {
|
||||
val switch = Switch(this)
|
||||
switch.isChecked = value.value()
|
||||
switch.trackTintList = ColorStateList(
|
||||
arrayOf(
|
||||
intArrayOf(android.R.attr.state_checked),
|
||||
intArrayOf(-android.R.attr.state_checked)
|
||||
),
|
||||
intArrayOf(
|
||||
switch.highlightColor,
|
||||
getColor(R.color.tertiaryBackground)
|
||||
)
|
||||
)
|
||||
switch.setOnCheckedChangeListener { _, isChecked ->
|
||||
value.writeFrom(isChecked.toString())
|
||||
}
|
||||
configItem.setOnClickListener { switch.toggle() }
|
||||
addValueView(switch)
|
||||
}
|
||||
is ConfigStringValue, is ConfigIntegerValue -> {
|
||||
val textView = itemHelper.createTranslatedTextView(property, shouldTranslatePropertyValue = false).also {
|
||||
it.text = value.value().toString()
|
||||
}
|
||||
configItem.setOnClickListener {
|
||||
if (value is ConfigIntegerValue) {
|
||||
itemHelper.askForValue(property, InputType.TYPE_CLASS_NUMBER) {
|
||||
try {
|
||||
value.writeFrom(it)
|
||||
textView.text = value.value().toString()
|
||||
} catch (e: NumberFormatException) {
|
||||
itemHelper.longToast(SharedContext.translation["config_activity.invalid_number_toast"], this)
|
||||
}
|
||||
}
|
||||
return@setOnClickListener
|
||||
}
|
||||
itemHelper.askForValue(property, InputType.TYPE_CLASS_TEXT) {
|
||||
value.writeFrom(it)
|
||||
textView.text = value.value().toString()
|
||||
}
|
||||
}
|
||||
addValueView(textView)
|
||||
}
|
||||
}
|
||||
|
||||
propertyListLayout.addView(configItem)
|
||||
addSeparator()
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
@Suppress("DEPRECATION")
|
||||
override fun onBackPressed() {
|
||||
super.onBackPressed()
|
||||
finish()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user