Results 1 to 20 of 20

Thread: Why does no one decompile the runescape Client

  1. #1
    Join Date
    May 2009
    Posts
    799
    Mentioned
    2 Post(s)
    Quoted
    16 Post(s)

    Default Why does no one decompile the runescape Client

    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

  2. #2
    Join Date
    Sep 2007
    Location
    Pennsylvania
    Posts
    3,396
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    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
    Last edited by Runescapian321; 03-05-2010 at 12:14 PM.

  3. #3
    Join Date
    Mar 2007
    Posts
    3,116
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    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

  4. #4
    Join Date
    May 2009
    Posts
    799
    Mentioned
    2 Post(s)
    Quoted
    16 Post(s)

    Default

    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 ?
    Last edited by caused; 03-05-2010 at 12:14 PM.

  5. #5
    Join Date
    Jan 2007
    Posts
    8,876
    Mentioned
    123 Post(s)
    Quoted
    327 Post(s)

    Default

    Quote Originally Posted by caused View Post
    EDIT: Oh, and why are you sure, that the detection is server-side ?
    Because Method already decompiled the client

  6. #6
    Join Date
    May 2009
    Posts
    799
    Mentioned
    2 Post(s)
    Quoted
    16 Post(s)

    Default

    Quote Originally Posted by Zyt3x View Post
    Because Method already decompiled the client
    Well.. If you say "rendering is nearly impossible".. then.. how can you be sure ?.

    ~caused

  7. #7
    Join Date
    Jan 2007
    Posts
    8,876
    Mentioned
    123 Post(s)
    Quoted
    327 Post(s)

    Default

    Quote Originally Posted by caused View Post
    Well.. If you say "rendering is nearly impossible".. then.. how can you be sure ?.

    ~caused
    Refactored*

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

  8. #8
    Join Date
    May 2009
    Posts
    799
    Mentioned
    2 Post(s)
    Quoted
    16 Post(s)

    Default

    Quote Originally Posted by Zyt3x View Post
    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

  9. #9
    Join Date
    Mar 2007
    Posts
    3,042
    Mentioned
    1 Post(s)
    Quoted
    14 Post(s)

    Default

    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.
    :-)

  10. #10
    Join Date
    May 2009
    Posts
    799
    Mentioned
    2 Post(s)
    Quoted
    16 Post(s)

    Default

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

    Any tips on how to get started :] ?.

  11. #11
    Join Date
    Mar 2007
    Posts
    3,042
    Mentioned
    1 Post(s)
    Quoted
    14 Post(s)

    Default

    "get started" with...?
    :-)

  12. #12
    Join Date
    May 2009
    Posts
    799
    Mentioned
    2 Post(s)
    Quoted
    16 Post(s)

    Default

    decompiling and deobfuscating.

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

    ~caused

  13. #13
    Join Date
    Feb 2007
    Location
    Access Violation at 0x00000000
    Posts
    2,865
    Mentioned
    3 Post(s)
    Quoted
    18 Post(s)

    Default

    i'm guessing: with... deobfuscating it?
    e:
    ninja'd :S
    Ce ne sont que des gueux


  14. #14
    Join Date
    Mar 2007
    Posts
    3,042
    Mentioned
    1 Post(s)
    Quoted
    14 Post(s)

    Default

    Quote Originally Posted by caused View Post
    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?
    :-)

  15. #15
    Join Date
    May 2009
    Posts
    799
    Mentioned
    2 Post(s)
    Quoted
    16 Post(s)

    Default

    Quote Originally Posted by Method View Post
    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 :]...

  16. #16
    Join Date
    Feb 2006
    Location
    Pennsylvania
    Posts
    1,524
    Mentioned
    2 Post(s)
    Quoted
    1 Post(s)

    Default

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

  17. #17
    Join Date
    May 2009
    Posts
    799
    Mentioned
    2 Post(s)
    Quoted
    16 Post(s)

    Default

    Quote Originally Posted by Bebe View Post
    Where have you been for the past 6+ years? I lol'd at this thread.
    haha

  18. #18
    Join Date
    Mar 2007
    Location
    in Holland
    Posts
    50
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

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

  19. #19
    Join Date
    Feb 2006
    Location
    Pennsylvania
    Posts
    1,524
    Mentioned
    2 Post(s)
    Quoted
    1 Post(s)

    Default

    Quote Originally Posted by magixx View Post
    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.

  20. #20
    Join Date
    Feb 2009
    Posts
    1,447
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    Example code of a compiled class:
    Code:
    Êþº¾  - 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                                      /        *´ )	”™ *· -±     
            /        *· -*	µ )*µ *±          /   ,      *· +*,µ *,¶ ,N*+*´ *-´ (-´ '· .±
    Example code of a decompiled class:
    Code:
    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?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •