How to open osbot jarfile
![how to open osbot jarfile how to open osbot jarfile](http://i.gyazo.com/5863cff6a5394351ef98393139f3555d.png)
That's just the tip of the iceburg but yeah. You need to set that variable accessible in order to do anything with it. It then gets a field/variable holding some valuable information.
![how to open osbot jarfile how to open osbot jarfile](https://i.imgur.com/fodABnW.png)
The above uses the classLoader that loaded the applet and all the RS classes. getDeclaredField ( "nameOfSomeVariableOrFieldHere" ) loadClass ( "ClassNameHere" ) įield f = c. However, taking it a step further, you can store all classes loaded into an array and given the "path" to a class (usually "PackageName\ClassName" or "StaticClassName.FieldName" or "ClassInstance.FieldName"), you can use the following to access information about a field or function/member:Ĭlass c = m圜lassLoaderInstance. They then need to instantiate an instance of the required classes such as the "RS2Applet.class" or the "Client.class". In order to load RS into Smart or any Java bots, the authors need to instantiate a class loader and load all the classes within the jar file. When you run a java application, the JVM instantiates a "ClassLoader" that reads the class files and figures out what to do with each instruction and the information. Retrieving and using this information is known as reflection (you cannot do this in C or ASM or any compiled language that does not store such info). Just a bunch of addresses and registers whereas the bytecode has everything mentioned above.
#HOW TO OPEN OSBOT JARFILE CODE#
However, the compiled code (C/ASM) has no information at all. The biggest point I'm trying to make is that the bytecode actually has information that you can use. Because it stores this information, the reader or observer of the class can actually retrieve information about a specified type or variable or function. It also sometimes stores the names of the functions and whatever else. It stores accessors as well (private, public, static, protected, etc). Inc (Ljava /lang / Integer ) Ljava /lang / Integer ġ : invokevirtual # 3 //Method java/lang/Integer.intValue:()IĦ : invokestatic # 4 //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer įoo (IZI )V //Notice the arguments this time.Īnd as you can see, it actually keeps the signature of each function in a "Class file" which the JVM interprets or compiles. It's up to the preference of the bot writer, to be honest.Ġ : getstatic # 1 //Field java/lang/System.out:Ljava/io/PrintStream Ĥ : invokevirtual # 2 //Method java/io/PrintStream.println:(Ljava/lang/String )V So instead of inserting those getter methods, you can just read the code through reflection without having to bother about modifying the source code of the client sided RuneScape.īoth methods read the client side source code, and both have to use bytecode patters to be able to deobfuscate the code and figure out what all the variables are. It takes a copy of the code, and then you can do what ever you want with it. They do this for many more variables, allowing scripters to read the data and make scripts that act apon it. These getter methods simply return a variable, say you had a variable called playerName, a getter for it would be return playerName. Injection is when you add "getter" methods into the code. Typically, bots use the injection approach. The bots can use two different methods to read this code, injection, and reflection. Basically, obfuscated code is just code that's been changed by a computer to be random and un-readable by humans. These bots work by being able to read obfuscated code on the client side.
#HOW TO OPEN OSBOT JARFILE SOFTWARE#
If I said something wrong, lemme know pls.Ī RuneScape bot is an automation software that can utilize third party code to simulate player actions. So yea pretty much these devs write some wizzard code that correctly returns the classes that have desired values. I have no idea how they get the multipliers for these things but the hook for player position would look like "as.d" * somelongnumber Some of these values you have to multiply (such as animation) to get the correct value. So the hook for player animation would be "as.d". The class "as" contains the variable "d". Anyway: Hooks have to be updated because these classes change therfor you would no longer be getting the correct value. These classes are pretty much a shatstorm of randoms names those and are very hard to read(done on purpose). All of the classes contain values like position, animation, objects, NPCs and all that and the bot pretty much reads them via hooks. jar format and extract it and then use a java decompiler to see all of the classes. K so Reflection and injections need to access client variables to run.