diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/SecurityFeatures.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/SecurityFeatures.kt index f9bb6fb0..6c7ba1e7 100644 --- a/core/src/main/kotlin/me/rhunk/snapenhance/core/SecurityFeatures.kt +++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/SecurityFeatures.kt @@ -164,7 +164,7 @@ class SecurityFeatures( context.event.subscribe(UnaryCallEvent::class) { event -> val callOptions = event.adapter.arg(2).let { it.javaClass.getMethod("build").invoke(it) } ?: return@subscribe - if (callOptions.getObjectField("mAttestation") != null) { + if (callOptions.getObjectField("mAttestation") != null || event.uri.endsWith("/IncomingFriendSync")) { context.log.verbose("blocked ep ${event.adapter.arg(0)}", "UnaryCallEvent") event.canceled = true val eventHandler = event.adapter.arg(3) @@ -200,6 +200,14 @@ class SecurityFeatures( exitProcess(139) } } + loadClass("com.snapchat.client.duplex.DuplexClient\$CppProxy").hook("registerHandler", + HookStage.BEFORE) { param -> + val path = param.arg(0) + if (path == "hermod_dup") { + param.setResult(null) + return@hook + } + } } context.mappings.useMapper(CallbackMapper::class) { @@ -253,7 +261,9 @@ class SecurityFeatures( modifier = Modifier.fillMaxSize() ) { Column( - modifier = Modifier.align(Alignment.Center).padding(16.dp), + modifier = Modifier + .align(Alignment.Center) + .padding(16.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { Icon(Icons.Rounded.NotInterested, contentDescription = null, tint = MaterialTheme.colorScheme.onSurface, modifier = Modifier.size(110.dp))