Giter Club home page Giter Club logo

rotmg-protocol's Introduction

1) visit the RotMG webpage to grab their swf
2) decompile it
3) realize that the swf, isn't the game itself,
   but actually a swf, that queries for a current
   version. Then it uses that current version to
   grab the latest version of the .swf and loads
   that.
   a) I learned the above by decompiling the code
      using JPEXS. The code was straight forward
	  from there and is included in this repository.
   b) this seems like a good model, because it
      allows them to distribute a single .swf
	  to multiple websites, but still have
	  control over the current version and
	  seamlessly make improvements.
4) using the version mentioned above and use that
   to grab the latest .swf
5) decompile it using JPEXS
6) use JPEXS to remove as much dead code and traps
7) use JPEXS to rename all identifies to something
   with a-z,A-Z characters only.
8) FlashDevelop has syntax highlighting and simple
   search and replace. Using that to de-obfuscate
   the code.
9) the networking stuff is what I am interested in, so
   I look for Socket, which flash uses for TCP
   connections. I renamed the containing class and
   all pointers to it to:
   aaa.rotmg.net.RotMGNetworkHandler
   a) anything object that has been named properly, I'll move to
      aaa
10) PEM, RC4, incoming and outgoing cipher
    a) at this point, all I knew was that stuff was getting encrypted
	   which explained why it was super difficult for me to use
	   Wireshark (packet sniffer) to learn about the network protocol
11) actions
12) attempting my first connection
    a) secret is not used for logging in manually, it's for external
	   logins like kongregate steam, and kabam
    b) so I looked around for password and came across the HELLO
	   action. I was looking at the data and it had a key time and
       key
	c) that brought me to the RECONNECT action which has a key
	d) I am guessing this RECONNECT msg is sent after you
	   initially connect with the server
	e) now I'm looking for the host and port to connect to
	f) came across the Server and ServerBox object. what ever
	   creates this, is probably what obtains the list of
	   servers to connect to
	g) manually looked at http requests coming from browse and discovered
	   https://realmofthemadgod.appspot.com/char/list and
	   http://realmofthemadgod.appspot.com/char/list
	   contained a list of servers
...

see commit log for the rest of the story. i got lost in the enjoyment of deciphering the protocol

rotmg-protocol's People

Contributors

bobcodes avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.