Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

Klassen in Instrumentation laden

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Ich hab das ganze jetzt einmal versucht, jedoch funktioniert es so nicht.
Ist nur ein Teil meines codes, den ganzen will ich hier nicht einfach so Preis geben.
(Ich injecte den Agent mit einem extra Programm)
Könnte mir jemand sagen wie das ganze richtig funktioniert?


https://pastebin.com/jtc2XDU8
 
Was genau funktioniert denn nicht, ggf. StackTrace etc. ?
 
Was genau funktioniert denn nicht, ggf. StackTrace etc. ?
Wenn ich eine Methode vom ModuleManager calle gibt es einen error, dass die Klasse nicht gefunden wird.
 
Was genau funktioniert denn nicht, ggf. StackTrace etc. ?
Mittlerweile versuche ich die Methode findClass im LaunchClassLoader so zu editieren, dass wenn eine klasse mit meinem Package Prefix beginnt, es auf meine Lokalen klassen aus der Jar umgeleitet wird.
Ich denke das ist einfacher.

Brauche nur noch den ASMified Code davon.
Code:
if (name.startsWith("de"))
{
     try
     {
         JarInputStream jarInputStream = new JarInputStream(
                                  new FileInputStream("C:\\Users\\michi\\Desktop\\Injection\\Cheat.jar"));
         JarEntry jarEntry;
         while ((jarEntry = jarInputStream.getNextJarEntry()) != null)
         {
             if (name.equals(jarEntry.getName().replace('/', '.')))
             {
                 return jarEntry.getClass();
             }
         }
         jarInputStream.close();
     } catch (Exception e) {}
}
 
Last edited by a moderator:
FML, der Name einer JarEntry hat noch ein .class am ende...
2 Stunden Debuggen für nichts
 
Hab hier noch was altes, kP ob du das gebrauchen kannst.


cl ist der LaunchClassLoader, kannst aber bestimmt nen eigenen machen, wenn du unbedingt ein uninject-feature machen willst

Code:
cl.addURL(jarFile);

folgendes hab ich auchnoch im Code, weiß aber nicht, ob das nötig ist, der code is bisschen älter XD

className ist der Name vom Package und der Mainklasse deines Clients
-> vielleicht in deinem Fall: de.simplyblack.client.client.Main
cl ist immernoch der LaunchClassLoader
Code:
Class classToLoad = Class.forName(className, true, cl)
classToLoad.newInstance();


Bei mir hat der Code eigentlich immer so funktioniert
 
Hab hier noch was altes, kP ob du das gebrauchen kannst.


cl ist der LaunchClassLoader, kannst aber bestimmt nen eigenen machen, wenn du unbedingt ein uninject-feature machen willst

Code:
cl.addURL(jarFile);

folgendes hab ich auchnoch im Code, weiß aber nicht, ob das nötig ist, der code is bisschen älter XD

className ist der Name vom Package und der Mainklasse deines Clients
-> vielleicht in deinem Fall: de.simplyblack.client.client.Main
cl ist immernoch der LaunchClassLoader
Code:
Class classToLoad = Class.forName(className, true, cl)
classToLoad.newInstance();


Bei mir hat der Code eigentlich immer so funktioniert
Werde es mal probieren...
 
Hab hier noch was altes, kP ob du das gebrauchen kannst.


cl ist der LaunchClassLoader, kannst aber bestimmt nen eigenen machen, wenn du unbedingt ein uninject-feature machen willst

Code:
cl.addURL(jarFile);

folgendes hab ich auchnoch im Code, weiß aber nicht, ob das nötig ist, der code is bisschen älter XD

className ist der Name vom Package und der Mainklasse deines Clients
-> vielleicht in deinem Fall: de.simplyblack.client.client.Main
cl ist immernoch der LaunchClassLoader
Code:
Class classToLoad = Class.forName(className, true, cl)
classToLoad.newInstance();


Bei mir hat der Code eigentlich immer so funktioniert

Code:
for (Class clazz : instrumentation.getAllLoadedClasses())
{
    String className = getName(clazz);
    if (className.equals("ave")) /* ave = Minecraft */
    {
        File file = new File("C:\\Users\\michi\\Desktop\\Injection\\Cheat.jar");
        LaunchClassLoader launchClassLoader = (LaunchClassLoader) clazz.getClassLoader();
        launchClassLoader.addURL(file.toURI().toURL());

        JarInputStream jarInputStream = new JarInputStream(new FileInputStream(file));
        JarEntry jarEntry;
        while ((jarEntry = jarInputStream.getNextJarEntry()) != null)
        {
            if (!jarEntry.getName().contains(".class"))
            {
                continue;
            }
            String name = jarEntry.getName().replace(".class", "").replace('/', '.');
            Class clazzz = launchClassLoader.loadClass(name);
            clazzz.newInstance();
        }
        jarInputStream.close();
        return;
    }
}
Error:
java.lang.ClassCastException: net.minecraft.launchwrapper.LaunchClassLoader cannot be cast to de.simplyblack.client.util.LaunchClassLoader


Ich habe hier den SRC vom LaunchClassLoader her:
https://github.com/Mojang/LegacyLau...inecraft/launchwrapper/LaunchClassLoader.java


???
 
Du musst ja auch den LaunchClassLoader von Minecraft nehmen, nicht "deinen"
Die Jar davon liegt in .minecraft\libraries\net\minecraft\launchwrapper\1.12\launchwrapper-1.12.jar
Adde die in deine IDE als library und löscht deine komische Util-Klasse da, die nützt nix
 
Du musst ja auch den LaunchClassLoader von Minecraft nehmen, nicht "deinen"
Die Jar davon liegt in .minecraft\libraries\net\minecraft\launchwrapper\1.12\launchwrapper-1.12.jar
Adde die in deine IDE als library und löscht deine komische Util-Klasse da, die nützt nix
Vielen Dank!
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top