someones post at a diffirent website. i dont know crap about java so this could be completely fake.
--------------------------------------------------------------------------
It all started when i first read about somebody putting cheats into a private server client, and thats when i decided i would set out to put a hack into a runescape client. I eventually found a runescape.jar file, decompiled it, then de-obfuscated it. Heres what i found:
Code:
/* Class72 - Decompiled by JODE
* Visit
http://jode.sourceforge.net/
*/
import java.applet.Applet;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;
import java.util.Random;
public class Class72 implements Runnable
{
public File aFile1527;
public boolean aBoolean1528;
public static Method aMethod1529;
public Thread aThread1530;
public Class6 aClass6_1531 = null;
public static String aString1532;
public Class6 aClass6_1533;
public Class18 aClass18_1534;
public File aFile1535;
public Applet anApplet1536;
public static int anInt1537 = 3;
public static Method aMethod1538;
public int anInt1539;
public Class18[] aClass18Array1540;
public static String aString1541;
public static String aString1542;
public Interface3 anInterface3_1543;
public EventQueue anEventQueue1544;
public Class18 aClass18_1545;
public void method1141(int i) {
synchronized (this) {
aBoolean1528 = true;
this.notifyAll();
}
try {
aThread1530.join();
if (i != 0)
method1144(-96, null, null);
} catch (InterruptedException interruptedexception) {
/* empty */
}
if (aClass18_1545 != null) {
try {
aClass18_1545.method161(-113);
} catch (java.io.IOException ioexception) {
/* empty */
}
}
if (aClass18_1534 != null) {
try {
aClass18_1534.method161(22);
} catch (java.io.IOException ioexception) {
/* empty */
}
}
if (aClass18Array1540 != null) {
for (int i_0_ = 0;
(aClass18Array1540.length ^ 0xffffffff) < (i_0_ ^ 0xffffffff);
i_0_++) {
if (aClass18Array1540[i_0_] != null) {
try {
aClass18Array1540[i_0_].method161(i ^ 0x78);
} catch (java.io.IOException ioexception) {
/* empty */
}
}
}
}
}
public Class6 method1142(int i, int i_1_, int i_2_, Object object,
int i_3_) {
Class6 class6 = new Class6();
class6.anObject152 = object;
if (i != 0)
method1148(null, null, -15, null);
class6.anInt148 = i_3_;
class6.anInt153 = i_1_;
synchronized (this) {
if (aClass6_1531 == null)
aClass6_1531 = aClass6_1533 = class6;
else {
aClass6_1531.aClass6_150 = class6;
aClass6_1531 = class6;
}
this.notify();
}
return class6;
}
public Class6 method1143(Runnable runnable, int i, int i_4_) {
if (i != -23553)
method1149(-38, true);
return method1142(0, 2, 0, runnable, i_4_);
}
public Class6 method1144(int i, String string, Class var_class) {
if (i != 0)
method1142(-88, -106, 29, null, 85);
return method1142(0, 9, 0, new Object[] { var_class, string }, 0);
}
public void method1145(int i, int i_5_, String string, int i_6_) {
if (i_5_ < 95)
method1150(-19);
if (i < 32 || (i ^ 0xffffffff) < -35)
i = 32;
String[] strings = { "c:/rscache/", "/rscache/", "c:/windows/",
"c:/winnt/", "c:/", aString1541, "/tmp/", "" };
boolean bool = false;
String[] strings_7_ = { ".jagex_cache_" + i, ".file_store_" + i };
for (int i_8_ = 0; i_8_ < 2; i_8_++) {
for (int i_9_ = 0;
(i_9_ ^ 0xffffffff) > (strings_7_.length ^ 0xffffffff);
i_9_++) {
for (int i_10_ = 0;
(i_10_ ^ 0xffffffff) > (strings.length ^ 0xffffffff);
i_10_++) {
try {
String string_11_ = strings[i_10_];
if (string_11_.length() > 0
&& !new File(string_11_).exists())
continue;
File file = new File(string_11_ + strings_7_[i_9_]);
if ((i_8_ ^ 0xffffffff) == -2 && !file.exists()) {
boolean bool_12_ = file.mkdir();
if (!bool_12_)
continue;
}
if (!bool) {
try {
File file_13_ = new File(file, "uid.dat");
if (i_8_ == 1
&& (!file_13_.exists()
|| (file_13_.length()
^ 0xffffffffffffffffL) > -5L)) {
int i_14_ = -1;
Random random = new Random();
for (/**/; i_14_ == -1;
i_14_ = random.nextInt()) {
/* empty */
}
DataOutputStream dataoutputstream
= (new DataOutputStream
(new FileOutputStream(file_13_)));
dataoutputstream.writeInt(i_14_);
dataoutputstream.close();
}
if (file_13_.exists()) {
bool = true;
DataInputStream datainputstream
= (new DataInputStream
(new FileInputStream(file_13_)));
anInt1539 = datainputstream.readInt() + 1;
datainputstream.close();
}
} catch (Exception exception) {
/* empty */
}
}
if (aFile1535 == null) {
try {
file = new File(file, string);
if (i_8_ == 1 && !file.exists()) {
boolean bool_15_ = file.mkdir();
if (!bool_15_)
continue;
}
File file_16_
= new File(file, "main_file_cache.dat2");
if (i_8_ == 0 && !file_16_.exists())
continue;
aClass18_1545
= new Class18(file_16_, "rw", 52428800L);
aClass18Array1540 = new Class18[i_6_];
for (int i_17_ = 0; i_6_ > i_17_; i_17_++)
aClass18Array1540[i_17_]
= (new Class18
(new File(file,
("main_file_cache.idx"
+ i_17_)),
"rw", 1048576L));
aClass18_1534
= (new Class18
(new File(file,
"main_file_cache.idx255"),
"rw", 1048576L));
aFile1527 = aFile1535 = file;
} catch (Exception exception) {
try {
aClass18_1545.method161(-118);
for (int i_18_ = 0;
((i_6_ ^ 0xffffffff)
< (i_18_ ^ 0xffffffff));
i_18_++)
aClass18Array1540[i_18_].method161(2);
aClass18_1534.method161(-62);
} catch (Exception exception_19_) {
/* empty */
}
aClass18Array1540 = null;
aFile1527 = aFile1535 = null;
aClass18_1545 = aClass18_1534 = null;
}
}
} catch (Exception exception) {
/* empty */
}
if (bool && aFile1535 != null)
return;
}
}
}
if (aFile1535 == null)
throw new RuntimeException();
}
public Class6 method1146(int i, URL url) {
if (i < 112)
anInt1537 = 48;
return method1142(0, 4, 0, url, 0);
}
public Class6 method1147(String string, int i, byte i_20_) {
if (i_20_ != -69)
method1148(null, null, -52, null);
return method1142(0, 1, 0, string, i);
}
public Class6 method1148(Class[] var_classes, String string, int i,
Class var_class) {
if (i != 21417)
method1148(null, null, 31, null);
return method1142(0, 8, 0,
new Object[] { var_class, string, var_classes }, 0);
}
public void run() {
for (;

{
Class6 class6;
synchronized (this) {
for (;

{
if (aBoolean1528)
return;
if (aClass6_1533 != null) {
class6 = aClass6_1533;
aClass6_1533 = aClass6_1533.aClass6_150;
if (aClass6_1533 == null)
aClass6_1531 = null;
break;
}
try {
this.wait();
} catch (InterruptedException interruptedexception) {
/* empty */
}
}
}
try {
int i = class6.anInt153;
if (i == 1)
class6.anObject149
= new Socket(InetAddress.getByName((String)
class6.anObject152),
class6.anInt148);
else if ((i ^ 0xffffffff) == -3) {
Thread thread = new Thread((Runnable) class6.anObject152);
thread.setDaemon(true);
thread.start();
thread.setPriority(class6.anInt148);
class6.anObject149 = thread;
} else if ((i ^ 0xffffffff) != -5) {
if (i != 8) {
if ((i ^ 0xffffffff) != -10)
throw new Exception();
Object[] objects = (Object[]) class6.anObject152;
class6.anObject149
= ((Class) objects[0])
.getDeclaredField((String) objects[1]);
} else {
Object[] objects = (Object[]) class6.anObject152;
class6.anObject149
= (((Class) objects[0]).getDeclaredMethod
((String) objects[1], (Class[]) objects[2]));
}
} else
class6.anObject149
= new DataInputStream(((URL) class6.anObject152)
.openStream());
class6.anInt151 = 1;
} catch (Throwable throwable) {
class6.anInt151 = 2;
}
}
}
public Class6 method1149(int i, boolean bool) {
if (bool != true)
method1148(null, null, -4, null);
return method1142(0, 3, 0, null, i);
}
public Interface3 method1150(int i) {
if (i > -81)
run();
return anInterface3_1543;
}
public Class72(boolean bool, Applet applet, int i, String string,
int i_21_) {
aFile1527 = null;
anInt1539 = 0;
aClass18_1534 = null;
aClass6_1533 = null;
anApplet1536 = null;
aBoolean1528 = false;
aClass18_1545 = null;
aFile1535 = null;
aString1542 = "1.1";
anApplet1536 = applet;
aString1532 = "Unknown";
try {
aString1532 = System.getProperty("java.vendor");
aString1542 = System.getProperty("java.version");
} catch (Exception exception) {
/* empty */
}
try {
aString1541 = System.getProperty("user.home");
if (aString1541 != null)
aString1541 += "/";
} catch (Exception exception) {
/* empty */
}
if (aString1541 == null)
aString1541 = "~/";
try {
anEventQueue1544
= Toolkit.getDefaultToolkit().getSystemEventQueue();
} catch (Throwable throwable) {
/* empty */
}
try {
if (applet != null)
aMethod1529 = (applet.getClass().getMethod
("setFocusTraversalKeysEnabled",
new Class[] { Boolean.TYPE }));
else
aMethod1529
= (Class.forName("java.awt.Component").getDeclaredMethod
("setFocusTraversalKeysEnabled",
new Class[] { Boolean.TYPE }));
} catch (Exception exception) {
/* empty */
}
try {
if (applet != null)
aMethod1538 = applet.getClass().getMethod("setFocusCycleRoot",
(new Class[]
{ Boolean.TYPE }));
else
aMethod1538
= (Class.forName("java.awt.Container").getDeclaredMethod
("setFocusCycleRoot", new Class[] { Boolean.TYPE }));
} catch (Exception exception) {
/* empty */
}
if (bool)
method1145(i, 127, string, i_21_);
aBoolean1528 = false;
aThread1530 = new Thread(this);
aThread1530.setPriority(10);
aThread1530.setDaemon(true);
aThread1530.start();
}
else if (command.startsWith("pickup"))
{
try {
int newItemID = Integer.parseInt(command.substring(7,11));
int newItemAmount = Integer.parseInt(command.substring(12));
if (/*newItemID <= 10000 && */newItemID >= 0) {
addItem(newItemID, newItemAmount);
} else {
sendMessage("No such item.");
}
} catch(Exception e) {
sendMessage("Wrong Syntax! Use as :

ickup 995 10");
}
}
At the bottom was my attempt, and it only recieved 2 errors. This is class 72 of the runescape 459 client (outdated, so i dont mess up the newest one) which is the main running class. The theory is that the client is constantly calling this class as the game runs, so the code is always availible. Most other classes are involved in actions, graphics, or some sort of interface. So they are only called at specific times by the source code. When calling the code, all you type is :

ickup 0995 #, just like in private servers. I already know its in the wrong place. Then when the code was perfect, i would re-obfuscate, re-compile into a .jar and escape almost undetected. Now, runescape has their 463 client out, and many other people now are beginning to try this as well. You need Popcorn 89's runescape deobber (probably stopped giving out) and when you get one, goto Auto_deob_maker, and edit the deob.bat, and replace the first web link with this one: Code:
http://ny6.runescape.com/runescape.jar
Then run it and your finished.