An idea

After reading through the post on diff’ing the native library’s , i thought i’d make a basic design for a incremental “cache” grabber,
here’s what i’d do:

Make a program that’s able to fetch files from a JS5 server:
Easy, already done by loads of people for there model grabbers, this would involve sending fake requests to a runescape or funorb server,
and parsing the responses into files.
Make a library for parsing JS5 containers and JS5 multiple file archive’s:
Can be done two ways: ripping client code and making your own, the containers are simplistic files with a header consisting of compression type, raw size and decompressed size, followed by the compressed data, the multiple file archives are a bit harder to decode as they have NO headers, the “header’s” for these files are in the reference table.
Make a program which parses the reference table’s and diff’s the CRC32 hashes in there for each file:
Diffing the reference table’s will involve two checks, grab reftable 255 (uKeys) and diff it with the last known version, if not changed:abort,else grab all the reftables and diff them, if there the same : abort, else parse them and check what files changed, and dump them to a list of some kind.
Make it copy the base “cache” (previous revision) and let it update the files that changed:
Easy, copy the old datastore from the last change and read the changelog , then grab those files and store them.

easily done with runescape. However for funorb games when connecting to the update server its not the version numbers are so different from each other that it would be a real headache updating these caches. However the funorb update servers work generally the same way.

diffing raw data is useless.

sure the native libraries are going to change, but we know that. the idea is to figure out what has changed (inside the library).

rofl

i was enthusiastic until i got to “lets”

[quote=“Cheese_Police, post:3, topic:321019”]diffing raw data is useless.

sure the native libraries are going to change, but we know that. the idea is to figure out what has changed (inside the library).[/quote]
It would be possible to get a list of exported functions from them, wouldn’t tell us much about what changes in the functions, but it would tell us if any are added or removed…

diffing the binary data is a bit usefull to find IF it changed,also im going to start working on this.
@Moparisthebest - Can the server run java programs?

[quote=“Freddy1990, post:6, topic:321019”][quote author=Cheese_Police link=topic=417483.msg3069642#msg3069642 date=1261442815]
diffing raw data is useless.

sure the native libraries are going to change, but we know that. the idea is to figure out what has changed (inside the library).
[/quote]
It would be possible to get a list of exported functions from them, wouldn’t tell us much about what changes in the functions, but it would tell us if any are added or removed…[/quote]

there are better alternatives

at any rate, why are you guys focusing so much on the native libraries? it is a wasted effort at this time
you’re better off working on analysis of the client or making a much better deobfuscator honestly

[rage]THIS THREAD ISNT ABOUT NATIVE LIBS[/rage]
I started working on this, im writing libjs5 atm (UPDATESERVER connections, reftables, container handling, cache io)

why do you merge, shorten, and capitalize random shit?

Of course. :slight_smile:

Progress: The js5 update server client is almost done!
After that i will make the container and multifile archive decompressors, then i will make the reference table parsers.

POST 2:
Even more progress : The js5 update server client seems to work (at least for the reference table 255 i grabbed (uKeys))