aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gq/malwarefight/nosession/tweaks
diff options
context:
space:
mode:
authorPandaNinjas <admin@malwarefight.gq>2023-01-29 21:42:45 -0800
committerPandaNinjas <admin@malwarefight.gq>2023-01-29 21:42:45 -0800
commit4d5700844809d45ca27a7efe8500d9d4c828ea2f (patch)
treecdc6dfb82907a58694a8b44e139a12d98132dbe5 /src/main/java/gq/malwarefight/nosession/tweaks
parent7a27e0345d434891d24fe3ec3b3e33d296c989ce (diff)
downloadNoSession-4d5700844809d45ca27a7efe8500d9d4c828ea2f.tar.gz
NoSession-4d5700844809d45ca27a7efe8500d9d4c828ea2f.tar.bz2
NoSession-4d5700844809d45ca27a7efe8500d9d4c828ea2f.zip
On today's edition of why you shouldn't use git after 12 AM
Diffstat (limited to 'src/main/java/gq/malwarefight/nosession/tweaks')
-rw-r--r--src/main/java/gq/malwarefight/nosession/tweaks/CleanupTweaker.java82
-rw-r--r--src/main/java/gq/malwarefight/nosession/tweaks/InitialTweaker.java104
2 files changed, 0 insertions, 186 deletions
diff --git a/src/main/java/gq/malwarefight/nosession/tweaks/CleanupTweaker.java b/src/main/java/gq/malwarefight/nosession/tweaks/CleanupTweaker.java
deleted file mode 100644
index 6deeeb0..0000000
--- a/src/main/java/gq/malwarefight/nosession/tweaks/CleanupTweaker.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package gq.malwarefight.nosession.tweaks;
-
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import net.minecraft.launchwrapper.ITweaker;
-import net.minecraft.launchwrapper.Launch;
-import net.minecraft.launchwrapper.LaunchClassLoader;
-import net.minecraftforge.fml.common.asm.ASMTransformerWrapper;
-
-import java.io.File;
-import java.lang.reflect.*;
-import java.net.URL;
-import java.net.URLStreamHandler;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import gq.malwarefight.nosession.utils.Utils;
-
-public class CleanupTweaker implements ITweaker {
- /**
- * Cached to avoid expensive reflection operations
- */
- public Method makeWrapper;
-
- public CleanupTweaker() throws NoSuchMethodException {
- makeWrapper = ASMTransformerWrapper.class.getDeclaredMethod("makeWrapper", String.class);
- makeWrapper.setAccessible(true);
- }
- @Override
- @SuppressWarnings("unchecked")
- public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile) {
- // add the FMLTweaker
- ArrayList<String> tweakerList = (ArrayList<String>) Launch.blackboard.get("TweakClasses");
- tweakerList.add("net.minecraftforge.fml.common.launcher.FMLTweaker");
- // reset ASMTransformerWrapper
- Class<ASMTransformerWrapper> cls = ASMTransformerWrapper.class;
- try {
- Utils.setStaticValue(cls, "wrapperModMap", new HashMap<String, String>());
- Utils.setStaticValue(cls, "wrapperParentMap", new HashMap<String, String>());
- Utils.setStaticValue(cls, "wrapperCache", CacheBuilder.newBuilder().maximumSize(30L).weakValues().build(new CacheLoader<String, byte[]>() {
- public byte[] load(String file) throws Exception {
- return (byte[]) makeWrapper.invoke(null, file);
- }
- }));
- Utils.setStaticValue(cls, "asmGenRoot", new URL("asmgen", null, -1, "/", getAsmGenHandler()));
- Utils.setStaticValue(cls, "injected", false);
- } catch (Exception e) {
- System.err.println("NoSession: Fixing ASMTransformerWrapper failed. Things may break.");
- e.printStackTrace();
- }
- }
-
- @Override
- public void injectIntoClassLoader(LaunchClassLoader classLoader) {}
-
- @Override
- public String getLaunchTarget() {
- return "net.minecraft.client.main.Main";
- }
-
- @Override
- public String[] getLaunchArguments() {
- return new String[0];
- }
-
-
-
- @SuppressWarnings("unchecked")
- private URLStreamHandler getAsmGenHandler() throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
- Class<ASMTransformerWrapper> cls = ASMTransformerWrapper.class;
- for (Class<?> candidate: cls.getDeclaredClasses()) {
- if (candidate.getSimpleName().equals("ASMGenHandler")) {
- Method pgdc = Class.class.getDeclaredMethod("privateGetDeclaredConstructors", boolean.class);
- pgdc.setAccessible(true);
- Constructor<? extends URLStreamHandler> constructor = ((Constructor<? extends URLStreamHandler>[]) pgdc.invoke(candidate, false))[0];
- constructor.setAccessible(true);
- return constructor.newInstance();
- }
- }
- throw new RuntimeException("NoSession: unable to get the ASMGenHandler");
- }
-}
diff --git a/src/main/java/gq/malwarefight/nosession/tweaks/InitialTweaker.java b/src/main/java/gq/malwarefight/nosession/tweaks/InitialTweaker.java
deleted file mode 100644
index 74d05f5..0000000
--- a/src/main/java/gq/malwarefight/nosession/tweaks/InitialTweaker.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package gq.malwarefight.nosession.tweaks;
-
-import gq.malwarefight.nosession.relaunch.Relaunch;
-import gq.malwarefight.nosession.utils.Utils;
-import net.minecraft.launchwrapper.ITweaker;
-import net.minecraft.launchwrapper.Launch;
-import net.minecraft.launchwrapper.LaunchClassLoader;
-import org.spongepowered.asm.launch.MixinBootstrap;
-import org.spongepowered.asm.mixin.MixinEnvironment;
-import org.spongepowered.asm.mixin.Mixins;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.management.ManagementFactory;
-import java.lang.management.RuntimeMXBean;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.Socket;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class InitialTweaker implements ITweaker {
-
- public InitialTweaker() {
- System.gc(); // try to garbage collect the earlier launch data
- }
-
- /**
- * This handles the launch arguments passed towards minecraft
- * @param args The launch arguments
- * @param gameDir The game directory (ie: .minecraft)
- * @param assetsDir The assets directory
- * @param version The game version
- */
- @Override
- public final void acceptOptions(List<String> args, File gameDir, File assetsDir, String version) {
- ArrayList<String> argsCopy = new ArrayList<>(args);
- for (int i = 0; i < argsCopy.size(); i++) {
- if (argsCopy.get(i).equals("--accessToken")) {
- if (argsCopy.get(i + 1).equals("<noSessionAccessToken>")) {
- Runtime.getRuntime().addShutdownHook(
- new Thread(() -> {
- try {
- Socket socket = Utils.getProperSocket();
- socket.getOutputStream().write("fullquit\n".getBytes(StandardCharsets.UTF_8));
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- })
- );
- return; // don't do anything, the change has already been made
- }
- try {
- Utils.setToken(args.get(i + 1));
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- argsCopy.set(i + 1, "<noSessionAccessToken>");
- }
- }
- System.out.println("=======================");
- System.out.println("NoSession: relaunching without the token");
- System.out.println("=======================");
- try {
- Relaunch.relaunch(argsCopy, gameDir, assetsDir, version);
- } catch (Exception e) {
- e.printStackTrace();
- throw new RuntimeException(e);
- }
-
- }
-
- /**
- * Inject into the MC class loader
- * @param classLoader The class loader
- */
- @Override
- public final void injectIntoClassLoader(LaunchClassLoader classLoader) {
- MixinBootstrap.init();
- MixinEnvironment environment = MixinEnvironment.getDefaultEnvironment();
- Mixins.addConfiguration("mixins.nosession.json");
- // Check if the obfuscation context is null
- if (environment.getObfuscationContext() == null) {
- environment.setObfuscationContext("notch");
- }
- // This is a client side, client :)
- environment.setSide(MixinEnvironment.Side.CLIENT);
- }
-
- @Override
- public String getLaunchTarget() {
- return MixinBootstrap.getPlatform().getLaunchTarget();
- }
-
- @Override
- public String[] getLaunchArguments() {
- return new String[0];
- }
-
-}