diff --git a/app/src/main/java/com/shatyuka/killergram/MainHook.java b/app/src/main/java/com/shatyuka/killergram/MainHook.java index 7d4bc49..d034e04 100644 --- a/app/src/main/java/com/shatyuka/killergram/MainHook.java +++ b/app/src/main/java/com/shatyuka/killergram/MainHook.java @@ -5,16 +5,14 @@ import java.util.List; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodReplacement; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.callbacks.XC_LoadPackage; +import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class MainHook implements IXposedHookLoadPackage { + public final static List hookPackages = Arrays.asList( "org.telegram.messenger", "org.telegram.messenger.web", "org.telegram.messenger.beta", - "tw.nekomimi.nekogram", "nekox.messenger", "org.forkclient.messenger", "org.forkclient.messenger.beta", @@ -23,9 +21,9 @@ public class MainHook implements IXposedHookLoadPackage { "org.telegram.mdgram", "org.telegram.mdgramyou", "org.telegram.BifToGram", - "it.owlgram.android", "ua.itaysonlab.messenger", "org.nift4.catox", + "top.qwq2333.nullgram", "com.cool2645.nekolite", "me.ninjagram.messenger", "org.ninjagram.messenger", @@ -37,36 +35,38 @@ public class MainHook implements IXposedHookLoadPackage { ); @Override - public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) { - if (hookPackages.contains(lpparam.packageName)) { - try { - Class messagesControllerClass = XposedHelpers.findClassIfExists("org.telegram.messenger.MessagesController", lpparam.classLoader); - if (messagesControllerClass != null) { - XposedBridge.hookAllMethods(messagesControllerClass, "getSponsoredMessages", XC_MethodReplacement.returnConstant(null)); - XposedBridge.hookAllMethods(messagesControllerClass, "isChatNoForwards", XC_MethodReplacement.returnConstant(false)); - } + public void handleLoadPackage(final LoadPackageParam lpparam) { - Class chatUIActivityClass = XposedHelpers.findClassIfExists("org.telegram.ui.ChatActivity", lpparam.classLoader); - if (chatUIActivityClass != null) { - XposedBridge.hookAllMethods(chatUIActivityClass, "addSponsoredMessages", XC_MethodReplacement.returnConstant(null)); - } + if (!hookPackages.contains(lpparam.packageName)) return; - Class SharedConfigClass = XposedHelpers.findClassIfExists("org.telegram.messenger.SharedConfig", lpparam.classLoader); - if (SharedConfigClass != null) { - XposedBridge.hookAllMethods(SharedConfigClass, "getDevicePerformanceClass", XC_MethodReplacement.returnConstant(2)); - } + XposedClass messagesController = new XposedClass("org.telegram.messenger.MessagesController", lpparam.classLoader); + messagesController.hookAllMethods("getSponsoredMessages", XC_MethodReplacement.returnConstant(null)); + messagesController.hookAllMethods("isChatNoForwards", XC_MethodReplacement.returnConstant(false)); - Class UserConfigClass = XposedHelpers.findClassIfExists("org.telegram.messenger.UserConfig", lpparam.classLoader); - if (UserConfigClass != null) { - XposedBridge.hookAllMethods(UserConfigClass, "getMaxAccountCount", XC_MethodReplacement.returnConstant(999)); - XposedBridge.hookAllMethods(UserConfigClass, "hasPremiumOnAccounts", XC_MethodReplacement.returnConstant(true)); - } + XposedClass chatUIActivity = new XposedClass("org.telegram.ui.ChatActivity", lpparam.classLoader); + chatUIActivity.hookAllMethods("addSponsoredMessages", XC_MethodReplacement.returnConstant(null)); - Class getSponsoredMessagesClass = XposedHelpers.findClassIfExists("org.telegram.tgnet.TLRPC$TL_channels_getSponsoredMessages", lpparam.classLoader); - if (getSponsoredMessagesClass != null) { - XposedBridge.hookAllMethods(getSponsoredMessagesClass, "a", XC_MethodReplacement.returnConstant(null)); - } - } catch (Throwable ignored) { } - } + XposedClass sponsoredMessages = new XposedClass("org.telegram.tgnet.TLRPC$messages_SponsoredMessages", lpparam.classLoader); + sponsoredMessages.hookAllMethods("TLdeserialize", XC_MethodReplacement.returnConstant(null)); + + XposedClass getSponsoredMessages = new XposedClass("org.telegram.tgnet.TLRPC$TL_channels_getSponsoredMessages", lpparam.classLoader); + getSponsoredMessages.hookAllMethods("a", XC_MethodReplacement.returnConstant(null)); + + XposedClass chat = new XposedClass("org.telegram.tgnet.TLRPC$Chat", lpparam.classLoader); + //chat.hookAllConstructors(new NoForwardsHook(true)); + chat.hookAllMethods("TLdeserialize", new NoForwardsHook(false)); + + /* + XposedClass message = new XposedClass("org.telegram.tgnet.TLRPC$Message", lpparam.classLoader); + //message.hookAllConstructors(new NoForwardsHook(true)); + message.hookAllMethods("TLdeserialize", new NoForwardsHook(false)); + */ + + XposedClass sharedConfig = new XposedClass("org.telegram.messenger.SharedConfig", lpparam.classLoader); + sharedConfig.hookAllMethods("getDevicePerformanceClass", XC_MethodReplacement.returnConstant(2)); + + XposedClass userConfig = new XposedClass("org.telegram.messenger.UserConfig", lpparam.classLoader); + userConfig.hookAllMethods("getMaxAccountCount", XC_MethodReplacement.returnConstant(999)); + userConfig.hookAllMethods("hasPremiumOnAccounts", XC_MethodReplacement.returnConstant(true)); } } diff --git a/app/src/main/java/com/shatyuka/killergram/NoForwardsHook.java b/app/src/main/java/com/shatyuka/killergram/NoForwardsHook.java new file mode 100644 index 0000000..d354631 --- /dev/null +++ b/app/src/main/java/com/shatyuka/killergram/NoForwardsHook.java @@ -0,0 +1,26 @@ +package com.shatyuka.killergram; + +import de.robv.android.xposed.XC_MethodHook; +import de.robv.android.xposed.XposedBridge; +import de.robv.android.xposed.XposedHelpers; + +public class NoForwardsHook extends XC_MethodHook { + + boolean forConstructor; + + public NoForwardsHook(boolean forConstructor) { + super(); + this.forConstructor = forConstructor; + } + + @Override + protected void afterHookedMethod(MethodHookParam param) { + try { + Object obj = this.forConstructor ? param.thisObject : param.getResult(); + XposedHelpers.setBooleanField(obj, "noforwards", false); + } + catch (Throwable t) { + XposedBridge.log(t); + } + } +} diff --git a/app/src/main/java/com/shatyuka/killergram/XposedClass.java b/app/src/main/java/com/shatyuka/killergram/XposedClass.java new file mode 100644 index 0000000..e944859 --- /dev/null +++ b/app/src/main/java/com/shatyuka/killergram/XposedClass.java @@ -0,0 +1,34 @@ +package com.shatyuka.killergram; + +import de.robv.android.xposed.XC_MethodHook; +import de.robv.android.xposed.XposedBridge; +import de.robv.android.xposed.XposedHelpers; + +public class XposedClass { + + private final Class aClass; + + public XposedClass(String className, ClassLoader loader) { + aClass = XposedHelpers.findClassIfExists(className, loader); + } + + public void hookAllMethods(String methodName, XC_MethodHook callback) { + try { + if (aClass == null) return; + XposedBridge.hookAllMethods(aClass, methodName, callback); + } + catch (Throwable t) { + XposedBridge.log(t); + } + } + + public void hookAllConstructors(XC_MethodHook callback) { + try { + if (aClass == null) return; + XposedBridge.hookAllConstructors(aClass, callback); + } + catch (Throwable t) { + XposedBridge.log(t); + } + } +} diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 161c816..a5bce00 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -4,7 +4,6 @@ org.telegram.messenger org.telegram.messenger.web org.telegram.messenger.beta - tw.nekomimi.nekogram nekox.messenger org.forkclient.messenger org.forkclient.messenger.beta @@ -13,9 +12,9 @@ org.telegram.mdgram org.telegram.mdgramyou org.telegram.BifToGram - it.owlgram.android ua.itaysonlab.messenger org.nift4.catox + top.qwq2333.nullgram com.cool2645.nekolite me.ninjagram.messenger org.ninjagram.messenger