My basic understanding of how ophelia created a private server.

12/30/2013 15:28 denominator#1
So I have been looking at this for a while now and I have a basic understanding of how it was accomplished.

Firstly the dll part, well that was done using C++ and assembly and basically a call to the Ophelia website and an xml file which is also in the Ophelia website is added to the exe BEFORE the call to the official site, if that makes sense?

Next is the website part which IS needed because it's what connects the game to the database. There seems to be javascript that is needed also. I have looked at both official javascript and Ophelia javascript and there ARE similarities in both javascripts but only a small part.

Any way that's my basic understanding of it so if you want to do the same as Ophelia then get cracking, I'm also not surprised it took Yamashi and co a month to get everything all up and running lol.

By the way the dll part could probably be done with just assembly and codecaves but I'm assuming the dll is linked with the actual service so it's probably wise to just use the C++ and assembly rather than assembly and code caves.
12/30/2013 21:19 Frosttall#2
It doesn't matter in which language the dll has been written, it just changes the server the game connects to.

The server itself is of course not written in Javascript (how on earth should that work with sockets etc?). It's written in which language they ever would like to choose, but C++ is the language you choose if you would like to have a high performance.
The hardest part was reversing the en/decryption aswell as the packaging and the packet-structure.


It's pretty easy (or rather straight forward) to create a server for a game in general. The hard part is reversing the communication between the client and the server, don't forget that the functions have to be adapted aswell.
12/30/2013 22:01 denominator#3
Yup I know the server isn't written in javascript lol. If skyrim-ophelia is anything to go by then the assumption would be the server is probably in C#.

I also know it doesn't really matter what language the dll was written in, however if it's a C# dll then it needs a bootstrapper afaik?

I've been looking into and and am used to ConquerOnline which is somewhat different, however if I change Platforms.xml to my url:portnumber then I get a connection, problem is the client sends the email/password to the TCP server but there is seemingly nothing to connect to lol.

There is still stuff missing which I know but at least I managed to get the client to finally manage to send email and password to the server in English lol.

Would also love to eradicate the "key" bullshit that Zenimax use.