SRL Archive - Snippets

RS3 Updater Release


Brandon

2015-02-25 19:22:27

EDIT: This is now members ONLY. Be careful who you let into the members club. I do NOT want to limit this to any higher boards.

I am unable to maintain my RS3 updater (lack of time and interest). I already maintain an OSRS updater and the plugins so I'm releasing what I have for the RS3 updater in hopes that someone continues it and shared it with the rest of you.


I have taken care to remove decryption and unpacking so this updater will require you to link to a jar file that does all of that for you. As you all know, it is illegal to decrypt the RS3 jar and to circumvent the encryption in any way and that is a risk you will have to take on your own.

You will notice that the Custom Jar Output stream is missing from the source. You will have to build your own.





Therefore, this updater is under the same legal scrutiny as SMART and CheatEngine. It loads everything from the website, it does not unpack nor decrypt the client or circumvent the encryption in any way, but it will do so provided that you provide your own unpacker in the form of a jar (via reflection it will invoke your jar on the downloaded RS3 jar).

Logs will be outputted in the following format:


Deobfuscation Started..
Removed Methods: 11572 of 28016
Removed Fields: 2008 of 10943
Re-Ordered Multipliers: 7649 of 57570
Re-Ordered Arithmetics: 4109 of 48544
Kept Classes: 1185 of 1211
Removed Returns: 43 of 40251
Removed TryCatchBlocks: 260 of 9566
Deobfuscation Finished..

Node: rw
---------------------------------
UID -> u * -5635022531709409797
Next -> z
Prev -> m


CacheableNode: aif
---------------------------------
Next -> g
Prev -> r


LinkedList: yu
---------------------------------
Head -> u
Current -> z


HashTable: yi
---------------------------------
Head -> s
Tail -> g
Cache -> z
Index -> r * -1441779243
Key -> m * 5204564776871942505
Capacity -> u * 2084358867


Queue: ys
---------------------------------
Head -> u
Tail -> z
*InsertHead -> z
*PopTail -> l


Cache: ex
---------------------------------
HashTable -> s
Queue -> g
Remaining -> m
Capacity -> z


ClassData: ajw
---------------------------------
Bytes -> f
Methods -> c
Fields -> l


GameShell: rz
---------------------------------
*Error -> ao
*Start -> start
*Stop -> stop
*Destroy -> destroy
*Paint -> paint
*Update -> update


Stream: aic
---------------------------------
Payload -> r
CRC -> l
*ApplyRSA -> bl
*GetUnsignedByte -> ci


BufferedConnection: ajp
---------------------------------
InputStream -> z
OutputStream -> m
Socket -> u


Matrix3f: oq
---------------------------------
MatrixArray -> u


Matrix4f: oo
---------------------------------
MatrixArray -> u


OGLAbstractTexture: bv
---------------------------------
ID -> l
Target -> q
UseMipmaps -> t
UseLinearFilter -> x


BasicRender: de
---------------------------------
RenderIndex -> b * -1941489401
CacheIndex -> l * -399299137


StandardRender: adf
---------------------------------
Matrix4f -> bo


OpenGLRender: adz
---------------------------------
OpenGL -> bx
Matrix4f -> dj
gl_vbo -> gk
gl_multi_sample -> gd
gl_vertex_prog -> hu
gl_fragment_prog -> hw
gl_vertex_shader -> ho
gl_fragment_shader -> hd
gl_texture3D -> hc
gl_tex_cube_map -> hi
gl_seemless_cube_map -> hs
GL_texture_float -> hj
gl_texture_npot -> hm
gl_fbo -> ge
gl_fbo_blit -> gv
gl_fbo_multi_sample -> gn
gl_blend_func_sep -> hy
*GetValidExtensions -> qx

I didn't get to identify much. The only deobfuscation it does is:


public FullDeobfuscation(Collection<ClassNode> classes) {
this.deobfuscators = new ArrayList<>();
this.deobfuscators.add(new MethodRemover(classes)); //removes redundant/dummy methods
this.deobfuscators.add(new FieldRemover(classes)); //removes dummy fields
this.deobfuscators.add(new Normaliser(classes)); //normalises all multipliers
this.deobfuscators.add(new ClassRemover(classes)); //removes dummy classes
this.deobfuscators.add(new ReturnRemover(classes)); //removes dummy return statements (doesn't remove much in RS3)
this.deobfuscators.add(new TryCatchRemover(classes)); //removes dummy try-catch statements (doesn't remove much in RS3)
}


A lot of that deob stuff is from my OSRS updater. I did not bother to license the code but I would appreciate it if you did not remove the "Author's name" from the source (just an appreciation, but not required). That is all. I do not require credit or any mentions at all. I don't even require you to do the above, but it would be nice.

This updater is released under the same terms and conditions as OllyDBG (for learning and reverse engineering purposes) and does not contain proprietary code.

Reverse Engineering is NOT legal in every country and you'll have to take care to abide by your own country's laws.


Link: [ATTACH=CONFIG]25122[/ATTACH]

Hoodz

2015-02-25 19:27:37


grats

2015-02-25 19:31:43

From: hoodz


I literally get that on everyone.. I think I give everyone too much rep
can't give rep to either of you q_q

NKN

2015-02-25 20:00:08

Neat release.

I'll be sure to mess around with it.


If I get anywhere, I'll be sure to post it here.

rj

2015-02-26 08:15:37

From: hoodz


I'm getting the same error as you


Nice release, question that is semi on topic: It's possible to set the FPS on OSRS/RS3 to a custom number right? I remember RSbuddy had a 'use less cpu' option that lowered fps (r maybe it slowed the drawing IDK)

Brandon

2015-02-26 18:41:52

From: rj
…



Yes.. RSBuddy didn't inject an "FPS" counter into the client or change anything.. All it did was add a sleep to its render thread. SMART does this for safemode:

https://github.com/BenLand100/SMART/blob/master/src/Client.java#L389

It makes the thread sleep for a certain amount of time to give other processes access to the CPU. It doesn't actually slow down the game. Just the drawing.

tls

2015-02-26 20:30:01

From: Brandon
Yes.. RSBuddy didn't inject an "FPS" counter into the client or change anything.. All it did was add a sleep to its render thread. SMART does this for safemode:

https://github.com/BenLand100/SMART/blob/master/src/Client.java#L389

It makes the thread sleep for a certain amount of time to give other processes access to the CPU. It doesn't actually slow down the game. Just the drawing.


It also just blocked the drawing of certain things(objects, npcs, items, walls, etc) so that it would skip the model calculations(thus reducing cpu needed for each render callback).

kingarabian

2015-02-27 17:33:15

Great release, thank you.

It makes following your Hook updater tutorial a lot easier now.

Appreciate it, and all your contributions.

Shatterhand

2015-03-13 12:22:45

Another nice topic from Brandon.

My osrs updater is nothing compared to this, I will have a look at it sometimes.

By the way I never thought that there are higher boards too on this forum. :D


off topic:
About the drawing and fps stuff. My client draws a lot of things on the canvas (using Brandon's canvas override method) and sometimes the fps drops to 20-30 (it is 51 on maximum). For example getting all players and drawing their names on the screen in a crodwed place like at a bank. The drawing methods (g.drawXYZ()) seem to take a lot of time, the reflection ones dont.

Brandon

2015-03-13 23:22:03

From: Shatterhand
Another nice topic from Brandon.

My osrs updater is nothing compared to this, I will have a look at it sometimes.

By the way I never thought that there are higher boards too on this forum. :D


off topic:
About the drawing and fps stuff. My client draws a lot of things on the canvas (using Brandon's canvas override method) and sometimes the fps drops to 20-30 (it is 51 on maximum). For example getting all players and drawing their names on the screen in a crodwed place like at a bank. The drawing methods (g.drawXYZ()) seem to take a lot of time, the reflection ones dont.



Must be doing something weird.. SMART does the same technique.