The Bytecode Club - Reverse Engineering Forum
[Challenge] iKinky Minecraft Client [Challenge] - Printable Version

+- The Bytecode Club - Reverse Engineering Forum (https://the.bytecode.club)
+-- Forum: Lobby (https://the.bytecode.club/forumdisplay.php?fid=1)
+--- Forum: Programming (https://the.bytecode.club/forumdisplay.php?fid=86)
+--- Thread: [Challenge] iKinky Minecraft Client [Challenge] (/showthread.php?tid=98)



[Challenge] iKinky Minecraft Client [Challenge] - Fade - 10-11-2014

Hey guys so here is a challenge for you,

This is a Minecraft client that connects to website for launcher authentication.
Now you can disable the login but client will not launch can anyone bypass this Smile

I have included a link to the client and some files from the auth server

Have fun guys and good luck

P.S. No Encryption

OG Link If Paranoid - http://www.ikinky.org/assets/KinkyLauncher4.zip

https://www.virustotal.com/en/file/b4a3155e492ab8a10027eeacbccbb33686bbd00b664c3bca880a48235d0f7a42/analysis/1413005942/

http://ge.tt/api/1/files/6LTsHH12/0/blob?download

tip:
http://www.ikinky.org/assets/v2/resources.json is:
Code:
{
  "resources": [
    {
      "name": "Libraries",
      "location": "http://www.ikinky.org/assets/v2/kinkylibs.jar",
      "fileName": "kinkylibs.jar",
      "md5": "564f60e961163bcd0206bb381f7d8488",
      "md5verify": true
    },
    {
      "name": "Client",
      "location": "http://www.ikinky.org/assets/v2/client.jar",
      "fileName": "client.jar",
      "md5": "47b13a9b1995fb2317f4d605b2b79b1c",
      "md5verify": true
    },
    {
      "name": "Natives",
      "location": "http://www.ikinky.org/assets/v2/natives.zip",
      "fileName": "natives.zip",
      "md5": "ad054a67954d40f0f691cc21a9228d98",
      "md5verify": true
    }
  ]
}



RE: [Challenge] iKinky Minecraft Client [Challenge] - Konloch - 10-11-2014

I'll take a look at this later


RE: [Challenge] iKinky Minecraft Client [Challenge] - Barr - 10-11-2014

Replace -> "CFacelinesideUsers/xx/Desktop/CrackTheMinecraftClient/output.zip" with the place you want the output to be.

When the crack has been run, drag the META-INF onto the zip file, then rename to jar and run.
Link :
http://www.filedropper.com/meta-inf
Simply extract it and then drag and drop. EZPZ.

Code:
package main;

import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.*;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;


/**
* Created by Barr on 11-Oct-14.
* Thanks to Konloch for general help and his save method.
*/
public class Crack {

    //We need to get all the classes into a hashMap, lets do it.
    private static HashMap<String, ClassNode> classes = new HashMap<String, ClassNode>();
    private static final String superDooperHackCrack = " ";
    private static ArrayList<ClassNode> classNodes = null;

    public static void main(String[] args) throws IOException {
        System.out.println("MAKE SURE THE ONLY JAR FILE IN THE DIR IS THE CLIENT AND THE KINKYLAUNCHER");
        try {
            JarFile file = new JarFile("KinkyLauncher.jar");
            getShitTogether(file);
            new Crack(classes.values(), true);
            classNodes = new ArrayList<ClassNode>(classes.values());
            saveAsJar(classNodes, "C:/Users/xx/Desktop/CrackTheMinecraftClient/output.zip");

            //Crack the inner client, this one is protected.
            JarFile file1 = new JarFile("client.jar");
            getShitTogether(file1);
            new Crack(classes.values(), false);
            classNodes = new ArrayList<ClassNode>(classes.values());
            saveAsJar(classNodes, "C:/Users/Nenad/Desktop/CrackTheMinecraftClient/innerClient.zip");


        } catch (IOException e) {
            System.out.println("File not there");
            e.printStackTrace();
        }




    }


    public Crack(Collection<ClassNode> classNodes, boolean which) throws IOException {
        if (which){
            for (ClassNode classNode : classNodes) {
                if (classNode.superName.equals("java/lang/Object")) {
                    for (MethodNode methodNode : classNode.methods) {
                        if (methodNode.name.equals("login") && methodNode.desc.equals("()Z")) {
                            ListIterator<AbstractInsnNode> ainIt = methodNode.instructions.iterator();
                            while (ainIt.hasNext()) {
                                AbstractInsnNode ain = ainIt.next();
                                if (ain instanceof LdcInsnNode) {
                                    LdcInsnNode node = (LdcInsnNode) ain;
                                    if (node.cst.equals("ye")) {
                                        InsnList in = new InsnList();
                                        in.add(new LdcInsnNode(superDooperHackCrack));
                                        methodNode.instructions.set(node, new LdcInsnNode(superDooperHackCrack));

                                    }
                                }
                            }
                        }
                    }
                }

                if (classNode.superName.equals("javafx/application/Application")) {
                    if (classNode.name.equals("org/ikinky/marcus/KinkyLauncher2")) {
                        for (MethodNode methodNode : classNode.methods) {
                            if (methodNode.name.equals("login")) {
                                ListIterator<AbstractInsnNode> ainIt = methodNode.instructions.iterator();

                                while (ainIt.hasNext()) {
                                    AbstractInsnNode ain = ainIt.next();
                                    if (ain.getNext() == null) {
                                        ain = ain.getPrevious();
                                        if (ain.getOpcode() == Opcodes.ICONST_0) {
                                            methodNode.instructions.set(ain, new InsnNode(Opcodes.ICONST_1));
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (!which){
            for (ClassNode classNode : classNodes){
                int Z = 0;
                if (classNode.superName.equals("java/lang/Object")){
                    for (FieldNode fieldNode : classNode.fields){
                        if (fieldNode.desc.equals("Z")){
                            Z++;
                        }
                    }
                }
//cracks the inner client, now all I have to do is load it.
                if (Z == 2){
                   for (MethodNode methodNode : classNode.methods){
                       if (methodNode.access == 0x000a){
                           if (methodNode.desc.equals("(Ljava/lang/String;Ljava/lang/String;)Z")){
                                ListIterator<AbstractInsnNode> ainIt = methodNode.instructions.iterator();

                                while (ainIt.hasNext()){
                                    AbstractInsnNode ain = ainIt.next();
                                    if (ain.getNext() == null){
                                        ain = ain.getPrevious();
                                        if (ain.getOpcode() == Opcodes.ICONST_0){
                                            methodNode.instructions.set(ain, new InsnNode(Opcodes.ICONST_1));
                                        }
                                    }
                                }
                           }
                       }
                   }
                }
            }
        }

    }


    /*

    Thank you Konloch
    the.bytecode.club

    */


    public static void saveAsJar(ArrayList<ClassNode> nodeList, String path) {
        try {
            JarOutputStream out = new JarOutputStream(new FileOutputStream(path));
            for (ClassNode cn : nodeList) {
                ClassWriter cw = new ClassWriter(0);
                cn.accept(cw);
                System.out.println("Adding -> " + cn.name);
                out.putNextEntry(new ZipEntry(cn.name + ".class"));
                out.write(cw.toByteArray());
                out.closeEntry();
            }

            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Done.");
    }

    public static void getShitTogether(JarFile file) {
        try {
            Enumeration<?> enumeration = file.entries();

            while (enumeration.hasMoreElements()) {
                JarEntry entry = (JarEntry) enumeration.nextElement();
                if (entry.getName().endsWith(".class")) {
                    ClassReader cr = new ClassReader(file.getInputStream(entry));
                    ClassNode cl = new ClassNode();
                    cr.accept(cl, cr.SKIP_DEBUG | cr.SKIP_FRAMES);
                    classes.put(cl.name, cl);
                }
            }
            file.close();
        } catch (Exception shit) {
            shit.printStackTrace();
        }
    }
}

This cracks the launcher to take any username/password, it also cracks the inner client used to actually cheat in Minecraft. Loader to actually load the cracked material is probably not coming.


RE: [Challenge] iKinky Minecraft Client [Challenge] - Konloch - 10-12-2014

So, I was able to reverse the string encryption using this method:
step 1) Import the client.jar as a library into a new project
step 2) Decompile the class that you want the strings from, for example in Class V4B is has this:
Code:
static {
String[] var10000 = new String[45];
     String[] var10001 = var10000;
     byte var10002 = 0;
     String var10003 = "\"WJ1I";
     byte var10004 = 44;

     while(true) {
        char[] var5;
        label83: {
           char[] var2 = var10003.toCharArray();
           int var10006 = var2.length;
           int var0 = 0;
           var5 = var2;
           int var6 = var10006;
           if(var10006 > 1) {
              var5 = var2;
              var6 = var10006;
              if(var10006 <= var0) {
                 break label83;
              }
           }

           do {
              char[] var8 = var5;
              int var10007 = var0;

              while(true) {
                 char var10008 = var8[var10007];
                 byte var10009;
                 switch(var0 % 5) {
                 case 0:
                    var10009 = 19;
                    break;
                 case 1:
                    var10009 = 121;
                    break;
                 case 2:
                    var10009 = 125;
                    break;
                 case 3:
                    var10009 = 31;
                    break;
                 default:
                    var10009 = 123;
                 }

                 var8[var10007] = (char)(var10008 ^ var10009);
                 ++var0;
                 if(var6 != 0) {
                    break;
                 }

                 var10007 = var6;
                 var8 = var5;
              }
           } while(var6 > var0);
        }

        String var4 = (new String(var5)).intern();
        switch(var10004) {
        case 0:
           var10001[var10002] = var4;
           var10001 = var10000;
           var10002 = 2;
           var10003 = "U*<^[@ov\nG?";
           var10004 = 1;
           break;
        case 1:
           var10001[var10002] = var4;
           var10001 = var10000;
           var10002 = 3;
           var10003 = "<p`V|}&L)\"OSot";
           var10004 = 2;
           break;
        case 2:
           ..etc etc
}
step 3) Take all of that code and slap that bitch into a class like this:
Code:
public class test {
       private static String[] z = null;

       public static void main(String args[]) {
              String[] var10000 = new String[6];
              String[] var10001 = var10000;
              byte var10002 = 0;
              String var10003 = "Za";
              byte var10004 = -1;

              while(true) {
                 char[] var5;
                 label39: {
                    char[] var2 = var10003.toCharArray();
                    int var10006 = var2.length;
                    int var0 = 0;
                    var5 = var2;
                    int var6 = var10006;
                    if(var10006 > 1) {
                       var5 = var2;
                       var6 = var10006;
                       if(var10006 <= var0) {
                          break label39;
                       }
                    }

                    do {
                       char[] var8 = var5;
                       int var10007 = var0;

                       while(true) {
                          char var10008 = var8[var10007];
                          byte var10009;
                          switch(var0 % 5) {
                          case 0:
                             var10009 = 25;
                             break;
                          case 1:
                             var10009 = 83;
                             break;
                          case 2:
                             var10009 = 87;
                             break;
                          case 3:
                             var10009 = 12;
                             break;
                          default:
                             var10009 = 49;
                          }

                          var8[var10007] = (char)(var10008 ^ var10009);
                          ++var0;
                          if(var6 != 0) {
                             break;
                          }

                          var10007 = var6;
                          var8 = var5;
                       }
                    } while(var6 > var0);
                 }

                 String var4 = (new String(var5)).intern();
                 switch(var10004) {
                 case 0:
                    var10001[var10002] = var4;
                    var10001 = var10000;
                    var10002 = 2;
                    var10003 = "Z;2oZp=0,Wv!wbTns!iCj:8b";
                    var10004 = 1;
                    break;
                 case 1:
                    var10001[var10002] = var4;
                    var10001 = var10000;
                    var10002 = 3;
                    var10003 = "O6%Xv=wj^l=36";
                    var10004 = 2;
                    break;
                 case 2:
                    var10001[var10002] = var4;
                    var10001 = var10000;
                    var10002 = 4;
                    var10003 = "#s";
                    var10004 = 3;
                    break;
                 case 3:
                    var10001[var10002] = var4;
                    var10001 = var10000;
                    var10002 = 5;
                    var10003 = "^";
                    var10004 = 4;
                    break;
                 case 4:
                    var10001[var10002] = var4;
                    z = var10000;
                     for(String s : z)
                        System.out.println(s);
                    return;
                 default:
                    var10001[var10002] = var4;
                    var10001 = var10000;
                    var10002 = 1;
                    var10003 = "q\'#| 6|8|Ep5>bT7=2xo6%Xv=x=.}e#y]\f\"Ea\'";
                    var10004 = 0;
                 }
                    //System.out.println(var4);
              }
       }
    
}

As you can see I've added both System.out.println(var4), and for(String s : z) { System.out.println(s); }, put these in the same positions as you would for your class, but remember that the variable names won't be the same.

Example Output:
Code:
C2
http://optifine.net/version/1.7.2/HD_U.txt
Checking for new version
Version found:
:

Also, as a bonus I ran the jar through Bytecode Viewer's Malicious Code Scanner, this will give us every single class that uses something from java/net/ (and others). We can utilize this tool to find what class is trying to connect to their server, no matter what protocol they use.
Code:
Found Method call to java/net/InetSocketAddress.getAddress(()Ljava/net/InetAddress;) at c.channelRead((Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V)
Found Method call to java/net/InetSocketAddress.getPort(()I) at c.channelRead((Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V)
Found Method call to java/net/InetSocketAddress.getAddress(()Ljava/net/InetAddress;) at c.channelRead((Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V)
Found Method call to java/net/InetSocketAddress.getPort(()I) at c.channelRead((Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V)
Found Method call to java/net/InetSocketAddress.getAddress(()Ljava/net/InetAddress;) at c.channelRead((Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V)
Found Method call to java/net/InetSocketAddress.getPort(()I) at c.channelRead((Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at jnb.Qb(()V)
Found Method call to java/lang/Runtime.availableProcessors(()I) at jnb.Qb(()V)
Found Method call to java/lang/reflect/Array.newInstance((Ljava/lang/Class;I)Ljava/lang/Object;) at jnb.a(([Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;)
Found Method call to java/net/Authenticator.<init>(()V) at ms$1.<init>((Ljava/lang/String;Ljava/lang/String;)V)
Found Method call to java/net/PasswordAuthentication.<init>((Ljava/lang/String;[C)V) at ms$1.getPasswordAuthentication(()Ljava/net/PasswordAuthentication;)
Found Method call to java/net/URL.toURI(()Ljava/net/URI;) at ezb.a((Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at ss$a_.a(()Lss$a_;)
Found Method call to java/net/HttpURLConnection.setRequestMethod((Ljava/lang/String;)V) at ss$a_.a(()Lss$a_;)
Found Method call to java/net/HttpURLConnection.connect(()V) at ss$a_.a(()Lss$a_;)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at nqb$0.run(()V)
Found Method call to java/net/URL.openConnection((Ljava/net/Proxy;)Ljava/net/URLConnection;) at nqb$0.run(()V)
Found Method call to java/net/URLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at nqb$0.run(()V)
Found Method call to java/net/URLConnection.getInputStream(()Ljava/io/InputStream;) at nqb$0.run(()V)
Found Method call to java/net/URLConnection.getContentLength(()I) at nqb$0.run(()V)
Found Method call to java/net/URLConnection.getContentLength(()I) at nqb$0.run(()V)
Found Method call to java/net/DatagramSocket.<init>(()V) at t4b.<init>((Ljava/lang/String;Ljava/lang/String;)V)
Found Method call to java/net/InetAddress.getByName((Ljava/lang/String;)Ljava/net/InetAddress;) at t4b.run(()V)
Found Method call to java/net/DatagramPacket.<init>(([BILjava/net/InetAddress;I)V) at t4b.run(()V)
Found Method call to java/net/DatagramSocket.send((Ljava/net/DatagramPacket;)V) at t4b.run(()V)
Found Method call to java/net/URLEncoder.encode((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;) at nqb.a((Ljava/util/Map;)Ljava/lang/String;)
Found Method call to java/net/URLEncoder.encode((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;) at nqb.a((Ljava/util/Map;)Ljava/lang/String;)
Found Method call to java/net/URL.openConnection((Ljava/net/Proxy;)Ljava/net/URLConnection;) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setRequestMethod((Ljava/lang/String;)V) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setUseCaches((Z)V) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setDoInput((Z)V) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.getOutputStream(()Ljava/io/OutputStream;) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.getInputStream(()Ljava/io/InputStream;) at nqb.a((Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String;)
Found Method call to java/net/ServerSocket.<init>((I)V) at nqb.a(()I)
Found Method call to java/net/ServerSocket.getLocalPort(()I) at nqb.a(()I)
Found Method call to java/net/ServerSocket.close(()V) at nqb.a(()I)
Found Method call to java/net/ServerSocket.close(()V) at nqb.a(()I)
Found Method call to java/net/HttpURLConnection.setDoInput((Z)V) at ss$c_.a(()Lss$c_;)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at ss$c_.a(()Lss$c_;)
Found Method call to java/net/HttpURLConnection.setUseCaches((Z)V) at ss$c_.a(()Lss$c_;)
Found Method call to java/net/HttpURLConnection.setRequestMethod((Ljava/lang/String;)V) at ss$c_.a(()Lss$c_;)
Found Method call to java/net/HttpURLConnection.getOutputStream(()Ljava/io/OutputStream;) at ss$c_.a(()Lss$c_;)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at wob.a((Ljava/lang/String;)Ljava/util/Map;)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at ss$d_.a(()Lss$d_;)
Found Method call to java/net/HttpURLConnection.setDoInput((Z)V) at ss$d_.a(()Lss$d_;)
Found Method call to java/net/HttpURLConnection.setRequestMethod((Ljava/lang/String;)V) at ss$d_.a(()Lss$d_;)
Found Method call to java/net/HttpURLConnection.getOutputStream(()Ljava/io/OutputStream;) at ss$d_.a(()Lss$d_;)
Found Method call to java/net/HttpURLConnection.setDoInput((Z)V) at ss$b_.a(()Lss$b_;)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at ss$b_.a(()Lss$b_;)
Found Method call to java/net/HttpURLConnection.setUseCaches((Z)V) at ss$b_.a(()Lss$b_;)
Found Method call to java/net/HttpURLConnection.setRequestMethod((Ljava/lang/String;)V) at ss$b_.a(()Lss$b_;)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at vzb.a((Ljava/lang/String;Ljava/lang/String;)Lzzb;)
Found Method call to java/net/InetAddress.getByName((Ljava/lang/String;)Ljava/net/InetAddress;) at ks$0.run(()V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at u4b.run(()V)
Found Method call to java/net/URL.openConnection((Ljava/net/Proxy;)Ljava/net/URLConnection;) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.setDoInput((Z)V) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.connect(()V) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.getResponseCode(()I) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.getInputStream(()Ljava/io/InputStream;) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at u4b.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at u4b.run(()V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at ay$0.run(()V)
Found Method call to java/net/URL.openConnection((Ljava/net/Proxy;)Ljava/net/URLConnection;) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.setDoInput((Z)V) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.connect(()V) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.getResponseCode(()I) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.getInputStream(()Ljava/io/InputStream;) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at ay$0.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at ay$0.run(()V)
Found Method call to java/net/URLClassLoader.getURLs(()[Ljava/net/URL;) at fzb.<init>(()V)
Found Method call to java/net/URL.toURI(()Ljava/net/URI;) at fzb.a((Ljava/net/URL;)Ljava/util/zip/ZipFile;)
Found Method call to java/net/HttpURLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at a0b.a((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at a0b.a((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at a0b.a((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.getOutputStream(()Ljava/io/OutputStream;) at a0b.a((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.getInputStream(()Ljava/io/InputStream;) at a0b.a((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at a0b.a((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/URL.openConnection(()Ljava/net/URLConnection;) at a0b.a(()Ljava/net/HttpURLConnection;)
Found Method call to java/net/HttpURLConnection.setConnectTimeout((I)V) at a0b.a(()Ljava/net/HttpURLConnection;)
Found Method call to java/net/HttpURLConnection.setReadTimeout((I)V) at a0b.a(()Ljava/net/HttpURLConnection;)
Found Method call to java/lang/reflect/Constructor.isAccessible(()Z) at bob.a(()Ljava/lang/reflect/Constructor;)
Found Method call to java/lang/reflect/Constructor.setAccessible((Z)V) at bob.a(()Ljava/lang/reflect/Constructor;)
Found Method call to java/lang/reflect/Constructor.getParameterTypes(()[Ljava/lang/Class;) at bob.a((Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at ctb.f(()V)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at ctb.f(()V)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at ctb.f(()V)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at ctb.f(()V)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at ctb.f(()V)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at ctb.f(()V)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at ctb.f(()V)
Found Method call to java/lang/reflect/Field.getType(()Ljava/lang/Class;) at ctb.a(([Ljava/lang/reflect/Field;Ljava/lang/Class;I)I)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.a((Ldob;[Ljava/lang/Object;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.b((Ldob;[Ljava/lang/Object;)Z)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.c((Ldob;[Ljava/lang/Object;)I)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.d((Ldob;[Ljava/lang/Object;)F)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.e((Ldob;[Ljava/lang/Object;)Ljava/lang/String;)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.f((Ldob;[Ljava/lang/Object;)Ljava/lang/Object;)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.a((Ljava/lang/Object;Ldob;[Ljava/lang/Object;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.b((Ljava/lang/Object;Ldob;[Ljava/lang/Object;)Z)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.c((Ljava/lang/Object;Ldob;[Ljava/lang/Object;)I)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.d((Ljava/lang/Object;Ldob;[Ljava/lang/Object;)F)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.e((Ljava/lang/Object;Ldob;[Ljava/lang/Object;)Ljava/lang/String;)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at znb.f((Ljava/lang/Object;Ldob;[Ljava/lang/Object;)Ljava/lang/Object;)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at znb.a((Ljava/lang/Object;Lcob;)Ljava/lang/Object;)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at znb.a((Ljava/lang/Object;Lcob;Ljava/lang/Object;)V)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at znb.a((Lbob;[Ljava/lang/Object;)V)
Found Method call to java/lang/reflect/Field.getType(()Ljava/lang/Class;) at znb.a((Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Field;)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at znb.a((Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Field;)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at uyb.a((Ljava/lang/Class;Ljava/lang/String;)Lktb;)
Found Method call to java/net/URLStreamHandler.<init>(()V) at pn$1.<init>((Lkrb;)V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at gmb.<init>((Ljava/lang/String;Lfmb;J)V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at gmb.d(()V)
Found Method call to java/lang/Runtime.totalMemory(()J) at gmb.d(()V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at gmb.d(()V)
Found Method call to java/lang/Runtime.maxMemory(()J) at gmb.d(()V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at gmb.d(()V)
Found Method call to java/lang/Runtime.freeMemory(()J) at gmb.d(()V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at gmb.d(()V)
Found Method call to java/lang/Runtime.availableProcessors(()I) at gmb.d(()V)
Found Method call to java/lang/reflect/Field.isAccessible(()Z) at cob.a(()Ljava/lang/reflect/Field;)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at cob.a(()Ljava/lang/reflect/Field;)
Found Method call to java/lang/reflect/Field.getName(()Ljava/lang/String;) at urb.toString(()Ljava/lang/String;)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at urb.toString(()Ljava/lang/String;)
Found Method call to java/lang/reflect/Field.getModifiers(()I) at urb.a((Ljava/lang/reflect/Field;)Z)
Found Method call to java/lang/reflect/Modifier.isStatic((I)Z) at urb.a((Ljava/lang/reflect/Field;)Z)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at fv.<init>((Lan;)V)
Found Method call to java/net/URI.relativize((Ljava/net/URI;)Ljava/net/URI;) at dz.a((Ljava/io/File;Ljava/io/File;)Ljava/lang/String;)
Found Method call to java/net/URI.getPath(()Ljava/lang/String;) at dz.a((Ljava/io/File;Ljava/io/File;)Ljava/lang/String;)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at bo.a((FZII)V)
Found Method call to java/lang/Runtime.maxMemory(()J) at bo.a((FZII)V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at bo.a((FZII)V)
Found Method call to java/lang/Runtime.totalMemory(()J) at bo.a((FZII)V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at bo.a((FZII)V)
Found Method call to java/lang/Runtime.freeMemory(()J) at bo.a((FZII)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at bp.a((ZI)V)
Found Method call to java/net/URI.<init>((Ljava/lang/String;)V) at bp.a((ZI)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at bp.a((ZI)V)
Found Method call to java/net/MulticastSocket.<init>((I)V) at qu$c_.<init>((Lqu$b_;)V)
Found Method call to java/net/InetAddress.getByName((Ljava/lang/String;)Ljava/net/InetAddress;) at qu$c_.<init>((Lqu$b_;)V)
Found Method call to java/net/MulticastSocket.setSoTimeout((I)V) at qu$c_.<init>((Lqu$b_;)V)
Found Method call to java/net/MulticastSocket.joinGroup((Ljava/net/InetAddress;)V) at qu$c_.<init>((Lqu$b_;)V)
Found Method call to java/net/DatagramPacket.<init>(([BI)V) at qu$c_.run(()V)
Found Method call to java/net/MulticastSocket.receive((Ljava/net/DatagramPacket;)V) at qu$c_.run(()V)
Found Method call to java/net/DatagramPacket.getData(()[B) at qu$c_.run(()V)
Found Method call to java/net/DatagramPacket.getOffset(()I) at qu$c_.run(()V)
Found Method call to java/net/DatagramPacket.getLength(()I) at qu$c_.run(()V)
Found Method call to java/net/DatagramPacket.getAddress(()Ljava/net/InetAddress;) at qu$c_.run(()V)
Found Method call to java/net/DatagramPacket.getAddress(()Ljava/net/InetAddress;) at qu$c_.run(()V)
Found Method call to java/net/MulticastSocket.leaveGroup((Ljava/net/InetAddress;)V) at qu$c_.run(()V)
Found Method call to java/net/MulticastSocket.close(()V) at qu$c_.run(()V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at ay.a((Luz;)V)
Found Method call to java/net/URL.getPath(()Ljava/lang/String;) at ay.a((Luz;)V)
Found Method call to java/net/InetAddress.getHostAddress(()Ljava/lang/String;) at qu$b_.a((Ljava/lang/String;Ljava/net/InetAddress;)V)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at an.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at an.a((Ljava/lang/String;)V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at ac.a((Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/URL.openStream(()Ljava/io/InputStream;) at ac.a((Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at no.a((Lwn;)V)
Found Method call to java/lang/reflect/InvocationTargetException.printStackTrace(()V) at no.a((Lwn;)V)
Found Method call to java/net/URLEncoder.encode((Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;) at os.c((Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/URI.<init>((Ljava/lang/String;)V) at oo.a((III)V)
Found Method call to java/net/URI.<init>((Ljava/lang/String;)V) at oo.a((III)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at oo.a((Ljava/net/URI;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at oo.a((Ljava/net/URI;)V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at pf.a((Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/URL.openConnection(()Ljava/net/URLConnection;) at pf.a((Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/URLConnection.setDoOutput((Z)V) at pf.a((Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/URLConnection.getOutputStream(()Ljava/io/OutputStream;) at pf.a((Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/URLConnection.getInputStream(()Ljava/io/InputStream;) at pf.a((Ljava/lang/String;)Ljava/lang/String;)
Found Method call to java/net/URL.<init>((Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V) at pn.a((Lkrb;)Ljava/net/URL;)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at lp.a((Lwn;)V)
Found Method call to java/net/URI.<init>((Ljava/lang/String;)V) at lp.a((Lwn;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at lp.a((Lwn;)V)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at mo.a((Lwn;)V)
Found Method call to java/lang/reflect/InvocationTargetException.printStackTrace(()V) at mo.a((Lwn;)V)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at ms.a(([Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at ms.a(([Ljava/lang/String;)V)
Found Method call to java/net/InetSocketAddress.<init>((Ljava/lang/String;I)V) at ms.a(([Ljava/lang/String;)V)
Found Method call to java/net/Proxy.<init>((Ljava/net/Proxy$Type;Ljava/net/SocketAddress;)V) at ms.a(([Ljava/lang/String;)V)
Found Method call to java/net/Proxy.equals((Ljava/lang/Object;)Z) at ms.a(([Ljava/lang/String;)V)
Found Method call to java/net/Authenticator.setDefault((Ljava/net/Authenticator;)V) at ms.a(([Ljava/lang/String;)V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at ms.a(([Ljava/lang/String;)V)
Found Method call to java/lang/Runtime.addShutdownHook((Ljava/lang/Thread;)V) at ms.a(([Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at ynb.a((Lx4;)V)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at ynb.a((Lx4;)V)
Found Method call to java/lang/reflect/Field.getType(()Ljava/lang/Class;) at ynb.a((Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Field;)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at ynb.a((Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Field;)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/net/URL.openConnection(()Ljava/net/URLConnection;) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/net/HttpURLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/net/HttpURLConnection.getOutputStream(()Ljava/io/OutputStream;) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/net/HttpURLConnection.getInputStream(()Ljava/io/InputStream;) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at nb.a((Ljava/lang/String;Ljava/lang/String;)Z)
Found Method call to java/net/InetAddress.getByName((Ljava/lang/String;)Ljava/net/InetAddress;) at er$0.run(()V)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at kg.<init>(()V)
Found Method call to java/lang/reflect/Field.setInt((Ljava/lang/Object;I)V) at kg.a((Lhd;)V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at lc.run(()V)
Found Method call to java/net/URL.openConnection(()Ljava/net/URLConnection;) at lc.run(()V)
Found Method call to java/net/URLConnection.getInputStream(()Ljava/io/InputStream;) at lc.run(()V)
Found Method call to java/net/URL.getFile(()Ljava/lang/String;) at hh.a((Ljava/lang/String;)[Ljava/lang/Class;)
Found Method call to java/net/URL.toURI(()Ljava/net/URI;) at hh.a((Ljava/lang/String;)[Ljava/lang/Class;)
Found Method call to java/net/URI.toURL(()Ljava/net/URL;) at hh.a((Ljava/io/File;)[Ljava/lang/Class;)
Found Method call to java/net/URLClassLoader.<init>(([Ljava/net/URL;Ljava/lang/ClassLoader;)V) at hh.a((Ljava/io/File;)[Ljava/lang/Class;)
Found Method call to java/net/MalformedURLException.printStackTrace(()V) at hh.a((Ljava/io/File;)[Ljava/lang/Class;)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at k9.a((Ljava/lang/String;Lzsb;)Lx4;)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at k9.a((Lmhb;Lzsb;)Lx4;)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at k9.a((ILzsb;)Lx4;)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at n3$4.a(()Ljava/lang/String;)
Found Method call to java/lang/Runtime.maxMemory(()J) at n3$4.a(()Ljava/lang/String;)
Found Method call to java/lang/Runtime.totalMemory(()J) at n3$4.a(()Ljava/lang/String;)
Found Method call to java/lang/Runtime.freeMemory(()J) at n3$4.a(()Ljava/lang/String;)
Found Method call to java/net/URI.<init>((Ljava/lang/String;)V) at xq.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at xq.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at xq.a((Ljava/lang/String;)V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at v4b.run(()V)
Found Method call to java/net/URL.openConnection(()Ljava/net/URLConnection;) at v4b.run(()V)
Found Method call to java/net/HttpURLConnection.setDoInput((Z)V) at v4b.run(()V)
Found Method call to java/net/HttpURLConnection.setDoOutput((Z)V) at v4b.run(()V)
Found Method call to java/net/HttpURLConnection.connect(()V) at v4b.run(()V)
Found Method call to java/net/HttpURLConnection.getInputStream(()Ljava/io/InputStream;) at v4b.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at v4b.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at v4b.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at v4b.run(()V)
Found Method call to java/net/HttpURLConnection.disconnect(()V) at v4b.run(()V)
Found Method call to java/lang/reflect/Field.get((Ljava/lang/Object;)Ljava/lang/Object;) at y7.j(()V)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at y7.j(()V)
Found Method call to java/net/URI.<init>((Ljava/lang/String;)V) at vp.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at vp.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at vp.a((Ljava/lang/String;)V)
Found Method call to java/net/InetAddress.getByName((Ljava/lang/String;)Ljava/net/InetAddress;) at uu.a((Lou;)V)
Found Method call to java/net/URLConnection.<init>((Ljava/net/URL;)V) at pn$1$0.<init>((Lpn$1;Ljava/net/URL;Lkrb;)V)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at xsb.a((Lbtb;ZZZ)I)
Found Method call to java/lang/reflect/Constructor.newInstance(([Ljava/lang/Object;)Ljava/lang/Object;) at xsb.a((Lzsb;Lutb;IIIILjava/util/Random;)V)
Found Method call to java/lang/reflect/Method.getName(()Ljava/lang/String;) at dob.a(()Ljava/lang/reflect/Method;)
Found Method call to java/lang/reflect/Method.getParameterTypes(()[Ljava/lang/Class;) at dob.a(()Ljava/lang/reflect/Method;)
Found Method call to java/lang/reflect/Method.isAccessible(()Z) at dob.a(()Ljava/lang/reflect/Method;)
Found Method call to java/lang/reflect/Method.setAccessible((Z)V) at dob.a(()Ljava/lang/reflect/Method;)
Found Method call to java/lang/reflect/Method.getReturnType(()Ljava/lang/Class;) at dob.c(()Ljava/lang/Class;)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at tp.a((Lwn;)V)
Found Method call to java/lang/Runtime.exec(([Ljava/lang/String;)Ljava/lang/Process;) at tp.a((Lwn;)V)
Found Method call to java/lang/Runtime.getRuntime(()Ljava/lang/Runtime;) at tp.a((Lwn;)V)
Found Method call to java/lang/Runtime.exec((Ljava/lang/String;)Ljava/lang/Process;) at tp.a((Lwn;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at tp.a((Lwn;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at tp.a((Lwn;)V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at ss.<init>((Ljava/lang/String;II)V)
Found Method call to java/net/URL.openConnection((Ljava/net/Proxy;)Ljava/net/URLConnection;) at ss.<init>((Ljava/lang/String;II)V)
Found Method call to java/net/URL.<init>((Ljava/lang/String;)V) at ss.<init>((Ljava/lang/String;II)V)
Found Method call to java/net/URL.openConnection(()Ljava/net/URLConnection;) at ss.<init>((Ljava/lang/String;II)V)
Found Method call to java/net/HttpURLConnection.setConnectTimeout((I)V) at ss.<init>((Ljava/lang/String;II)V)
Found Method call to java/net/HttpURLConnection.setReadTimeout((I)V) at ss.<init>((Ljava/lang/String;II)V)
Found Method call to java/net/HttpURLConnection.getRequestProperty((Ljava/lang/String;)Ljava/lang/String;) at ss.a((Ljava/lang/String;Ljava/lang/String;)V)
Found Method call to java/net/HttpURLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at ss.a((Ljava/lang/String;Ljava/lang/String;)V)
Found Method call to java/net/HttpURLConnection.setRequestProperty((Ljava/lang/String;Ljava/lang/String;)V) at ss.a((Ljava/lang/String;Ljava/lang/String;)V)
Found Method call to java/net/HttpURLConnection.getResponseCode(()I) at ss.a(()I)
Found Method call to java/net/HttpURLConnection.getHeaderField((Ljava/lang/String;)Ljava/lang/String;) at ss.b(()I)
Found Method call to java/net/HttpURLConnection.getErrorStream(()Ljava/io/InputStream;) at ss.c(()Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.getInputStream(()Ljava/io/InputStream;) at ss.c(()Ljava/lang/String;)
Found Method call to java/net/HttpURLConnection.getInputStream(()Ljava/io/InputStream;) at ss.d(()V)
Found Method call to java/net/HttpURLConnection.getErrorStream(()Ljava/io/InputStream;) at ss.d(()V)
Found Method call to java/net/HttpURLConnection.getHeaderField((Ljava/lang/String;)Ljava/lang/String;) at ss.g(()I)
Found Method call to java/net/URI.<init>((Ljava/lang/String;)V) at sp.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at sp.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at sp.a((Ljava/lang/String;)V)
Found Method call to java/net/InetAddress.getByName((Ljava/lang/String;)Ljava/net/InetAddress;) at qr.a((Lqs;)V)
Found Method call to java/net/InetAddress.getByName((Ljava/lang/String;)Ljava/net/InetAddress;) at pr.a((Lqs;)V)
Found Method call to java/lang/reflect/Method.setAccessible((Z)V) at zd.a((Lce;)V)
Found Method call to java/lang/reflect/Method.getDeclaredAnnotations(()[Ljava/lang/annotation/Annotation;) at zd.a((Lce;)V)
Found Method call to java/lang/reflect/Method.getParameterTypes(()[Ljava/lang/Class;) at zd.a((Lce;)V)
Found Method call to java/lang/reflect/Method.getParameterTypes(()[Ljava/lang/Class;) at zd.a((Lbd;Lq;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at zd.a((Lbd;Lq;)V)
Found Method call to java/lang/reflect/InvocationTargetException.printStackTrace(()V) at zd.a((Lbd;Lq;)V)
Found Method call to java/lang/reflect/Field.getType(()Ljava/lang/Class;) at yu.a((Lmo;)V)
Found Method call to java/lang/reflect/Field.setAccessible((Z)V) at yu.a((Lmo;)V)
Found Method call to java/lang/reflect/Field.set((Ljava/lang/Object;Ljava/lang/Object;)V) at yu.a((Lmo;)V)
Found Method call to java/net/URI.<init>((Ljava/lang/String;)V) at yn.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at yn.a((Ljava/lang/String;)V)
Found Method call to java/lang/reflect/Method.invoke((Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) at yn.a((Ljava/lang/String;)V)





I don't really feel like actually cracking the client, but if you want to, all you need to do is look through that list above, decrypt the strings of that class then figure out what it does from there. (The obfuscation is just renaming, removing packaging and weak string encryption)

EDIT: I've found one of the protection classes (probably the only) inside of client.jar, it's nb.class, here's some decrypted strings from it:

Code:
kinky
--accessToken
-kuser=
--version
-kpass=
User-Agent
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11
username=
ad
hi
ye
&password=



RE: [Challenge] iKinky Minecraft Client [Challenge] - Bibl - 10-12-2014

^ nb is the main class i think, launches Minecraft.class


also
don't have to decompile, since the string cache is always a static field, add client and libs to your eclipse project and get the static field using reflection, dont even need to start the game. <clinit> gets loaded when you reference a class. 


RE: [Challenge] iKinky Minecraft Client [Challenge] - Barr - 10-12-2014

(10-12-2014, 06:20 PM)Bibl Wrote:  ^ nb is the main class i think, launches Minecraft.class


also
don't have to decompile, since the string cache is always a static field, add client and libs to your eclipse project and get the static field using reflection, dont even need to start the game. <clinit> gets loaded when you reference a class. 

Could you show the code for it?


RE: [Challenge] iKinky Minecraft Client [Challenge] - Bibl - 10-12-2014

add client.jar and libs.jar to eclipse buildpath
Code:
void main()
class c = nb.class;
for(field f : c.getdeclaredfields())
if f.getname.equals("z")
string[] strings = f.get(null);
for(string s : strings){
system.out.println(s);
}



RE: [Challenge] iKinky Minecraft Client [Challenge] - Konloch - 10-12-2014

(10-12-2014, 09:39 PM)Bibl Wrote:  add client.jar and libs.jar to eclipse buildpath

Code:
void main()
class c = nb.class;
for(field f : c.getdeclaredfields())
if f.getname.equals("z")
string[] strings = f.get(null);
for(string s : strings){
system.out.println(s);
}

Even better! I realized that was possible after I posted that post haha.