SRL Archive - NOTA

Why does no one decompile the runescape Client


caused

2010-03-05 07:04:36

I just wondered, why no one attempts to decompile the runescape client.

I mean, it's Java, not really compiled.. and there are alot of "decompiler". Or you could write your own custom decompiler to work with jagex' obfuscation.

Wouldn't it help alot to see what exactly the client does to detect bots for example.

What prevents us to do so ?. Did anyone really try to ?.

~caused

Runescapian321

2010-03-05 07:06:58

It has been decompiled to write Java bots & use reflection. After decompiling it, it's all obfuscated, rendering it nearly unreadable. Some people have made more readable versions of it (See Method's refactored client).

As for checking for botting methods, to my knowledge, that is server-side and you cannot see how it works.

EDIT: Myles :ninja:

MylesMadness

2010-03-05 07:07:54

The bot detection is server side, there is no way for us to see it. And we have done that, its how people write bcel bots or updaters

Edit: Ninja'd

caused

2010-03-05 07:12:18

Wouldnt the client need to send certain information to the server in order for the server to detect bots ?

If we knew what information that is, we'd had a quite good knowledge about the detection systems.

EDIT: Oh, and why are you sure, that the detection is server-side ?

Gu3st...

2010-03-05 07:17:48

From: caused
EDIT: Oh, and why are you sure, that the detection is server-side ?
Because Method already decompiled the client

caused

2010-03-05 07:21:02

From: Zyt3x
Because Method already decompiled the client


Well.. If you say "rendering is nearly impossible".. then.. how can you be sure ?.

~caused

Gu3st...

2010-03-05 08:17:55

From: caused
Well.. If you say "rendering is nearly impossible".. then.. how can you be sure ?.

~caused
Refactored*

http://villavu.com/forum/showthread.php?t=53904

caused

2010-03-05 08:24:41

From: Zyt3x
Refactored*

http://villavu.com/forum/showthread.php?t=53904


excellent :].. I havn't been online here through december and january, so i missed this.

Thanks :]..

Anyways I guess i may just decompile it myself and write a tutorial about it, so anyone can give it a try…

~caused

Method

2010-03-05 09:25:18

Decompiling it without running it through a deobfuscator is pretty pointless, considering you won't be able to read (and much less understand) the code that's produced.

edit: Also, where have you been? People have been doing this for years.

caused

2010-03-05 09:27:34

Ofcourse.. deobfuscating is part of making the code readable.

Any tips on how to get started :] ?.

Method

2010-03-05 09:59:02

"get started" with…?

caused

2010-03-05 10:39:38

decompiling and deobfuscating.

I know that there are tons of decompiler. Any suggestions about which one works well with the runescape client :]?

~caused

Floor66

2010-03-05 10:43:19

i'm guessing: with… deobfuscating it?
e:
ninja'd :S

Method

2010-03-05 17:06:34

From: caused
decompiling and deobfuscating.

I know that there are tons of decompiler. Any suggestions about which one works well with the runescape client :]?

~caused


Write your own deobfuscator and use JAD or JODE for decompiling.

Anyways, how are you going to write a tutorial on something you don't seem to understand yourself?

caused

2010-03-05 17:25:55

From: Method
Write your own deobfuscator and use JAD or JODE for decompiling.

Anyways, how are you going to write a tutorial on something you don't seem to understand yourself?


As always, I learn it and than explain it to others, as simple as possible :]…

Bebe

2010-03-05 17:29:07

Where have you been for the past 6+ years? I lol'd at this thread.

caused

2010-03-05 17:30:54

From: Bebe
Where have you been for the past 6+ years? I lol'd at this thread.


haha :D

magixx

2010-03-06 14:46:17

if nothing is readeble, something is unreadeble,
so, decompiling rs client doesn't make sense…
just a time waste ;)

Bebe

2010-03-06 15:01:36

From: magixx
if nothing is readeble, something is unreadeble,
so, decompiling rs client doesn't make sense…
just a time waste ;)

No, decompiling without deobfuscating is pointless.

TRiLeZ

2010-03-06 22:33:05

Example code of a compiled class:

Êþº¾ - 0 ()V (IIII)V <init> H I J a ca cf d finalize getSize height java/awt/Component java/awt/Dimension k ka nativeid r width za Ljava/awt/Canvas; (Ljava/awt/Canvas;II)V ()Ljava/awt/Dimension; (Lqa;Ljava/awt/Canvas;)V (Lqa;Ljava/awt/Canvas;II)V
! "
#
%
$
& Code 0 / *´ ) &#8221;&#8482; *· -±
/ *· -* µ )*µ *± / , *· +*,µ *,¶ ,N*+*´ *-´ (-´ '· .±

Example code of a decompiled class:

import java.awt.Canvas;
import java.awt.Component;
import java.awt.Dimension;

final class za extends cf
{
private Canvas k;
long nativeid;

final native void H(Canvas paramCanvas, int paramInt1, int paramInt2);

final native void ka();

private final native void r(qa paramqa, Canvas paramCanvas, int paramInt1, int paramInt2);

private final native void ca();

protected final void finalize()
{
if (this.nativeid == 0L)
return;
ca();
}

final native void d(int paramInt1, int paramInt2, int paramInt3, int paramInt4);

final void a()
{
ca();
this.nativeid = 0L;
this.k = null;
}

za(qa paramqa, Canvas paramCanvas)
{
this.k = paramCanvas;
Dimension localDimension = paramCanvas.getSize();
r(paramqa, this.k, localDimension.width, localDimension.height);
}
}

You would need a deob / re-fractured client to be able to understand what is being done.

Btw, you can easily de-compile the client, so why would you post a de-compiled client?