From bf86fe0d77d9123479f08ca12d68499d0e654524 Mon Sep 17 00:00:00 2001
From: Amsyar Rasyiq <82711525+amsyarasyiq@users.noreply.github.com>
Date: Sat, 20 May 2023 11:41:06 +0000
Subject: [PATCH] Begin brand to 'Pyoncord'
---
.idea/.name | 2 +-
app/build.gradle.kts | 4 +--
app/src/main/AndroidManifest.xml | 2 +-
app/src/main/assets/js/identity.js | 5 ++--
app/src/main/assets/xposed_init | 2 +-
.../dev/beefers/vendetta/xposed/Main.kt | 25 ++++++++++---------
app/src/main/res/values/strings.xml | 2 +-
gradlew | 0
settings.gradle.kts | 2 +-
9 files changed, 22 insertions(+), 22 deletions(-)
mode change 100644 => 100755 gradlew
diff --git a/.idea/.name b/.idea/.name
index 8e6e635..e7c85bc 100644
--- a/.idea/.name
+++ b/.idea/.name
@@ -1 +1 @@
-VendettaXposed
\ No newline at end of file
+PyoncordXposed
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index f959782..e4a334f 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -5,11 +5,11 @@ plugins {
}
android {
- namespace = "dev.beefers.vendetta.xposed"
+ namespace = "com.pyoncord.xposed"
compileSdk = 33
defaultConfig {
- applicationId = "dev.beefers.vendetta.xposed"
+ applicationId = "com.pyoncord.xposed"
minSdk = 24
targetSdk = 33
versionCode = 1
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ce2aee5..ca939d8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,7 +13,7 @@
android:value="true" />
+ android:value="An Xposed module to inject Pyoncord, a mod for Discord's mobile apps." />
diff --git a/app/src/main/assets/js/identity.js b/app/src/main/assets/js/identity.js
index 4d908a2..8f18304 100644
--- a/app/src/main/assets/js/identity.js
+++ b/app/src/main/assets/js/identity.js
@@ -1,4 +1,3 @@
-globalThis.__vendetta_loader = {
- name: "VendettaXposed",
- features: {},
+globalThis.__pyoncord_loader_payload = {
+ name: "PyoncordXposed",
}
\ No newline at end of file
diff --git a/app/src/main/assets/xposed_init b/app/src/main/assets/xposed_init
index f45efc1..3006973 100644
--- a/app/src/main/assets/xposed_init
+++ b/app/src/main/assets/xposed_init
@@ -1 +1 @@
-dev.beefers.vendetta.xposed.Main
\ No newline at end of file
+com.pyoncord.xposed.Main
\ No newline at end of file
diff --git a/app/src/main/kotlin/dev/beefers/vendetta/xposed/Main.kt b/app/src/main/kotlin/dev/beefers/vendetta/xposed/Main.kt
index f031502..0be8531 100644
--- a/app/src/main/kotlin/dev/beefers/vendetta/xposed/Main.kt
+++ b/app/src/main/kotlin/dev/beefers/vendetta/xposed/Main.kt
@@ -1,4 +1,4 @@
-package dev.beefers.vendetta.xposed
+package com.pyoncord.xposed
import java.io.File
import java.lang.Exception
@@ -28,23 +28,26 @@ class Main : IXposedHookZygoteInit, IXposedHookLoadPackage {
}
// Hook function responsible for loading Discord's package
- // Also, Kotlin has `with`? How does this language have literally everything?!
override fun handleLoadPackage(param: XC_LoadPackage.LoadPackageParam) = with(param) {
- // Stop executing when we aren't in Discord's React Native context
- val catalystInstance = try { classLoader.loadClass("com.facebook.react.bridge.CatalystInstanceImpl") } catch(e: ClassNotFoundException) { return }
+ val catalystInstance = try {
+ classLoader.loadClass("com.facebook.react.bridge.CatalystInstanceImpl")
+ } catch (e: ClassNotFoundException) {
+ // Package is not the target app, return
+ return@with
+ }
val cache = File(appInfo.dataDir, "cache").also { it.mkdirs() }
- val bundle = File(cache, "vendetta.js")
- val etag = File(cache, "vendetta_etag.txt")
+ val bundle = File(cache, "pyoncord.js")
+ val etag = File(cache, "pyoncord_etag.txt")
val scope = MainScope()
val httpJob = scope.async(Dispatchers.IO) {
try {
val client = HttpClient(CIO) {
install(HttpTimeout) { requestTimeoutMillis = 1000 }
- install(UserAgent) { agent = "VendettaXposed" }
+ install(UserAgent) { agent = "PyoncordXposed" }
}
- val response: HttpResponse = client.get("https://raw.githubusercontent.com/vendetta-mod/builds/master/vendetta.js") {
+ val response: HttpResponse = client.get("https://raw.githubusercontent.com/pyoncord/pyoncord/builds/pyoncord.js") {
headers { if (etag.exists() && bundle.exists()) append(HttpHeaders.IfNoneMatch, etag.readText()) }
}
@@ -55,7 +58,7 @@ class Main : IXposedHookZygoteInit, IXposedHookLoadPackage {
return@async
} catch (e: Exception) {
- Log.e("Vendetta", "Failed to download Vendetta")
+ Log.e("Pyoncord", "Failed to download pyoncord.js bundle")
}
}
@@ -66,9 +69,7 @@ class Main : IXposedHookZygoteInit, IXposedHookLoadPackage {
val hook = object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
- Log.d("Vendetta", "Exfiltrating Metro modules")
XposedBridge.invokeOriginalMethod(loadScriptFromAssets,param.thisObject, arrayOf(resources.assets, "assets://js/modules.js", true))
- Log.d("Vendetta", "Executing identity snippet")
XposedBridge.invokeOriginalMethod(loadScriptFromAssets, param.thisObject, arrayOf(resources.assets, "assets://js/identity.js", true))
}
@@ -76,7 +77,7 @@ class Main : IXposedHookZygoteInit, IXposedHookLoadPackage {
scope.launch(scope.coroutineContext) {
try {
httpJob.await()
- Log.d("Vendetta", "Executing Vendetta")
+ Log.d("Pyoncord", "Executing Pyoncord")
XposedBridge.invokeOriginalMethod(loadScriptFromFile, param.thisObject, arrayOf(bundle.absolutePath, bundle.absolutePath, param.args[2]))
} catch (_: Exception) {}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ed0f020..261dd6d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,3 @@
- VendettaXposed
+ PyoncordXposed
\ No newline at end of file
diff --git a/gradlew b/gradlew
old mode 100644
new mode 100755
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 868289d..c288f19 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,2 +1,2 @@
-rootProject.name = "VendettaXposed"
+rootProject.name = "PyoncordXposed"
include(":app")