Skip to content

Commit c5279ae

Browse files
committed
feat: block tracking
1 parent 614f9ce commit c5279ae

3 files changed

Lines changed: 63 additions & 0 deletions

File tree

app/src/main/kotlin/io/github/revenge/xposed/Main.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import io.github.revenge.xposed.modules.appearance.SysColorsModule
1414
import io.github.revenge.xposed.modules.appearance.ThemesModule
1515
import io.github.revenge.xposed.modules.bridge.AdditionalBridgeMethodsModule
1616
import io.github.revenge.xposed.modules.bridge.BridgeModule
17+
import io.github.revenge.xposed.modules.no_track.BlockCrashReportingModule
18+
import io.github.revenge.xposed.modules.no_track.BlockDeepLinksTrackingModule
1719
import kotlinx.coroutines.CompletableDeferred
1820

1921
object HookStateHolder {
@@ -40,6 +42,8 @@ class Main : Module(), IXposedHookLoadPackage, IXposedHookZygoteInit {
4042
PluginsModule(),
4143
UpdaterModule,
4244
FixResourcesModule(),
45+
BlockDeepLinksTrackingModule(),
46+
BlockCrashReportingModule(),
4347
LogBoxModule(),
4448
CacheModule(),
4549
FontsModule(),
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.github.revenge.xposed.modules.no_track
2+
3+
import android.content.Context
4+
import de.robv.android.xposed.callbacks.XC_LoadPackage
5+
import io.github.revenge.xposed.Module
6+
import io.github.revenge.xposed.Utils.Log
7+
8+
/**
9+
* Hooks Discord's crash reporting to disable Sentry initialization.
10+
* While Discord doesn't have Sentry auto-initialization on by default, we still hook the content provider just to be safe.
11+
*/
12+
class BlockCrashReportingModule : Module() {
13+
override fun onLoad(packageParam: XC_LoadPackage.LoadPackageParam) = with(packageParam) {
14+
val crashReportingClass = classLoader.safeLoadClass("com.discord.crash_reporting.CrashReporting")
15+
crashReportingClass?.hookMethod(
16+
"init", Context::class.java, String::class.java
17+
) {
18+
before {
19+
Log.i("Blocked CrashReporting initialization")
20+
result = null
21+
}
22+
}
23+
24+
val sentryInitProviderClass = classLoader.safeLoadClass("io.sentry.android.core.SentryInitProvider")
25+
sentryInitProviderClass?.hookMethod("onCreate") {
26+
before {
27+
Log.i("Blocked SentryInitProvider initialization")
28+
result = true
29+
}
30+
}
31+
32+
return@with
33+
}
34+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.github.revenge.xposed.modules.no_track
2+
3+
import android.content.Context
4+
import de.robv.android.xposed.callbacks.XC_LoadPackage
5+
import io.github.revenge.xposed.Module
6+
import io.github.revenge.xposed.Utils.Log
7+
8+
/**
9+
* Hooks Discord's deep links tracking to disable AppsFlyer initialization.
10+
*/
11+
class BlockDeepLinksTrackingModule : Module() {
12+
override fun onLoad(packageParam: XC_LoadPackage.LoadPackageParam) = with(packageParam) {
13+
val deepLinksClass = classLoader.safeLoadClass("com.discord.deep_link.DeepLinks")
14+
deepLinksClass?.hookMethod(
15+
"init", Context::class.java
16+
) {
17+
before {
18+
Log.i("Blocked DeepLinks tracking initialization")
19+
result = null
20+
}
21+
}
22+
23+
return@with
24+
}
25+
}

0 commit comments

Comments
 (0)