Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Mere curiosity

Newbie Spellweaver
Joined
Aug 15, 2014
Messages
10
Reaction score
0
I am wondering what it is that is required to make a basic MMO emulator, I know you need to know coding but that's as far as it gets that I know you need. This post is mere curiosity,and does not state that I am making a private server. It just means I am very curious as to how it works and wish to see what it requires nothing more.
 
Junior Spellweaver
Joined
Oct 27, 2008
Messages
165
Reaction score
89
Usually all server and client work like this:
Code:
   _______            _____________________             ______________
  |       | Raw Data |                     |  Command  |              |
  |Receive|    =>    | Protocol.Translate  |    =>     |              |
  |_______|          |_____________________|           |              |
   _______            _____________________            |Handler.Handle|
  |       | Raw Data |                     | Response  |              |
  | Send  |   <=     |Protocol.SendResponse|    <=     |              |
  |_______|          |_____________________|           |______________|
In the example above you receive the Raw Data, where the protocol translates the raw Data into a series of commands (it can be more then 1 command here), Then the commands are passed to the Handler to handle the commands.

Some people use instead of Protocol and Handler use Translator and Interpreter, but it is the same thing.

What a emulator does is emulates a server, receives data from client and response withe appropriate response(works sames as command prompt of your OS).. The client sends commands to your server, and your server processes those commands
 
Newbie Spellweaver
Joined
Aug 15, 2014
Messages
10
Reaction score
0
Usually all server and client work like this:
Code:
   _______            _____________________             ______________
  |       | Raw Data |                     |  Command  |              |
  |Receive|    =>    | Protocol.Translate  |    =>     |              |
  |_______|          |_____________________|           |              |
   _______            _____________________            |Handler.Handle|
  |       | Raw Data |                     | Response  |              |
  | Send  |   <=     |Protocol.SendResponse|    <=     |              |
  |_______|          |_____________________|           |______________|
In the example above you receive the Raw Data, where the protocol translates the raw Data into a series of commands (it can be more then 1 command here), Then the commands are passed to the Handler to handle the commands.

Some people use instead of Protocol and Handler use Translator and Interpreter, but it is the same thing.

What a emulator does is emulates a server, receives data from client and response withe appropriate response(works sames as command prompt of your OS).. The client sends commands to your server, and your server processes those commands


So this is what an emulator is, interesting and the tool you need to make your own from a game like Queens Blade (an MMO) would be? Like I said mere curiosity not hosting a server myself.
 
Newbie Spellweaver
Joined
Jan 1, 2014
Messages
79
Reaction score
16
Reverse engineering, packet sniffing, programming.

You first reverse engineer the game's client to 1. modify the client to connect to unofficial server (e.g. your emulator) and 2. figure out packet encryption (you look for how the client decrypts the packets).
Once you have the structure, you sniff for packets, usually from official / original server, using packet sniffer / analyzer (e.g. Wireshark).

You then emulate the server that reconstruct the packets based on the structure you discovered by reverse engineering the client.

Take a look at .
 
Junior Spellweaver
Joined
Oct 27, 2008
Messages
165
Reaction score
89
The coding part is:
- Creating a Packet sniffer(usefull if you want to get data from the server)
- Decrypting the network packet encryption
-- If the network packet is hard to decrypt, first thing you do is todisable encryption from your client
-- if you want to decrypt incoming packets from the server, hook / use the client to sniff the packets after they are decrypted
- Creating a network server
- You have to redirect your client to connect to your server
-- Finding how Launcher starts the client
-- Finding the client connection Info
--- If the connection info is on an unencrypted file you can simply change them
--- If the connection is on an encrypted file, fild how the client reads / decrypts the file and create a tool to edit that file
--- if the connection is hard-coded into the client, you can edit the client, or hook some unprotected dependency of the client, to edit the connection info
- You also have to deactivate the client protections
-- Edit the client to deactivate its protections(hackshields)
- Translating and handling the network packets
- To achieve the step you need documentation on the network packet, a leaked server or figure out what the network packets do(by sending network packets to the clilent, and responding to then with the packets sniffed).
Besides this, some games have UDP Heartbeats, used to check if the client is online(will send periodically a network packet)


For example:
- Clent sends login message to server
- server receives the login messege, and handles it
- server sends back a response(Login OK - send Game Server Data or Login Failed - Please Try again)
- Client receives the Response from server and handles it(if it is Login OK will connect to the GameServer, if it Is Login Failed, will do nothing),

As Tools you need:
- A high level programming language
- A Hex Editor good for analyzing binary files
- A network sniffer(you can code in Your programming language, or code a simple FileWritter, and hook the client to dump the receiving packets), or use Wireshark if you know how to decrypt the packets.
- A Debugger(OllyDBG or IDA)
 
Newbie Spellweaver
Joined
Aug 15, 2014
Messages
10
Reaction score
0
The coding part is:
- Creating a Packet sniffer(usefull if you want to get data from the server)
- Decrypting the network packet encryption
-- If the network packet is hard to decrypt, first thing you do is todisable encryption from your client
-- if you want to decrypt incoming packets from the server, hook / use the client to sniff the packets after they are decrypted
- Creating a network server
- You have to redirect your client to connect to your server
-- Finding how Launcher starts the client
-- Finding the client connection Info
--- If the connection info is on an unencrypted file you can simply change them
--- If the connection is on an encrypted file, fild how the client reads / decrypts the file and create a tool to edit that file
--- if the connection is hard-coded into the client, you can edit the client, or hook some unprotected dependency of the client, to edit the connection info
- You also have to deactivate the client protections
-- Edit the client to deactivate its protections(hackshields)
- Translating and handling the network packets
- To achieve the step you need documentation on the network packet, a leaked server or figure out what the network packets do(by sending network packets to the clilent, and responding to then with the packets sniffed).
Besides this, some games have UDP Heartbeats, used to check if the client is online(will send periodically a network packet)


For example:
- Clent sends login message to server
- server receives the login messege, and handles it
- server sends back a response(Login OK - send Game Server Data or Login Failed - Please Try again)
- Client receives the Response from server and handles it(if it is Login OK will connect to the GameServer, if it Is Login Failed, will do nothing),

As Tools you need:
- A high level programming language
- A Hex Editor good for analyzing binary files
- A network sniffer(you can code in Your programming language, or code a simple FileWritter, and hook the client to dump the receiving packets), or use Wireshark if you know how to decrypt the packets.
- A Debugger(OllyDBG or IDA)


Very informative thank you sir.
 
◝(⁰▿⁰)◜Smile◝ (⁰▿⁰)◜
Developer
Joined
May 29, 2007
Messages
2,167
Reaction score
899
 
Joined
Jun 8, 2007
Messages
1,985
Reaction score
490
I found that paper to be very helpful and informative, and is the perfect answer to this question. Not only does that help those who want to venture into emulator development, but also helpful to those like me who are working on unique, and completely white-hat game development. The emphasis on team/community management is extremely helpful.
 
Back
Top