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:
step 3) Take all of that code and slap that bitch into a class like this:
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:
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.
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:
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
}
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=