Advertisement
Guest User

ValoCheat Bypass

a guest
Aug 17th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. package com.devdelta.Delta.tweaker.valocheat;
  2.  
  3. import org.objectweb.asm.ClassReader;
  4. import org.objectweb.asm.ClassWriter;
  5. import org.objectweb.asm.Opcodes;
  6. import org.objectweb.asm.tree.ClassNode;
  7. import org.objectweb.asm.tree.InsnList;
  8. import org.objectweb.asm.tree.InsnNode;
  9. import org.objectweb.asm.tree.MethodNode;
  10.  
  11. import net.minecraft.launchwrapper.IClassTransformer;
  12.  
  13. /**
  14. * Tweaker Forge register par un CoreMod
  15. *
  16. * Le code de base est tiré de ce tutoriel:
  17. * https://www.minecraftforgefrance.fr/topic/3495/cr%C3%A9er-un-coremod-pour-modifier-les-classes-de-minecraft
  18. *
  19. * @author xTrM_
  20. */
  21. public class ValorionExampleTweaker implements IClassTransformer, Opcodes {
  22.  
  23. @Override
  24. public byte[] transform(String name, String transformedName, byte[] basicClass) {
  25.  
  26. // Si la classe est ValoCheat
  27. if(name.equalsIgnoreCase("fr.guigeek.valorion.utils.ValoCheat")) {
  28. // Transformer la classe en rendant ineffectif la méthode shutdown
  29. return transformNullifier(basicClass, "shutdown");
  30. }
  31.  
  32. return basicClass;
  33. }
  34.  
  35. public byte[] transformNullifier(byte[] basicClass, String method) {
  36. // Base ASM pour Transform
  37. ClassNode classNode = new ClassNode();
  38. ClassReader classReader = new ClassReader(basicClass);
  39. classReader.accept(classNode, ClassReader.EXPAND_FRAMES);
  40.  
  41. // On créé une liste d'instructions qui
  42. // viendra remplacer celle de la méthode choisit,
  43. // contenant simplement l'opcode RETURN (arreter le code)
  44. InsnList list = new InsnList();
  45. list.add(new InsnNode(RETURN));
  46.  
  47. // On cherche dans toutes les méthodes de la classe (ValoCheat)
  48. for(MethodNode methodNode : classNode.methods) {
  49. // Si la méthode != null & que le nom de la méthode est celui recherché (shutdown)
  50. if(methodNode != null && methodNode.name.equalsIgnoreCase(method)) {
  51. // On remplace les instructions par la liste définie
  52. methodNode.instructions = list;
  53. }
  54. }
  55.  
  56. // Base ASM pour Transform
  57. ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
  58. classNode.accept(classWriter);
  59. return classWriter.toByteArray();
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement