Results 1 to 24 of 24

Thread: how to make rs bot

  1. #1
    Join Date
    Mar 2010
    Location
    New Hampshire, U.S.A
    Posts
    586
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default how to make rs bot

    i remember ther was a site that gave tuts on how to hack runescape, i think one was how to make a reflection bot.

    i would like to find a tutorial on BCEL too, since thats wat rsbot is written with. havnt found that hacking site though >.<
    Sell botted goods at mid to high prices!!! Else we lose our profit AND ruin the game!!!!

  2. #2
    Join Date
    Dec 2010
    Posts
    808
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by g0tp0t View Post
    i remember ther was a site that gave tuts on how to hack runescape, i think one was how to make a reflection bot.

    i would like to find a tutorial on BCEL too, since thats wat rsbot is written with. havnt found that hacking site though >.<
    RsBot/Powerbot isn't doesn't use BCEL now.
    As many people deemed it detectable.

    -Boom

  3. #3
    Join Date
    May 2006
    Location
    Australia
    Posts
    370
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Doesn't matter whether you use BCEL or ASM (like RSBot). They both do the same thing, and detectability is based on how they are used.

  4. #4
    Join Date
    Nov 2007
    Location
    Chile
    Posts
    1,901
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

  5. #5
    Join Date
    Mar 2010
    Location
    New Hampshire, U.S.A
    Posts
    586
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    thanks chicken i think that was it xD
    Sell botted goods at mid to high prices!!! Else we lose our profit AND ruin the game!!!!

  6. #6
    Join Date
    Jan 2010
    Posts
    5,227
    Mentioned
    6 Post(s)
    Quoted
    60 Post(s)

    Default

    Quote Originally Posted by g0tp0t View Post
    thanks chicken i think that was it xD
    >chicken

  7. #7
    Join Date
    Mar 2010
    Location
    New Hampshire, U.S.A
    Posts
    586
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    lol. wat u mean by that :P
    Sell botted goods at mid to high prices!!! Else we lose our profit AND ruin the game!!!!

  8. #8
    Join Date
    Jan 2010
    Posts
    5,227
    Mentioned
    6 Post(s)
    Quoted
    60 Post(s)

    Default

    Who's "Chicken?"

  9. #9
    Join Date
    Jan 2011
    Location
    Denver, CO
    Posts
    1,351
    Mentioned
    2 Post(s)
    Quoted
    72 Post(s)

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

    Default

    Quote Originally Posted by i luffs yeww View Post
    Who's "Chicken?"
    He was talking about the King Black Dragon way of Chicken (lol )

    Cazax
    Senior SRL Member
    [CUPS]
    Chicken

  11. #11
    Join Date
    Mar 2010
    Location
    New Hampshire, U.S.A
    Posts
    586
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    oh lol. anyway, i cant find the threads on making a bot. anyone here(like trilez) know how to make a bot? or just access methods. i know how with reflection, but im not sure where the methods i will be accessing are, and im pretty sure thats what the 'hooks' are for. so how ddo you automaticly find hooks?
    Sell botted goods at mid to high prices!!! Else we lose our profit AND ruin the game!!!!

  12. #12
    Join Date
    Jan 2010
    Posts
    5,227
    Mentioned
    6 Post(s)
    Quoted
    60 Post(s)

    Default

    Ask rs-hacking.com or moparisthebest.com or whatever.

  13. #13
    Join Date
    Jun 2007
    Location
    La Mirada, CA
    Posts
    2,484
    Mentioned
    1 Post(s)
    Quoted
    3 Post(s)

    Default

    Quote Originally Posted by g0tp0t View Post
    oh lol. anyway, i cant find the threads on making a bot. anyone here(like trilez) know how to make a bot? or just access methods. i know how with reflection, but im not sure where the methods i will be accessing are, and im pretty sure thats what the 'hooks' are for. so how ddo you automaticly find hooks?
    You have to search through the client to find the hooks. That is the point in an updater. You make an updater search the runescape client for certain patterns and if it finds that 'pattern' then it should be able to find that hook you are looking for.

    "Failure is the opportunity to begin again more intelligently" (Henry Ford)


  14. #14
    Join Date
    Jan 2011
    Location
    Denver, CO
    Posts
    1,351
    Mentioned
    2 Post(s)
    Quoted
    72 Post(s)

    Default

    The methods you will be accessing are obviously in the client. You need to have knowledge of the construction of the RS2 client so that you can name the accessor method according to its function. You use the accessor methods to return the value of the original client methods to your hook interfaces. You can then use those hooks to read the state and behavior of the client's actions, and be able to create scripts to interact with those actions. After you finish all of that, you still have to create some sort of GUI for the client to load into. Nobody said reverse engineering would be easy

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

    Default

    Quote Originally Posted by Echo_ View Post
    The methods you will be accessing are obviously in the client. You need to have knowledge of the construction of the RS2 client so that you can name the accessor method according to its function. You use the accessor methods to return the value of the original client methods to your hook interfaces. You can then use those hooks to read the state and behavior of the client's actions, and be able to create scripts to interact with those actions. After you finish all of that, you still have to create some sort of GUI for the client to load into. Nobody said reverse engineering would be easy
    Accessor methods don't make calls to methods, they return the values of fields.
    :-)

  16. #16
    Join Date
    Jan 2011
    Location
    Denver, CO
    Posts
    1,351
    Mentioned
    2 Post(s)
    Quoted
    72 Post(s)

    Default

    I don't believe I said anything about making calls to methods. I said exactly what you said, they return the value of the original method.
    You use the accessor methods to return the value of the original client methods

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

    Default

    Quote Originally Posted by Echo_ View Post
    I don't believe I said anything about making calls to methods. I said exactly what you said, they return the value of the original method.
    They have nothing to do with other methods (what exactly is an "original method" anyway?). They return the values of fields (read: variables).
    :-)

  18. #18
    Join Date
    Jan 2011
    Location
    Denver, CO
    Posts
    1,351
    Mentioned
    2 Post(s)
    Quoted
    72 Post(s)

    Default

    By the original methods, I was talking about the obfusicated methods that come with the client I did get the bit about fields incorrect though, thanks for the correction.

  19. #19
    Join Date
    Nov 2006
    Posts
    2,369
    Mentioned
    4 Post(s)
    Quoted
    78 Post(s)

    Default

    Do you decompile the client to find hooks or do you get them from the bytecode?

    If you decompile it please tell me how.

  20. #20
    Join Date
    Jan 2011
    Location
    Denver, CO
    Posts
    1,351
    Mentioned
    2 Post(s)
    Quoted
    72 Post(s)

    Default

    That's correct, you decompile the class files and look through them for known patterns. I use this:

    http://java.decompiler.free.fr/?q=jdgui

    After you find what you need in the class files, all of the editing is done through bytecode.

  21. #21
    Join Date
    Nov 2006
    Posts
    2,369
    Mentioned
    4 Post(s)
    Quoted
    78 Post(s)

    Default

    Quote Originally Posted by Echo_ View Post
    That's correct, you decompile the class files and look through them for known patterns. I use this:

    http://java.decompiler.free.fr/?q=jdgui

    After you find what you need in the class files, all of the editing is done through bytecode.
    I have been using that too but I thought runescape is obfusculated so it wouldn't work well... And I also thought that you wouldn't need to edit the class file at all...

  22. #22
    Join Date
    Jan 2011
    Location
    Denver, CO
    Posts
    1,351
    Mentioned
    2 Post(s)
    Quoted
    72 Post(s)

    Default

    RS is obfusicated, you rely on client patterns and functions to tell you what to do. Here's an example I'm using from the recent reflection update at this thread:
    http://villavu.com/forum/showthread....959#post781959

    Scroll down and find Class Animable. As you can see, they found that the obfusicated class from the RS client that has Animable functions was "vs.class". So download a fresh copy of the RS client, you can get one here:
    http://world169.runescape.com/runescape.jar

    Alright, then use WinRar to extract all of the classes to a folder. If you decompile the vs class, it should look something like this:


    From the other thread, you can also see that they found the method "int p" was actually the method "int pixelX". So you write up a hook interface for that method.
    Code:
    public interface Animable {
    
    	public int pixelX();
    }
    Then you write up a BCEL injector to inject the accessor method into vs.class and return the value of the field "p". You also want vs to implement your hook.

    Code:
    import org.apache.*;
    import org.apache.bcel.*;
    import org.apache.bcel.classfile.*;
    import org.apache.bcel.generic.*;
    import org.apache.bcel.util.*;
    import org.apache.bcel.verifier.*;
    import org.apache.bcel.verifier.exc.*;
    import org.apache.bcel.verifier.statics.*;
    import org.apache.bcel.verifier.structurals.*;
    
    import java.io.IOException;
    
    /**
     *
     * BCEL Injector
     * @author: Echo_
     * 
     */
    public class Injector {
            private ClassGen cGen;
           
            public Injector() {
                    loadClass();
                    modify();
                    dumpClass();
            }
           
            private void loadClass() {               
                    try {
                            cGen = new ClassGen(new ClassParser("vs.class").parse());
                    } catch (ClassFormatException e) {
                            e.printStackTrace();
                    } catch (IOException e) {
                            e.printStackTrace();
                    }
            }
           
            private void modify() {
                   
                    cGen.addInterface("Animable");
                    
                    for(Method m : cGen.getMethods()) {
                            if(m.getName().equals("p")) {
                                    System.out.println("Method p found!");
                                    break;
                            }
                    }
                   
            		InstructionList methodIList = new InstructionList();
            		ConstantPoolGen theCPool = cGen.getConstantPool();
            		MethodGen pixelXMethod = new MethodGen(Constants.ACC_PUBLIC,Type.INT,Type.NO_ARGS,new String[]{},"pixelX",cGen.getClassName(),methodIList,theCPool);
    
            		InstructionFactory iFactory = new InstructionFactory(cGen,theCPool);
            		Instruction pushThis = new ALOAD(0);
            		Instruction pixelXField = iFactory.createFieldAccess(cGen.getClassName(),"p",Type.INT,Constants.GETSTATIC);
            		Instruction returnPixelX = InstructionFactory.createReturn(Type.INT);
    
            		methodIList.append(pushThis);
            		methodIList.append(pixelXField);
            		methodIList.append(returnPixelX);
    
            		pixelXMethod.setMaxStack();
            		pixelXMethod.setMaxLocals();
    
            		cGen.addMethod(pixelXMethod.getMethod());
            }
           
            public void dumpClass() {
                    try {
                            cGen.getJavaClass().dump("vs.class");
                    }
                    catch(IOException ex) {
                            ex.printStackTrace();
                    }
            }
         
            public static void main(String[] args) {
                    new Injector();
            }
    }

    So with this file, you inject the accessor method into the class and implement your hook interface "Animable". Decompile the vs class and it now looks like this:


    And you should see this towards the bottom of the file as well:


    And that's how you make bots with the obfusicated client This is just a little example, because from there you would have to find out how to use these accessors to return the data you need to automate a task. I think most injectors these days dynamically find the methods in the client and edit them, that way you wouldn't have to edit your injector every time the client updates.

    Credits: yakman, the bank
    There tutorials are what got me into injection and hacking the RS2 client
    Last edited by Echo_; 03-03-2011 at 04:49 PM.

  23. #23
    Join Date
    Oct 2006
    Posts
    1,190
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    great post, thanks for that

    what other forums did you learn from? or did you read everyhting and igure it all out yourself?

    also have you made anything like this?



  24. #24
    Join Date
    Jan 2011
    Location
    Denver, CO
    Posts
    1,351
    Mentioned
    2 Post(s)
    Quoted
    72 Post(s)

    Default

    I learned about all of this from the Moparisthebest forums, the sister forum of this site. They have some really good tutorials on BCEL injection, writing client loaders, hacking the client canvas, etc. Other than that, I just learned from fooling around with the code and seeing what worked for me I have worked on a bot before, haven't gotten around to finishing it though.

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
  •